关于分布式调度任务的几点思考

由于最近在看分布式调度任务平台,节前也有研究过当当的elastic-job,加上刚刚看的肖德时:分布式任务调度平台实践探讨,自己关于分布式调度任务也有一些思考。

1.去中心化

在任务调度中,如果有一个中心节点在负责给分布式系统中的worker发送任务,执行调度,则这个中心节点很容易成为性能瓶颈,并且中心节点不可用就会导致整个系统瘫痪。上面提到的两个分布式任务调度平台都采用了zookeeper集群来保存分布式中的共享信息,其高可用和数据一致性是值得信赖的。

2.消息队列

当任务产生如果同步发给worker,当高并发的任务请求产生的时候则会导致系统崩溃,如果将任务消息放置在能够处理高吞吐的消息队列中,如kafka,worker在有能力处理任务的时候再去消息队列取任务执行,能够很好提升系统处理任务的并发能力。但是这样也会存在一个问题去思考,那就是任务堆积的问题,需要将任务很好地监控起来。

3.分片技术

分片技术是充分利用当前机子资源的办法,将任务尽量均匀地分配到每个worker上去执行实现并行处理。利用kafka 的分区,每个worker到指定的分区上去取数据,如果消息是均匀地发送到kafka,则是一个不错的分片解决方案。

4.弹性伸缩

在大量任务到来的时候,如果能够弹性增加worker的数量,则可以提升系统处理任务的能力,但是需要考虑
新增的worker如何进入系统中,从系统的任务队列中获取,并不影响现有的系统的运作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容