分布式系统常用的模式

2023-11-06

分布式系统常用的模式

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式系统常用的模式 的相关文章

  • 02-RabbitMQ之Docker安装Rabbit单机与集群

    一 docker安装单机rabbit 1 查找rabbitmq镜像或者在docker仓库查看rabbitmq镜像 docker search rabbitmq 2 拉取最新的rabbitmq docker pull rabbitmq 3 运
  • 数据库如何热备份

    1 1数据库冷备份 概念 在固定的周期内 人为的将数据库中的数据进行备份 一般一式三份 缺点 1 可能会造成数据丢失 2 如果数据量很多 则可能会导致备份时间很长 并且备份不能正常完成 说明 虽然冷备份有诸多的缺点 但是最好进行冷备份 因为
  • centos 7修改打开文件数限制

    本文转自 http www tuicool com articles b2UNzm 未作修改 由于原文内容过多 在此仅列出部分内容 3 加大打开文件数的限制 open files 查看 ulimit n ulimit a vi etc se
  • Tomcat 系统架构与设计模式之工作原理篇

    本文以 Tomcat 5 为基础 也兼顾最新的 Tomcat 6 和 Tomcat 4 Tomcat 的基本设计思路和架构是具有一定连续性的 Tomcat 总体结构 Tomcat 的结构很复杂 但是 Tomcat 也非常的模块化 找到了 T
  • 微服务框架

    微服务框架 1 SOA思想 面向服务的架构 SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 进行拆分 并通过这些服务之间定义良好的接口和协议联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务的硬件平台 操作系统和编
  • 记录一次生产环境MySQL死锁以及解决思路

    一 背景 1 业务背景 这里因为涉及到公司的业务问题不进行深入讨论 下面换成通用的一些业务场景就是举例 2 技术背景 众所周知 所谓锁的产生本质上是想解决资源竞争问题 在MySQL的前提下 MySQL为了解决事务并发独写的问题 在进行ins
  • java脚本引擎Groovy实战

    前言 互联网时代随着业务的飞速发展 不仅产品迭代 更新的速度越来越快 个性化需求也是越来越多 如何快速的满足各种业务的个性化需求是我们要重点思考的问题 我们开发的系统如何才能做到热部署 不重启服务就能适应各种规则变化呢 实现业务和规则的解耦
  • Hadoop 完全分布式运行实战

    Hadoop运行模式包括 本地模式 伪分布式模式以及完全分布式模式 Hadoop官方网站 Apache Hadoop 流程步骤 准备3台客户机 关闭防火墙 静态ip 主机名称 安装JDK 配置环境变量 安装Hadoop 配置环境变量 配置集
  • 项目实战之RabbitMQ死信队列应用

    作者名称 DaenCode gt https blog csdn net 2302 79094329 作者简介 啥技术都喜欢捣鼓捣鼓 喜欢分享技术 经验 生活 人生感悟 尝尽人生百味 方知世间冷暖 文章目录 架构图 application
  • 项目实战之RabbitMQ冗余双写架构

    作者名称 DaenCode gt https blog csdn net 2302 79094329 作者简介 啥技术都喜欢捣鼓捣鼓 喜欢分享技术 经验 生活 人生感悟 尝尽人生百味 方知世间冷暖 所属专栏 项目所感所想 gt https
  • MQ - KAFKA 高级篇

    kafak是一个分布式流处理平台 提供消息持久化 基于发布 订阅的方式的消息中间件 同时通过消费端配置相同的groupId支持点对点通信 适用场景 构造实时流数据管道 用于系统或应用之间可靠的消息传输 数据采集及处理 例如连接到一个数据库系
  • AI分布式训练:DDP (数据并行)技术详解与实战

    编者按 如今传统的单机单卡模式已经无法满足超大模型进行训练的要求 如何更好地 更轻松地利用多个 GPU 资源进行模型训练成为了人工智能领域的热门话题 我们今天为大家带来的这篇文章详细介绍了一种名为 DDP Distributed Data
  • 不会做项目惨遭部门领导批评,连刷35天分布式小册轻松拿下

    互联网发展到今天 用户数量越来越多 产生的数据规模也越来越大 应用系统必须支持高并发访问和海量数据处理的需求 对比集中式架构 分布式系统由于具有可扩展性 可以动态扩展服务和存储节点 使用廉价的机器构建高性能的服务 更适合如今的互联网业务 分
  • 消息队列选型:Kafka 如何实现高性能?

    在分布式消息模块中 我将对消息队列中应用最广泛的 Kafka 和 RocketMQ 进行梳理 以便于你在应用中可以更好地进行消息队列选型 另外 这两款消息队列也是面试的高频考点 所以 本文我们就一起来看一下 Kafka 是如何实现高性能的
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 终于找到了最新版的Zookeeper入门级教程,建议收藏!

    小熊学Java https javaxiaobear cn 1 分布式一致性 1 CAP 理论 CAP 理论指出对于一个分布式计算系统来说 不可能同时满足以下三点 一致性 在分布式环境中 一致性是指数据在多个副本之间是否能够保持一致的特性
  • 华纳云:ServiceComb如何实现zipkin分布式调用链追踪

    Apache ServiceComb是一个开源的微服务框架 它提供了分布式系统开发所需的一系列工具和服务 在ServiceComb中 实现分布式调用链追踪可以通过整合Zipkin来实现 Zipkin是一个开源的分布式追踪系统 它可以帮助你跟
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【复现】遗传算法求解分布式电源选址定容问题并考虑环境因素研究【IEEE33节点】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作

随机推荐

  • Day 1 - 基本语法

    Day 1 1 基本语法 一 语句 1条有效程序 print 你好 print 世界 一行有多条语句 要用分号隔开 print 你好 print 世界 二 注释 注释是代码中不参与编译执行的说明性文字 不影响程序功能 单行注释 Ctrl p
  • Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis

    微信搜索关注 水滴与银弹 公众号 第一时间获取优质技术干货 7年资深后端研发 给你呈现不一样的技术视角 大家好 我是 Kaito 这篇文章我想和你聊一聊 Redis 的最佳实践 你的项目或许已经使用 Redis 很长时间了 但在使用过程中
  • ‘redis‐server.exe‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

    1 管理员身份 2 cmd进入redis安装目录 3 执行命令 redis server exe redis windows conf 我缺少了第二步
  • 设计模式的口诀

    创建 结构 行为 1 抽工单建原 2 桥代理组装适配器的享元外观 3 访问者的策略备忘录 观察模板的迭代状态 命令中介者解释责任链
  • 最大子列和问题(四种方法 !!!终极版本)

    题目 给定K个整数组成的序列 N1 N 2 N K 连续子列 被定义为 Ni N i 1 Nj 其中 1 i j K 最大子列和 则被定义为所有连续子列元素的和中最大者 例如给定序列 2 11 4 13 5 2 其连续子列 11 4 13
  • Unity 优化1

    我认为unity的优化可以从三方面入手 分别是资源优化 性能优化和内存优化 由于每一方面的优化内容都比较多 我在这里主要分析一下性能优化 系统性能的好与差主要是通过系统的相应时间来衡量的 如果系统的响应时间超过500毫秒 用户就会感觉到明显
  • ASAP标注软件安装教程Ubuntu20.04

    以下转载自Github 需要针对ubuntu20 04 python3 8进行修改 DeepLearningCamelyon ASAP installation Ubuntu 16 04 at master 3dimaging DeepLe
  • 神武跑环遇到服务器维护,神武跑环不再痛苦:任务链重点难点详解攻略

    神武跑环不再痛苦 任务链重点难点详解攻略 大家快来看看吧 神武跑环不再痛苦 任务链重点难点详解攻略 相关新闻 任务链攻略 任务内容包括 找人 找到NPC对话即可 无时限 击败NPC 击败指定NPC即可 40分钟 难度较高 寻找物品交予NPC
  • kali功能介绍及安装(超详细)

    kali功能介绍及安装 超详细 一 kali简介 1 描述 Kali Linux是一个操作系统 2013 03 13诞生 基于Debian Linux的发行版 基于包含了约600个安全工具 省去了繁琐的安装 编译 配置 更新步骤 为所有工具
  • Python字符串中的特殊字符

    f 字符串 格式化字符串 在字符串前面加上 f 可以创建一个格式化字符串 在其中可以使用花括号 来插入变量或表达式的值 这种字符串会在运行时进行格式化处理 例如 name Alice age 25 print f My name is na
  • js实现图片懒加载原理

    有时候一个网页会包含很多的图片 例如淘宝京东这些购物网站 商品图片多只之又多 页面图片多 加载的图片就多 服务器压力就会很大 不仅影响渲染速度还会浪费带宽 比如一个1M大小的图片 并发情况下 达到1000并发 即同时有1000个人访问 就会
  • 学习记录Linux搭建nginx

    安装编译工具及库文件 yum y install make zlib zlib devel gcc c libtool openssl openssl devel 首先要安装 PCRE 下载 PCRE 安装包 下载地址 http downl
  • Pycharm常用快捷键大全

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net momoda118 article details 120155611 工欲善其事必先
  • 如何将任意大小的图片填充成一个方形

    这种方式我认为是最适合的图片预处理方式 随意resize会改变图片的特征 而进行填充的方式除了会改变原来标签的坐标以外 可以完全保留图片上所有的物体最原始的特征 def pad to square img pad value c h w i
  • 用Gerrit commit时报错missing Change-Id in message footer

    本人在第一次使用Gerrit时提交代码一直报change Id找不到 在git log的时候显示如下 查询其他文档发现是commit msg文件不存在导致的 现给出解决方案 提示错误 错误信息如下 remote Resolving delt
  • ctfshow终极考核wp

    文章目录 web640 web641 web642 web643 web644 web645 web646 web647 web648 web649 web650 web651 web652 web653 web654 web640 打开页
  • 【华为OD机试】支持优先级的队列【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 实现一个支持优先级的队列 高优先级先出队列 同优先级时先进先出 如果两个输入数据和优先级都相同 则后一个数据不入队列被丢弃 队列存储的数据内容是一个整数 输入描述 一
  • 修改 Linux VM 中单个用户最大进程数的限制

    在部署有并发任务执行的虚机上 会遇到 SSH 无法访问的问题 本文将帮助你找出其中一种比较特殊的原因 并提供解决方案 Note 以下案例分析基于 CentOS 7 对于其他版本的 Linux 操作系统 会略有不同 请注意 症状描述 虚机在正
  • BaoStock:一个免费、开源的python证券数据接口包

    如果需要获取历史行情数据 www baostock com是个很好的免费 开源的Python证券数据接口包 特点 使用方便 免费免费免费 返回的绝大部分的数据格式都是pandas DataFrame类型 入门代码如下 import baos
  • 分布式系统常用的模式

    分布式系统常用的模式 Ambassador 名称 大使 模式 介绍 作为应用程序和其他服务的 中间人 负责应用程序和其他服务之间的通信 包括日志 监控或重试处理等任务 举例 K8S使用Envoy作为一个 大使 来简化服务之间的通信 优点 降