高可用分布式流数据存储设计-李玥Powered by United Stream Store Streaming Connector Distributed Application Coordinating Service Binlog Replication 挖坑填坑 带你 废话少说 HOW 性能 计算机到底有多快? CPU 3 GHz 内存 20 GB/s SSD 1 GB/s 1 ns 6, 000 React框架 流程拆分 减少锁:CAS原语 减少锁等待: 读写锁, 细粒度锁 写⼊入数据流程 IOThreads 接收请求 Requests Queue WriteThread 处理理 FlushThread 刷盘 ReplicationThread 发送复制请求 IOThreads 收到复制响应 Pending Callbacks ResponseThreads0 码力 | 36 页 | 6.02 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造代码图 组件图 已可视化 ⽤用户画像和旅程系统功能⽤用户可视化 ⽤用户画像 ⽤用户旅程 已可视化 突出⽤用户信息,诉求和价值体现 还原业务场景 可视化的划分遗留留系统 领域驱动设计、事件⻛风暴暴⼯工作坊、服务画布 好的设计 低耦合 如果做到了了服务之间的松耦 合,那么修改⼀一个服务就不不 需要修改另⼀一个服务。⼀一个 松耦合的服务应该尽可能少 地知道与之协作的那些服务 的信息。 的⾏行行为,最好只在⼀一 处修改。 领域驱动设计 ‣领域驱动设计是⼀一种处理理⾼高度复杂域的设 计思想,试图分离技术实现的复杂性, 围 绕业务概念构建领域模型来控制业务的复 杂性,以解决软件难以理理解,难以演化等 问题。团队应⽤用它可以成功地开发复杂业 务软件系统,使系统在增⼤大时仍然保持敏敏 捷。 事件⻛风暴暴⼯工作坊 - Event Storming是⼀一种领域建模的实践,是⼀一种快速 ‣开放空间:有⾜足够的空间可以将事件流 可视化,让⼈人们可以交互讨论 ‣彩⾊色即时贴:⾄至少三种颜⾊色 活动准备 寻找领域事件 事件⻛风暴暴 命令⻛风暴暴 寻找聚合 划分限界上下⽂文 什什么是事件? 为什什么⽤用事件? 如何进⾏行行事件⻛风暴暴? 事件:领域专家关⼼心的,在业务上真实 发⽣生的事 例例1: 客户订单已提交 例例2: 对账已完成,每⽉月末夜间触发 1. 确定要进⾏行行事件⻛风暴暴的业务场景,场景需要单0 码力 | 54 页 | 3.85 MB | 1 年前3
唯品会调度系统的前世今生缺乏分布式处理 无法合理利用机器资源 难以问题追踪 选型对比 Crontab Quartz Linux系统级的定时任务执行器 缺乏分布式运算和集中管理功能 无法做到高可用 TBSchedule Elatic-Job Java事实任务标准 关注点在定时任务而非数据, 缺少分布式并行调度的功能 阿里早期开源的分布式任务调度系 统,代码略陈旧 作业类型较单一,只能是获取/处理 数据一种模式 功能单一,只支持Java,不支持 Shell(PHP)和消息驱动的作业调度 对任务超时、任务执行情况、监控逻辑 支持粒度功能较单一或缺乏 没有容器化选型? 调度产品的定位 简易开发、简单维护 高可用、分片并发处理、资源调度动态平衡 支持Java、Shell以及本地模式(VIP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn 开源地址: Github.com/vipshop/Saturn 更多。。。 超时控制 多ZK集群支持 监控体系 手动触发 批量处理 强行终止 Dashboard … 为什么需要容器化 资源利用 提高物理资源的 利用率 系统弹性 资源弹性伸缩 运维效率 上线周期、峰值 应对 作业隔离 不同业务间作业 隔离 容器化的调度系统选型 开源程度 场景切合(秒级调度) 异构体系 管理成本 长驻处理? 使用后销毁? 物理资源层: Mesos / VM0 码力 | 58 页 | 5.40 MB | 1 年前3
领域驱动设计&中台/物联网平台的反应式设计“color”: “RED”, “state”: “ON” } }, “version”: 12 } 设备影⼦子处理理逻辑 Devices MongoDB Replica Redis Cluster EMQ Node NodeX IoT Applications FindShadow SetDesired 每次局部业务更更新都需要 重新部署整个集群 • 局部业务性能瓶颈,弹性 扩容所有业务 • 加锁处理理资源竞争,增加 性能消耗 微服务 事件驱动 我们做了了什什么 EVENT STORMING EVENT STORMING 核⼼心 通⽤用 ⽀支撑 DeltaSyncService 事件驱动 Devices MongoDB Replica EMQ Node NodeX0 码力 | 18 页 | 1.81 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕Ø 高可用系统的最佳实践总结 无状态分布式系统的高可用问题 处理消息的服务节点可以随机选择 不必处理数据复制和同步的问题 系统容量和高可用能力可以同步提升 服务节点可以随意迁移,不必固定 IP 和存储 有状态分布式系统的高可用问题 一致性 可用性 分区容错性 Paxos Raft 2PC Gossip Ø 处理请求需要特定节点 Ø 必须要考虑数据备份和同步 的问题 Ø 容量扩展和高可用需要不同 Controller观察特定领域的 系统状态 Ø 协调Desired State跟 Realized State之间的差 距,维持最终一致性 Ø 定期处理集群中的事件 Ø 系统必须是幂等的 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假0 码力 | 44 页 | 2.47 MB | 1 年前3
领域驱动设计&中台/架构分层模型适配灵活易易使⽤用的API 技术点: 性能,事务,分布式,安全等⾮非功能性需求 API服务 ⼯工作内容: • 接收外部请求并响应: 如HTTP请求, 消息处理理 • 事务管理理 • 认证 • 缓存 • ⽇日志 • 异常处理理 • 配置 • Session 技术⼈人员关注的层 腐化案例例: ⼤大量量业务逻辑堆积 模型: • View Object • Resource 腐化案例例: 亏空 ⼤大量量技术术语业务⼈人员完全看不不懂 模型: • 应⽤用服务 — 跨Bond Context DTO • 领域服务 — 跨聚合 • 聚合 实体 仓库 事件 DDD分层参考架构 访问外界系统(调⽤用外界系统)的技术相关实现。 前端应⽤用 API服务 业务领域 基础设施 ⼲干系⼈人: 外界系统 诉求: 稳定调⽤用外部系统 技术点: 使 学习和使⽤用外部系统,如数据库,邮件系统 • 适配外部系统模型,如SQL映射到模型对象 技术⼈人员关注的层 基础设施 腐化案例例: 业务逻辑和外部调⽤用逻辑混合 如⼀一个⽅方法⾥里里即处理理业务逻辑⼜又调⽤用SQL 模型内容: • PO • 第三⽅方Protobuffer • 第三⽅方SDK DDD分层参考架构 — Java技术视⻆角 前端应⽤用 API服务 业务领域0 码力 | 39 页 | 2.54 MB | 1 年前3
QCon北京2018-《美团配送系统架构演进实践》-阴永俊快速起量,系统质量、研发效率问题凸显 运营侧应用 • 提供搜索、权限、审批解决方案,保证扩展性 规模化阶段:可用性建设 研发高压线、月度Case复盘、CaseStudy 故障演练 规避能力 解决能力 线上故障处理SOP 上线规范、扩容流程、重构流程、CR流程 周巡检/日巡检制度 诊断能力 预防能力 流程建设 系统建设 故障管理平台 应急管理平台 四层监控体系、业务大盘、APP大盘 Cat监控平台、MTrace、端到端日志分析 坐标流、导航路径、空间索引 能力 打磨各类位置与导航策略场景 导航 算法特征 效果验证 产品技术创新驱动业务发展 精细化阶段:仿真平台 目标:构建线下模拟沙盘 思路:基于线上真实数据对配送全流程构建模拟场景,并对事件、数据模拟 仿真报告可视化 产品技术创新驱动业务发展 精细化阶段:特征平台 版本管理:缩短实验周期,灵活配置实验规则 实时特征:特征准实时加工、离线特征实时转化 离线特征:特征快速开发、验证、上线能力0 码力 | 31 页 | 15.26 MB | 1 年前3
领域驱动设计&中台/如何让DDD落地管理理员会收到出库请求,进⾏行行配货并发货。同时,买家可以查看物流状态以 及确认收货。 事件⻛风暴暴的结果 事件⻛风暴暴得到的命令和事件就没⽤用了了吗? 订单 已创建 库存 已锁定 提交 订单 ⽤用户 SubmitOrderCommand OrderCreated StockLocked 订单聚合创建订单服务 接收 仓库聚合的事件订阅者 仓库聚合锁定库存服务 发送 LockStockCommand 单API适配器器 3.创建订单服务收到命令后,会把创建订单命令转换成订单,然后调⽤用订单仓库进⾏行行 保存,保存成功后会让事件发布器器发布订单已创建事件 4.事件发布器器会根据事件类型把订单已创建事件转发给商品库存订阅者, 5.商品库存订阅者收到事件以后会根据事件中的商品ID和订单数量量创建锁定商品库存 命令,然后给锁定商品库存服务进⾏行行库存锁定 6.锁定商品库存服务收到命令后,会把根 锁定商品库存服务收到命令后,会把根据命令中的商品ID从商品库存仓库中获取商 品库存,然后根据让商品库存锁定订单数量量,之后调⽤用商品库存仓库进⾏行行保存,最后 让事件发布器器发布商品库存已锁定事件 ……. 领域故事中的主要对象 领域对象 类型 命名 订单API控制器器 Adapter OrderController 创建订单命令 Command CreateOrderCommand 创建订单应⽤用 ApplicationService0 码力 | 32 页 | 3.25 MB | 1 年前3
领域驱动设计&中台/用状态机封装领域逻辑请扫我微信以便当场转账 加微信时烦告知尊姓大名 状态 入口动作和出口动作 entry:进入时必须执行 exit:离开时必须执行 逻辑进一步内收 迁移 迁移的结构和执行顺序 1. 当前状态是否能接受事件 2. 警戒条件 如果为真 3. Exit:先子后父 4. Action和Message 5. 改变状态 6 . Entry:先父后子 测试 答对问题有奖金 金额从2.56元到200 码力 | 30 页 | 1.75 MB | 1 年前3
领域驱动设计&中台/演进式架构的平台化落地component component component component component 分层单例例架构 微内核与插件架构 std std std std std std 事件驱动架构 Broker Meditator 微服务架构 checkout module module database ship module module database0 码力 | 42 页 | 2.95 MB | 1 年前3
共 26 条
- 1
- 2
- 3













