从百度文件系统看大型分布式系统设计中的定式与创新• 文件系统 - The Baidu File System - 持久化存储 百度文件系统架构 设计一个分布式系统要考虑的 • 数据与计算的分片 • 分区故障容忍 • 数据一致性 • 系统扩展性 • 延迟与吞吐 • 成本与资源利用率 • … 数据与计算的分片 • 哈希分片 - 简单、均衡 - 扩容复杂、易用性差 - 一致性哈希、虚拟节点 • 按范围、数据量分 - 使用简单 - 需要管理元数据 • 通过冗余应对故障 一个典型的数据处理场景 数据处理模块 数据接收模块 存储 主 从 从 1. 写入 2. 通知 3. 读取 多副本冗余 一致性问题 • 怎么定义写成功 - 3副本成功, 影响可用性 • 可以读从节点 - 刚写入的读不到 - 不一致 • 只允许读主节点 - 扩展性受限 数据处理模块 数据接收模块 存储 主 从 从 1. 写入 2. 通知 3 一致性与延迟的折衷 - 要求强一致的, 容忍延迟 - 要求低延迟的, 选择最终一致 提升系统扩展性 • 架构的可扩展性 - 拆分元数据节点 - 引入MetaServer 提升系统扩展性 • 设计的可扩展性 - 保证在规模扩大5倍或10倍是正常工作 • BFS避免了过渡设计 - 用设计中的不可扩展达到最大的可扩展 • 最多支持6万台机器 • 最多支持100亿文件 分布式存储系统设计的特殊性0 码力 | 24 页 | 937.45 KB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 解决方案 Ø 服务节点不能随便迁移 CAP Is Not Simply 2 out of 3 Ø 没有分区时,可用性和一致 性要兼得 Ø 经常要考虑的是可用性和一 致性各有一部分 依据声明式自愈的理念设计系统 有一个统一的状 态持久化接口, 所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只 需要包括 Desired State 每个领域的控 制器模块的逻 辑保证自己领 域独立自愈的 能力 改变状态的操作 必须是幂等的声 明式操作,没有 新声明时各模块 按照之前的声明 继续工作 控制器模块对象 包括Desired State 和 Realized 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假设任何命令都可能被任何调用对象拒绝,甚至返回错 误结果 声明式自愈系统的现有框架——Kubernetes 声明式自愈系统设计理念的回顾 统一接口0 码力 | 44 页 | 2.47 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造退货单 ⼊入库单 投诉单 商品 ⽀支付订 单 订单 划分限界上下⽂文 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是限界上下⽂文? 如何探索限界上下⽂文? 业务的扩展会产⽣生越来越多的领域模 型,任何⼤大型项⽬目都会存在很多的领 域模型。当不不同领域模型对应的软件 代码被放在⼀一起后,软件就变得庞⼤大 且复杂,代码难于理理解、且容易易出现 bug,所以需要通过限界上下⽂文来明 business. ⾯面对巨⼤大复杂的遗留留系统, 我们该如何开始拆解? 代码依赖模式 我们推荐以模块(java包)为基本单位,从代码依赖的⻆角度看,有三种模式: package A class X { public void foo(){ Y.bar(); } } 依赖其他模块 package B class Y { public void bar(){} } X { public void foo(){} } package B class Y { public void bar(){ X.foo(); } } 被其他模块依赖 package A class X { public void foo(){} } 独⽴立存在 Structure101代码依赖分析 可视化代码地图 ⾃自动分析每⼀一层级0 码力 | 54 页 | 3.85 MB | 1 年前3
海量用户推送后台系统架构实践-曾振波01 06 03 07 05 04 08 模块化 异步化 并行化 缓存化 程序及系统优化 基础组件服务化 链接管理 系统安全 09 新技术的应用——K8S部署业务 模块化 • 模块业务逻辑All In导致相互影响,更新升级难度大 • 功能按照业务拆分解耦 • 数据和业务分离 • 快速迭代 • 模块间通过MQ/RPC交互 极光推送后台系统架构 01 Segment 消息化请求 • MQ - RabbitMQ, RocketMQ • 模块间解耦 • IDC数据同步 • 异步RPC • ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行 极光推送后台系统架构 03 极光推送后台系统架构 08 K8S部署业务 • 原有系统的运维工作繁杂,资源利用率低 • 弹性扩容 • 配置统一管理 • 内外集群隔离 • Pod包含多个容器 - 辅助容器,业务容器 • 业务模块代码架构调整 • 监控体系调整 极光推送后台系统架构 09 结束语 • 高性能/低成本、高可用、高运维 • 只用验证过的开源组件 • 自研替代开源 • 能并行就不要串行 • 能异步就不要同步0 码力 | 23 页 | 1.26 MB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化现。Etcd已经在很多分布式系统中得 到广泛的使用。Etcd采用raft协议,来保证一致性。 2.后台服务采用Go开发,围绕业务功能需求,构建后台服务模块 包括个人中心、服务、待办服务、证照服务、公共服务、外部能力、业务办理服务和运营管理服务模块 12、系统部署架构反复评审论证 一、部署架构 1、政务云电子政务外网 :数据库、应用服务 2、政务云互联网区:静态资源、网关 3、互联网区:小程序、云服务 小程序 端 APP端 运营数 据分析 一体机 端 1.项目建设,考虑的维度有:需求-产品-前后端开发-测试-上线… 2.产品研发,需考虑的维度:产品可扩展,如多端支持(小程序端、APP端、一体机端); 功能可扩展,如支持个人中心、证照、办事、资讯、特色专区等;可移植、易安装等; 及衍生的支撑工具系统,如运营数据分析; 产品视角 目录 一、移动政务应用服务现状与痛点 二、一个特殊的移动政务应用项目0 码力 | 35 页 | 15.60 MB | 1 年前3
分布式 KV 存储系统 Cellar 演进之路Cellar规划 目录 Cellar—中心节点架构演进 • 性能问题 客户端集中获取路由表 • 隔离性问题 中心节点暴露给客户端 单独的路由表获取模块 Cellar—中心节点架构演进 • 可扩展性: 路由查询能力 可线性扩展 • 隔离性: 客户端与中心节点 完全隔离 Cellar—中心节点架构演进 一致性 • 主备脑裂 • observer与config • Zookeeper选主 网络延迟大 专线稳定性差 • 异地容灾需求 跨集群数据同步 Cellar—异地容灾 集群节点同步 消息队列同步 复制延迟 低 高 系统复杂度 低 高 运维成本 低 高 实现难度 高 低 扩展性 低 高 • 低延迟 • 低复杂度(运维成本) Cellar—异地容灾 • Cellar起源 • 中心节点架构演进 • 节点高可用和异地容灾 • 服务可用性提升 • Cellar规划 目录0 码力 | 34 页 | 1.66 MB | 1 年前3
陈辉-架构师的业务思维渠道详情页 If else 业务上会有更多类似玩法 If else不能解决本质问题 多平台、多渠道是个趋势 跳出技术思维 多渠道的本质是商品交易体系的扩展性 理解清楚当前需求 具有业务前瞻性 不要过度设计 多渠道 多平台 多用户 模块化 SPI 规则引擎 流程引擎 商品平台化 交易平台化 促销平台化 渠道下单 无结构化商品 多平台玩法 多端适配和开发组件 组件池 怎么去实践0 码力 | 32 页 | 3.18 MB | 1 年前3
ServiceComb 开源微服务框架技术演进之路 巨震#数据面,控制面 大纲 服务形态的演进 SDK SDK SDK SDK proxy proxy proxy proxy • 单体应用 • 业务模块划分 • 程序模块间调用 • 独立应用模块 • 通信:协议、队列 • SDK引用 • 通信:http、 RPC… • 服务治理 • 透明代理 • 通信:通用协议 • 服务治理 • Cloud0 码力 | 20 页 | 861.58 KB | 1 年前3
全球架构师峰会2019北京/量子计算/量子计算及其潜在应用&mdash合作高校实验平台 演示 全新设计IDE界面 上线Block UI编 程模式 推出 mapper功 能 开放 HiQ 源码到 公开平台 提供噪声模拟选项 增加哈密顿量期望 值的分布式模拟计 算模块 推出基于张量网络的 全概率模拟器 HiQ Fermion: 一站式量子化学模拟计算 量子化学模拟:量子计算机的杀手级应用 量子化学是应用量子力学原理 来研究化学问题的一门学科, 包括分子结构、分子与分子之 函数库,包括 UCC、Hardware Efficient, Qubit CC 等 2.兼容多种常见的经典量子化学软件如 Gaussian,NWChem,PySCF 和 Psi4的 Drivers 模块 3.提供多种主流的费米子编码方法:Jordan-Wigner, Parity,Bravyi-Kitaev 等 4.提供支持并行计算梯度的 Optimziers,能更快收敛 5.模拟业界最大规模 reinforcement learning 和 Monte Carlo 3. 兼容业界主力调控包Qutip等 4. 高性能计算能力(核心技术:新的计算Propagator方法,自主研发的 ODE计算模块,并行计算) 5.支持多比特优化 6. 为用户提供友好GUI 华为量子调控软件包 HIQ Pulse 1: 基于多种新型算法和技术实现量子优化控制算法性能数倍提升 2: 自研新型量子优化控制算法适应更广泛的应用场景0 码力 | 34 页 | 5.57 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔延时模型、超时模型、异常模型、⾃自定义代码模型 • 基于模型实现应⽤用故障、中间件故障模拟,实时对应⽤用程序进⾏行行 字节码插桩、拆桩 简洁易易操作后台 • 可视化UI,参数、配置下发,快速实现故障注⼊入 • 丰富的故障模块管理理功能 Exception Model Timeout Model Latency Model Agent Listener 故障注⼊入流程 故障演练 管理理后台 应⽤用程序 Agent Listener Agent Redis MySQL ⼆二⽅方服务 1. 发送Agent启动指令 2. Attach⽬目标JVM进程 Core.jar 核⼼心模块初始化 4. 参数下发、故障注⼊入、控制指令 Http通信 5. ⽬目标⽅方法字节码增强 6. MySQL延时模拟 6. Redis超时模拟 6. 服务异常模拟 Instrumentation0 码力 | 26 页 | 18.67 MB | 1 年前3
共 19 条
- 1
- 2













