• 分布式系统常用的模式


    分布式系统常用的模式

    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 的多副本

  • 相关阅读:
    继(VScode上传到git仓库详细教程)后,创建新仓库以及上传新代码到git仓库教程
    Datastage部署与使用
    Java岗最全面试攻略,吃透25个技术栈,Offer拿到手软,搞定秋招!
    lombok中使用@Accessors和@Builder的区别
    app小程序手机端Python爬虫实战00-课程导学
    flowable 会签例子
    Redis SCAN命令操作实战(详细)
    在虚拟机中截图
    APP UI自动化测试思路总结 ,教你彻底学会APP自动化测试
    易航网址引导系统 v1.9 源码:去除弹窗功能的易航网址引导页管理系统
  • 原文地址:https://blog.csdn.net/qq_24831889/article/details/132723764