分布式系统-集群

  一个好的分布式系统,应该是高可用的。要保证高可用,随着业务量的增加,业务系统做成集群,就是必不可少的。

搭建并维护好一个集群,需要满足如下几个要求:

  1. 满足业务请求的正常运转。

  2. 集群节点无状态化。

  3. 对集群节点做各项资源指标的监控。

  4. 随着业务的发展,预估扩容、缩容的具体数量。

  满足业务请求的正常运转

  一个集群系统,不管流量或大或小,都需要保证节点数量Pnum>=2,这是为了预防单点故障问题。试想,当系统迭代上线时,如果是单节点,那系统岂不是不可用了?

  具体应该配置多少台节点,应该在保证业务正常运转的基础上,着重保证系统三个指标:CPU Idle、内存、IO 的安全与稳定。从经验来谈,大部分业务系统,流量都是和CPU呈线性关系。随着单节点流量的增加,系统异常、请求耗时、crash频率,就是系统稳定运转的指标。保证了这几个指标,才算是稳定的系统。当然,这些是很难预测的,从经验来看,大致可以通过控制CPU Idle来做评估。

  一般来讲,系统正常运行时,保证CPU 在60%一下,则可以保证系统的性能稳定。

  还有一些特殊的业务系统,流量或者没有增加多少,但是随着数据量的增加,内存也会缓缓增加。这类系统,内存和数据量是线性相关的。要保证集运的正常运转,就得适时调整节点内存的大小。

  集群节点无状态化

  业务集群,应该是无状态的。要保证无状态,有两个思路。一是通过Paxos这类一致性算法来实现。一是将有状态的数据迁移到中间件,通过中间件的无状态化来解决问题。

  业务系统,应该是专注于业务而不是技术,一般来讲,业务集群,都是采用第二个思路来保证无状态。

  对集群节点做各项资源指标的监控

  监控业务集群,主要监控如下几个项目:节点心跳检测、节点CPU监控、QPS/TPS监控、接口耗时监控。

  分布式系统,要保证高可用,绝不是搭建好就一劳永逸,做好监控,也是至关重要的。

  随着业务的发展,预估扩容、缩容的具体数量

  随着业务发展,各个指标会出现变动,当超过预警值时,就要做适当的扩容。当业务萎缩时,为了节约成本,就要做适当缩容。具体,可以事先通过压测核心接口,摸索出系统CPU/内存和业务量的线性关系。通过这个线性关系,便可以预估出扩容、缩容的具体数量。

  总之,搭建并维护一个集群,需要研发、运维一起通力协作,才能做好这个事儿。

  

 

posted @ 2023-11-14 20:46  天NULL  阅读(26)  评论(0)    收藏  举报