分布式系统设计-风险规避通信篇

Posted zhangfengshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式系统设计-风险规避通信篇相关的知识,希望对你有一定的参考价值。

通信篇:

1.大量client连一个server

在现如今NonBlocking-IO这么成熟的情况下,一个支持大量client的server已经不那么难写了,但在大规模,并且通常长连接的情况下,有一个点要特别注意,就是当server挂掉的时候,不能出现所有client都在一个时间点发起重连,那样基本就是灾难,在没有经验的情况下我看过好几起类似的case,到client规模上去后,server一重启基本就直接被冲进来的大量建连冲垮了(当然,server的backlog队列首先应该稍微设置大一些),通常可以采用的方法是client重连前都做随机时间的sleep,另外就是重连的间隔采取避让算法

 

2. 一个client连大量的server

有些场景也会出现需要连大量server的现象,在这种情况下,同样要注意的也是不要并发同时去建所有的连接,而是在能力范围内分批去建。
除了建连接外,另外还要注意的地方是并发发送请求也同样,一定要做好限流,否则很容易会因为一些点慢导致内存爆掉

 


以上是关于分布式系统设计-风险规避通信篇的主要内容,如果未能解决你的问题,请参考以下文章

架构师之路 — 分布式系统 — 分布式网络分区难题

gRPC进阶

分布式系统消息中间件——RabbitMQ的使用基础篇

使用消息队列规避分布式事务问题

分布式系统设计应考虑的问题

了解爬虫的风险与以及如何规避风险-Java网络爬虫系统性学习与实战系列