声明式自愈系统——高可用分布式系统的设计之道-王昕和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 解决方案 Ø 服务节点不能随便迁移 CAP Is Not Simply 2 out of 3 Ø 没有分区时,可用性和一致 性要兼得 Ø 经常要考虑的是可用性和一 致性各有一部分 要在领域内 自己实现 如何设计好状态机和自愈协议? Writing Correct Software Is Hard! Math and Thinking Can Help Us! Ø TLA+ 是用来给(软件或硬件)系统建模的语言 Ø TLA+ 强调排除特定编程语言(软件或硬件)的影响验证系 统设计 Ø TLA+ 由 Paxos 协议的发明人 Leslie Lamport 发明 使用 API 对象是彼此互补而且可组合的 Ø 尽量避免简单封装,不要有隐藏的内部 API Ø API 操作复杂度与对象数量成正比 Ø API 对象状态不依赖于连接状态 Ø 针对全局状态设计自愈容错机制 最佳实践分享 有关系统设计和运营 Ø 分开设计理想状态和实际状态 Desired State Realized State Ø 利用队列解耦系统 Ø 尽量不要依赖 DNS 做高可用0 码力 | 44 页 | 2.47 MB | 1 年前3
从百度文件系统看大型分布式系统设计中的定式与创新• 文件系统 - The Baidu File System - 持久化存储 百度文件系统架构 设计一个分布式系统要考虑的 • 数据与计算的分片 • 分区故障容忍 • 数据一致性 • 系统扩展性 • 延迟与吞吐 • 成本与资源利用率 • … 数据与计算的分片 • 哈希分片 - 简单、均衡 - 扩容复杂、易用性差 - 一致性哈希、虚拟节点 • 按范围、数据量分 - 使用简单 - 需要管理元数据 写入 2. 通知 3. 读取 多副本冗余 一致性问题 • 怎么定义写成功 - 3副本成功, 影响可用性 • 可以读从节点 - 刚写入的读不到 - 不一致 • 只允许读主节点 - 扩展性受限 数据处理模块 数据接收模块 存储 主 从 从 1. 写入 2. 通知 3. 读取 CAP理论 • 简要历史 - Eric Brewer 1998年提出 - 2002年证明 Partition Tolerance 分区 容忍性 • 分布式系统 - 容忍网络隔离是必须的 - CP、AP Quorum机制 • Quorum写(NWR) - Write 写成功W副本 - Read 读R副本 - W+R>N,就不会丢失更新 • 一致性协议 - Paxos - Raft CAP到CAD的演变 • 必须容忍网络隔离 - CAP->CA • 跨地域的延迟 - CA->CAD/CAL0 码力 | 24 页 | 937.45 KB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化专题、不同群体服务 ---- 参考《【To G设计赋能】重塑政务服务体验设计初探:粤省事小程序设计总结》 http://www.woshipm.com/pd/1547313.html 8、统一认证机制 – 登录一次、全网通办 • 无需注册(无需用户再记住一个新账号、密码) • 依托微信的账号体系,便捷登录,以授权登录、 人脸识别登录为主 • 依托公安部门互联网可信身份认证体系 • 用户登录后,业务系统不再要求用户登录 构建分布式微服务框架 1.采用etcd 构建微服务框架 etcd是一个分布式的 、一致的key-value存储,主要用途是共享配置和服务发现。Etcd已经在很多分布式系统中得 到广泛的使用。Etcd采用raft协议,来保证一致性。 2.后台服务采用Go开发,围绕业务功能需求,构建后台服务模块 包括个人中心、服务、待办服务、证照服务、公共服务、外部能力、业务办理服务和运营管理服务模块 12、系统部署架构反复评审论证 小程序 端 APP端 运营数 据分析 一体机 端 1.项目建设,考虑的维度有:需求-产品-前后端开发-测试-上线… 2.产品研发,需考虑的维度:产品可扩展,如多端支持(小程序端、APP端、一体机端); 功能可扩展,如支持个人中心、证照、办事、资讯、特色专区等;可移植、易安装等; 及衍生的支撑工具系统,如运营数据分析; 产品视角 目录 一、移动政务应用服务现状与痛点 二、一个特殊的移动政务应用项目0 码力 | 35 页 | 15.60 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道分布式服务框架mock能力构建 应用 服务容器(Consumer) Filter Chain 将mock能力内置到分布式服务框架中 开发mock能力过滤器,在服务调用链路上对服务调用进行挡截。 “开关机制”控制mock能力启停 mock能力启用时,服务容器初始化期间将加载mock数据文件到内存中,每个服务请求将和mock数据的入参定 义进行比对,满足(静态匹配 或动态匹配)规范的请求,直接用mock数据的出参定义作为服务调用的结果。 不需要服务消费者注册,直接通过本地配置文件指定的IP地址来绕过“服务路由”及“负载均衡”机制。 服务提供者不能采用token验证模式 基于包名过滤服务 团队往往开发某类业务服务,这类服务一般都具有相同的包名,因此,可以通过配置包名和服务IP的映射关系, 让服务框架自动将一批服务和特定的IP关联到一起。 直连调测机制 提供者B 服务容器 提供者B 服务容器 本地配置文件 com.company : 一部分依赖服务从本机的Runtime环境即可获取, 一部分需要从协同团队的远程开发机上临时获取(联调模式), 一部分服务可能还未完成开发并发布,需要通过mock机制进行模拟。 我们需要综合利用前面所介绍的各种调测机制来保障日常开发中对应用服务的正常调测: 服务调用 本地服 务? 调用本地服务 是 是否直 连? 否 RPC远程直连 调用 是 是否有 mock 数据? 否0 码力 | 19 页 | 2.74 MB | 1 年前3
领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进CONTENTS CONTENT 产品介绍 业务挑战及架构目标 架构演进 总结展望 业务挑战与架构目标 建筑造型多样化,业务模 型复杂度越来越高 业务挑战 新业务基于现有业务进行 扩展,而应用场景及性能 要求不同,既复用又独立; 产品云+端转型,核心业 务逐步实现服务化,不同 业务演化路径不同 简化业务模型复杂度 架构演进目标 不同业务间解耦 各业务独立演化 单体架构 外部接口深入到上游的业务逻辑 限界上下文解耦-发布订阅机制 钢筋模型 上下文 建模模型 上下文 调度中心 平法模型 上下文 发布 解决: 上游模型变化,下游模型联动 发布-订阅机制 架构演进 1 2 3 领域拆分 架构分层 构建领域模型 架构分层 持久化层 领域层 CAD图纸管理 建模UI 通用UI组件 几何算法 通用框架机制 通用算法 CAD/BIM UI 截面钢筋 保护层厚度 规格 端头 弯钩 规格 线筋 位置 参考线 参考点 位置 …... 截面钢筋模型总结 7种构件类型的布筋描述建模为同一种模型,增强了模型的表达能 力,提高了可扩展性 UI边界≠模型边界 通过提炼隐含业务规则完善模型 CONTENTS CONTENT 产品介绍 业务挑战及架构目标 架构演进 总结展望 DDD在研发中落地 统一语言 需求实例化0 码力 | 33 页 | 1.25 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践设计要点二:接入层设计 www.163yun.com 设计要点三:无状态化 www.163yun.com 设计要点四:服务拆分与服务发现 www.163yun.com 设计要点亓:数据库横向扩展 www.163yun.com 设计要点六:缓存的设计 APP缓存 CDN 接入层 静态资源 动态资源静态化 应用本地缓存 分布式缓存 配置灵活:可配置检测粒度为每M毫秒N个请求P%的错误率 指标多样:RT值,错误率,线程池参数 熔断 粒度更细:可指定调用者和被调用者服务版本,支持failover、failfast、failback容 错机制。 配置灵活:支持自定义超时时间和重试次数。 可自行定制:通过暴露自定义异常NSFExcetion解决任意业务方法的容错,支持超时、 failover,failfast容错。 容错 微服务框架负责服务之间的调用——熔断与容错 网易分布式事务的实现机制 www.163yun.com 事务发起者、事务参与方 分支事务用事务id做幂等 生成对应分支事务记录 并行调用 定时任务兜底 红色为异常流程 Q:回滚的时候,如果分支事务记录不存在,该 怎么返回? option1:返回成功 option2:返回失败 option3:引入超时判断机制 ✘0 码力 | 39 页 | 3.06 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+服务A 服务B 1 2 移动服务 接入层 v2 v3 v1 重要原则 幂等、接口可重入 接口规范化(命名、类型、长度等) 分布式事务,补偿、撤销机制 接口缓存,热数据尽可能前置 DB跟随服务 代码、逻辑、结构等都要适时重构 最终架构[简版] 移动后台打散,界限趋于不明显 极大消除冗余,三级两层划分 -------Joe Armstrong 关键点 分而治之,缩小竞争面 加速资源交换,更快响应 共享资源串行操作 数据一致性(脏读,丢失更新等) 业务纵向拆分,化整为零 资源拆分,横向扩展 cache,index,partition parallel non-blocking sync、lock,cas 额度、库存、积分、优惠券… CAP 数据竞争� [sql方案示例] 分布式队列(报警系统) 合并降级 报警队列 活动监控 活动队列 报警策略 系统异常 基础策略 监控统计 业务节点 业务数据 业务数据统计 监控 数据流 系统统计 经典流式计算架构,流水线策略,线性扩展 高性能监控核心,灵活的监控策略 关键词模式、上下文模式、时间窗口模式等 轻量、高效、稳定,0侵入 日志监控平台 微信 微信/邮件/短信 高可靠,高响应 高性能 灵活配置0 码力 | 42 页 | 19.96 MB | 1 年前3
海量用户推送后台系统架构实践-曾振波RabbitMQ, RocketMQ • 模块间解耦 • IDC数据同步 • 异步RPC • ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行 极光推送后台系统架构 03 MQ Segment LevelDB(PIKA), 定制化 极光推送后台系统架构 04 程序及系统优化 • 内存 • 静态分配 • 内存池 • 内存对齐 • CPU Affinity • 网卡多队列 • 用户态协议栈(DPDK) 极光推送后台系统架构 05 基础组件服务化 • 业务方透明 • 统一管理 • 屏蔽后端变化 • AutoScale,Failover,AutoRecover • JMQ PushTask XPNS MQ MQ IDC6 Conn 系统安全 • 网络安全 • 对外业务隔离,异地多机房部署,健康检查,业务快速部署及调度 • 通信安全 • SSL,私有加密协议 • 服务安全 • 安全校验,异常行为识别,过载保护,白名单/黑名单,服务降级 • 监控及告警 • 多维度监控,告警系统 极光推送后台系统架构 08 K8S部署业务 • 原有系统的运维工作繁杂,资源利用率低0 码力 | 23 页 | 1.26 MB | 1 年前3
QCon北京2018-《美团配送系统架构演进实践》-阴永俊服务化 • 原语层+应用层 v3.0 • 借鉴CQRS + MDM思想 • 生产与应用独立建模 快速起量,系统质量、研发效率问题凸显 运营侧应用 • 提供搜索、权限、审批解决方案,保证扩展性 规模化阶段:可用性建设 研发高压线、月度Case复盘、CaseStudy 故障演练 规避能力 解决能力 线上故障处理SOP 上线规范、扩容流程、重构流程、CR流程 周巡检/日巡检制度 精细化阶段 美团配送 AI整体布局 Spatial-Temporal Data Mining 、Operations Research 、Machine Learning 智能调度 预测预估 定价机制 轨迹挖掘 智能规划 智能硬件 时间 预估 单量 预估 POI 定位 骑行 导航 供需 平衡 弹性 研究 配送 范围 站点 规划 订单 指派 路径 规划 语音 助手 配送 硬件0 码力 | 31 页 | 15.26 MB | 1 年前3
全球架构师峰会深圳2015/研发体系构建_龚银_中型创业公司的技术管理之痛聚焦,聚焦,集中火力开火 业务优先,区分核心业务,重要性四象限 业务先行,基础建设适当的平衡和取舍,一步一步来 重视规划和系统思维的作用,根据现状随时调整轻重缓急 充分的沟通机制和反馈机制,让大家都能有一致的理解 聚焦与系统思维 技术和管理比重随时调整和平衡 技术、业务和管理的平衡 技术管理者大多对技术热衷,对管理忽视 技术、业务、系统花费精力和时间太多,团队管理精力太少 观念和思维的碰撞,不同文化不同背景快速聚集带来的必然摩擦 不就是这里改一下么,不就是流程调整一下么? 沟通、沟通、沟通、无他 不同的对象,沟通方式不一样,灵活处理,使用不同的技巧 沟通只是第一步,形成固定机制,落实并执行才最重要 Motivation 正确的激励导向,使团队快乐 需要的素质和「心得」 需要的素质 指得了路 扛得了枪 吃得了苦 卖得了萌0 码力 | 36 页 | 2.49 MB | 1 年前3
共 23 条
- 1
- 2
- 3













