Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

代码发布如何才能不 502?

  以前在给一些小公司做项目的时候根本就不会有多少访问量,谈不上集群之类的东西,代码发布都是随随便便的,甚至直接上服务器 Debug。对于一个有持续访问量的业务,就需要有很多机器,很多服务实例来支撑了。为了保持服务稳定,代码发布的过程也会变得复杂起来。
  如果一个服务无时无刻不在被调用着,那就意味着它一秒都不能挂。一个关键服务的部署通常有域名、负载均衡、服务集群这个层次。代码发布影响的只是服务集群这个级别,所以只要服务集群是个可以动态增减服务实例的东西我们就可以把正在发布代码的服务实例从集群中抽出去,直到发布完毕后再放回集群中。只要把代码发布这件事分成许多批,逐步更新到整个集群上,那就不会影响集群本身的工作。
  具体的实现方式根据服务使用的协议可以有很多种,比如最简单的是服务基于 HTTP,负载均衡有 nginx 来做,那么只要通过 nginx 的 proxy 模块就可以实现,因为 proxy 模块自带健康检查和错误重试机制。
  但是作为负载均衡的机器,它偶尔也需要更新和维护。那么和服务集群的代码更新一样的道理,只要把负载均衡服务器从域名解析中删除掉就不会再有流量进来,然后爱怎么搞就怎么搞,搞定后再加回域名解析的列表中。
  好像扯得有点远了,总之这些可以逐步更新的东西都很容易解决。最困难的是无法逐步更新的东西,比如数据库调整,所以有时候还是会需要停服来做一些事情。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^