互联网公司上线问题

2016 年 9 月 20 日
 renshuxian

小弟新去了一家互联网公司,每两周上线一次,每次都要凌晨发新的包,每次都要陪着通宵,总这样感觉身体要跨,想研究下怎么能白天发包然后热部署呢,公司现在已经是初步的分布式+集群 几十台服务器 几十个服务相互调用

8701 次点击
所在节点    Java
62 条回复
kanchi240
2016 年 9 月 20 日
灰度
renshuxian
2016 年 9 月 20 日
@kanchi240 大哥能在详细说说么
LMkillme
2016 年 9 月 20 日
其实蛮享受以前凌晨更新的时候,两三个人半夜在办公室吃烧烤,啤酒,音乐,看看足球,吹求打屁
renshuxian
2016 年 9 月 20 日
@LMkillme 那是建立在没出问题的情况下呀,可以看看电影,要是出问题了,后半夜写代码的感觉可不好
clarkyi
2016 年 9 月 20 日
我们以前也是这种状态,不过现在切换了方式,用 jenkins 先把程序打好包,再用 rundeck 来发布到线上。虽然没有命令的方式方便,但是最起码不用半夜上线了
LMkillme
2016 年 9 月 20 日
@renshuxian 测试做好来。
renshuxian
2016 年 9 月 20 日
@clarkyi 我们也是 jenkins 但是如果如您说的用 rundeck 他会不影响生产的用户的使用么 比如我们的订单有 8 台集群,他能保证发布的时候不出问题么
renshuxian
2016 年 9 月 20 日
@LMkillme 测试肯定是要的 但是很多环境只有生产有,只能最后才能测,很尴尬
clarkyi
2016 年 9 月 20 日
@renshuxian 你手动发布的时候能保证发布不出问题么?
这个跟你手动发布是一个道理,只是把命令什么的都统一起来了而已,再者发布的时候可以先发布一台机器暂且叫预发布机,环境跟线上完全一致,只是不对外开放访问。当你确认这一台机器跑起来是正常的再一次发布到外网。
当然像你说的订单系统对数据一致性要求高的,肯定是要找一个访问量低的时间段来更新的。或者有对应的机制来处理正则处理的订单这都是外话了。
renshuxian
2016 年 9 月 20 日
@clarkyi 感谢,那我懂了 还是要晚上上
darkfireworld
2016 年 9 月 20 日
核心业务无法中断的,那就只能晚上了。
renshuxian
2016 年 9 月 20 日
@darkfireworld 主要是想理解下那些大公司到底用了什么黑科技实现的热部署
dgsrz
2016 年 9 月 20 日
预发布+分批次发布线上,也没啥黑科技的……除了核心应用或数据库变更需要放在业务低峰期
owt5008137
2016 年 9 月 20 日
把生产环境的数据定期导到开发环境测啊。
生产环境部署可以试试采用 AB 组,更新前是 A 组,更新后是 B 组,切换环境就是路由切过去就行了。然后正式切换前先灰度一部分用户做预发布,如果预发布没问题了全部切 B 。就完了
ri0day
2016 年 9 月 20 日
楼上是对的。 2 组 ,先拿下来一组。发代码上去,测试。测试完了 放上去给外面使用。再弄第二组。第二组发完了,测试好了,就也放上去。
renshuxian
2016 年 9 月 20 日
@dgsrz 嗯我们现在也是这样 开发环境 测试环境 预发布 生产 就是纠结 生产一定要晚上上
renshuxian
2016 年 9 月 20 日
@owt5008137 但是切 B 的过程中 客户的使用会造成影响吧
renshuxian
2016 年 9 月 20 日
@ri0day 还是刚才的问题 比如 8 台的负载 如果分两批上线,前端只有 4 台工作压力可能会很大
xiaogui
2016 年 9 月 20 日
晚上受影响的用户相对会比较少,出问题有更多的时间解决。但是另一方面晚上易疲惫,所以有的时候反而容易范二。
ywgx
2016 年 9 月 20 日
信不信 来 xabcloud.com 给你完美解决方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307568

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX