分布式系统部署、监控与进程管理的几重境界

根据公司的规模和技术水平不同,分布式系统的运维分为几重境界,以下是我对各重境界的简要描述。
摘要由CSDN通过智能技术生成

陈硕 (giantchen_AT_gmail)

Blog.csdn.net/Solstice  t.sina.com.cn/giantchen

陈硕关于分布式系统的系列文章:http://blog.csdn.net/Solstice/category/802325.aspx

本作品采用“Creative Commons 署名-非商业性使用-禁止演绎 3.0 Unported 许可协议(cc by-nc-nd)”进行许可。
http://creativecommons.org/licenses/by-nc-nd/3.0/

约定:本文只考虑 Linux 系统,文中涉及的“服务程序”是以 C++ 或 Java 编写,编译成二进制可执行文件(binary 或 jar),程序启动的时候一般会读取配置文件(或者以其他方式获得配置信息),同一个程序每个服务进程的配置文件可能略有不同。“服务器”这个词有多重含义,为避免混淆,本文以 host 指代服务器硬件,以“服务端程序/进程”指代服务器软件(或者具体说 Web Server 和 Sudoku Solver,这两个都是服务软件)。

 

在进入正题之前,先看一个虚构但典型的例子:Sudoku Solver。(Sudoku Solver 是个均质的无状态服务,分布式系统中进程的状态迁移不是本文的主题。)

假设你们公司的分布式系统中有一个专门求解数独(Sudoku)的服务程序,这个程序是你们团队开发并维护的。通常 Web Server 会使用这个 Sudoku Solver 提供的服务,用户通过 web 页面提交一个 Sudoku 谜题,web server 转而向 Sudoku Solver 寻求答案。每个 Web Server 会同时跟多个 Sudoku Solver 联系,以实现负载均衡。系统的消息结构大致如下,每个圆角矩形是一个进程,运行在各自的 host 上:

幻灯片18

上图中的 Web Server 请不要简单理解为 httpd + cgi,它其实泛指一切客户端,本身可能是个 stateful 的服务程序。

当然,系统不是一开始就是这样,它经历了多步演化。

four

一开始 (a),只有一个 Sudoku Solver,也只有一台 Web Server,是个简单的一对一 (1:1) 的使用关系;

随后 (b),随着业务量增加,一台 host 不堪重负,于是又部署了几台 Sudoku Solver,变成了一对多 (1:n) 的使用关系;

再后来 (c),一台 Web Server 撑不住了,于是部署了几台 Web Server,形成了我们一开始看到的多对多 (m:n) 的使用关系;

(d) 中的情况留到文末再讲。

 

在分布式系统中部署并运行 Sudoku Solver,需要考虑以下几个问题:

  • Sudoku Solver 如何部署到多台 host 上运行?是把可执行文件拷过去吗?程序用到的库怎么办?配置文件怎么办?
  • 如何启动服务程序 Sudoku Solver ?如果每个 Solver 的配置文件稍有不同(比如每个 Solver 有自己的 service name),那么配置文件是自动生成吗?
  • Sudoku Solver 的 listening port 如何配置?如何保证它不与其他服务程序重复?
  • 如果程序 crash,谁来重启?能否自动重启?开发/运维人员能否及时收到 alert?
  • 如果想主动重启 Sudoku Solver,要不要登录到那台 host 上去 kill ?还是能够远程控制?
  • 如果要升级 Sudoku Solver 程序,如何重新部署?如何(尽量)做到不中断服务?
  • Web Server 如何知道那些 Sudoku Solver 的地址?是不是静态写到 Web Server 的配置文件里?
  • 如果 Sudoku Solver 所在的 host 发生硬件故障,管理人员是否能立刻得知这一状况?Web Server 能否自动 fail over 到其他 alive 的 Solver 上?
  • 部署新的 Sudoku Solver 之后,Web Server 能否自动开始使用新的 Solver 而无需重启?(重启 Web Server 似乎不是大问题,这里我们进一步考虑 client 是个有状态的服务,应该尽量避
  • 4
    点赞
  • 159
    收藏
    觉得还不错? 一键收藏
  • 47
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值