分布式系统常用的模式

发布于:2023-09-16 ⋅ 阅读:(53) ⋅ 点赞:(0)

分布式系统常用的模式

Ambassador

名称:“大使”模式

在这里插入图片描述

介绍:作为应用程序和其他服务的“中间人”,负责应用程序和其他服务之间的通信,包括日志、监控或重试处理等任务。

举例:K8S使用Envoy作为一个“大使”来简化服务之间的通信。

优点:

  • 降低延迟
  • 增强安全性
  • 改进分布式系统的整体架构

Circuit Breaker

名称:断路器/熔断器

在这里插入图片描述

介绍:分布式系统中存在多个服务,当某个服务不可用的时候,为了避免造成级联故障,该服务的上游可以通过断路器模式来停止请求不可用的服务,等待服务恢复。

举例:Netflix 的 Hystrix

优点:提高分布式系统的可用性

CQRS

名称:Command Query Responsibility Segregation,命令查询责任分离。

介绍:通过分离系统的写(或命令)和读(或查询)操作,提高系统的性能。

在这里插入图片描述
在这里插入图片描述

举例:

  • 数据库的读写分离,在主库上执行写操作,在从库上执行读操作,通过主从同步保持数据的一致性和实时性。
  • 写数据库,读缓存,数据库的写操作会导致缓存失效。

Event Sourcing

名称:事件溯源

介绍:不直接更新记录,而是存储代表变化的事件,这种方式为系统提供了完整的历史记录。

在这里插入图片描述

举例:

  • git 版本记录
  • 数据库的事务日志,发送到下游进行重放
  • 将系统的事件发送到kafka,供下游处理

Leader Election

名称:领导者选举模式

介绍:在分布式系统中,领导选举模式可以确保只有一个节点负责特定的任务和资源。当领导节点失败/不可用时,剩余的节点选择一个新的领导。

在这里插入图片描述

举例:etcd 和 zookeeper 使用 leader election 来管理分布式配置。

好处:通过指定一个 leader,我们可以避免冲突并确保在整个分布式系统中做出一致的决策。

Publisher/Subscriber

名称:发布-订阅模式

介绍:发布-订阅模式类似于报纸投递,发布者发送事件,不关心事件的接收者;订阅者监听它们感兴趣的事件,不关心事件的发送者。

在这里插入图片描述

举例:kafka等消息中间件

好处:解耦了事件的发送者和接收者,提高了系统的可扩展性。

Sharding

名称:分片

介绍:将数据划分到一个系统的多个节点上,每个节点包含数据的一个子集,所有节点上的数据共同组成完整的数据。

在这里插入图片描述

举例:分库分表、分布式数据库、kafka topic的多个分区、ES索引的多个分片

Replica

名称:副本

介绍:将数据冗余存储

在这里插入图片描述

举例:数据库的主库和备库、kafka topic的多副本、ES index 的多副本

本文含有隐藏内容,请 开通VIP 后查看