这是一个分布式工作流系统的架构参考设计,图中每一个部份都涉及到一系列的技术以及优化手段,最终的目的就是实现分布式系统的三个目标。
- 可拓展性
- 容错能力
- 高性能
后面的章节,会围绕这个架构图,全方位介绍每一个部份的技术及其在工程实践中的一些优化和设计方法,让大家对整个流程有一个完整的认识。
负载均衡
在集群架构中,负载均衡是确保流量均匀分配到各个服务器或服务上的关键组件。它可以提高应用程序的可用性和性能,防止任何单一节点因过载而宕机。
API集群:
API集群负责处理外部请求,提供应用程序接口供客户端调用。这些API通常封装了后端服务的逻辑,使得客户端可以通过统一的接口与系统交互。
ETCD集群:
ETCD是一个高可用的键值存储系统,常用于共享配置和数据、服务发现、分布式锁等功能。在这里,主要是基于它的选举算法来实现主节点的选举,选举出的主节点负责Crontab任务监控和下发。
Worker集群:
Worker节点通常执行具体的任务或工作负载,每个Worker节点都包含一个流程引擎,专门负责从消息队列中获取任务执行。
消息队列:
消息队列用于在不同的服务或应用组件之间传递消息。它可以帮助解耦服务,提高系统的可伸缩性和容错性。这里可以使用Redis,也可以使用Kafka。通过消息队列数据结构,实现将流程实例的执行任务异步化。异步化操作可以极大地提高系统的性能以及接口的并发能力。
存储架构:
存储架构涉及到数据的读写、分库分表等策略。读写分离是指将读操作和写操作分别在不同的数据库节点上进行,以提高性能。分库分表则是为了优化大规模数据存储和查询性能。分区则是将数据或服务分布到不同的物理或逻辑区域。数据同步则确保集群中的不同节点或服务之间数据的一致性。这可能涉及到主从复制、数据备份和恢复等机制。