电商消息系统架构演进&mdash0 码力 | 22 页 | 12.22 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔同程艺龙 ⾃自我介绍 搜索故障 微信⼩小程序 API⽹网关 资源1 搜索引擎 统⼀一资源⽹网关 资源2 资源3 资源4 …… 资源4 ⼤大量量超时 统⼀一资源⽹网关 搜索引擎 API⽹网关 ⼤大量量请求超时 缺乏熔断设计 交易易故障 第三⽅方⽀支付 ⽀支付中⼼心 ⽀支付回写 消息队列列 ⽀支付通知 交易易中台 ⽀支付时限任务 出票处理理 队列列故障 已⽀支付订单被取消 指标聚合查询 熔断降级计算(Flink) ⽇日志中⼼心 KAFKA 数据采集、计算、存储 指标(HBase) 指标明细(ES) 降级⽇日志(ES) ETL 指标计算(Flink) 脚本引擎 查 询 服 务 ⽇日志数据 指标(Redis) 业务异常数据快照(ES) 熔断降级通知 降级服务管理理 故障代码注⼊入 降级服务注册设计 serviceA serviceB 本地多队列列轮循,数据缓冲,合并异步发送 指标如何计算处理理 数据采集 KAFKA ETL 复合指标 ⾃自定义指标 系统指标 业务指标 指标脚本计算 指标规则计算 指标脚本 规则表达式 熔断 降级 条件 计算 降级消息 数据 存储 实时告警 规则配置 开发 ⽇日志解析规则 控制中⼼心 ETCD 降级服务 降级处理理 流处理理集群(Flink) HBase ES Redis 落地存储 数据服务0 码力 | 26 页 | 18.67 MB | 1 年前3
高性能高可用机票实时搜索系统⾼性能⾼可⽤机票实时搜索系统 去哪⼉⺴ 梁启康 议题 系统诉求 海海量量数据 设计思路路 搜索框架 报价引擎 待解问题 系统诉求 • 全⽹网价最低 • 航线报价最全 • 实时性最好 • 产品最丰富 • 预定最流畅 ⾯面临问题 航班舱位时刻变动 供应商规则调整密集 航司政策各有不不同 供应商的office权限不不⼀一致 运价规则变化繁多 GDS数据成本不不菲 • ⼀一个巨⼤大的哈希表 • 响应所有渠道价格变动进⾏行行计算 • 快 • 0 变价 设计思路路 CAP BASE 理理论 按需计算 消息驱动 异步 分布式 分级缓存 ⽆无状态 搜索框架 PriceMerger 报价引擎 供应商直连 旗舰店 CacheManager 抓取 App WWW Touch 分销 Cache Redis MQ MQ 航班数据 运价数据 尽量量⽤用原⽣生数据类型,编码 • 回数⽐比例例,异步搜索更更新 • 分批回数 • ⼀一致性哈希,负载均衡 • 供应商粒度,主动更更新 报价引擎 供应商规则 航司运价 航班舱位状态 套餐搭售 + + 低价特惠 商旅优选 头等舱 。。。 报价引擎—供应商规则 报价引擎 • 背景 • 供应商定价规则、航班舱 位、运价,决定底价 • 供应商数千,不不少供应商 上千万条规则 • 定价规则按供应商分库0 码力 | 26 页 | 1.94 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道大规模分布式系统架构下调测能力构建之道 李鑫 大纲 分布式环境下开发的调测效率问题 应对之道 远程应用服务 契约测试 分布式消息服务 分布式缓存 分布式服务的“租户”隔离策略 总体调测框架实践 分布式环境下调测方法论 单体应用 服务化 微服务 小中型规模应用+小型团队 中大型规模应用+多团队协同 Cache DB NFS Load Balancer 行功能/接口 调测存在如下困难: 开发依赖重 联调成本高 变动把控困难 拆 应用拆分 数据拆分 团队拆分 分布式服务 API Gateway 分布式文件 分布式缓存 分布式消息 DB Cluster 连接 序列化 路由 负载均衡 … 问题示例 1. 我依赖一个远程服务,但在负责它的团队把它上线之前,我什 么也做不了 2. 我负责的功能依赖一堆的远程服务,为了本地调测,我必须从 我和其他团队共用一套分布式缓存服务,为了防止数据覆盖, 我只能和别人轮流排队上线调试,我等了一天,结果只能用一 个小时。 6. 我写了个消息Consumer,布到线上准备测测,结果,别人的消 息先到了,一下把我的预置数据全搞乱了… 7. 我的开发机性能还行,我想自己装一套依赖环境提高开发调测 效率,结果消息服务、缓存服务、服务框架装完一启动,80% 的系统资源就没有了,想想还有一堆的应用服务还没装,直接 泪崩… 80 码力 | 19 页 | 2.74 MB | 1 年前3
分布式 KV 存储系统 Cellar 演进之路HASH Key 桶号 存储节点 固定HASH算 法 固定数目 数据分片 桶->存储节点 对照表 Cellar起源—Tair架构 服务层 请求 mdb 响应 ldb fdb rdb 引擎层 迁移 复制 • 中心化集群问题 • 可用性问题 • 性能问题 • 运维问题 Cellar起源—Tair问题 Cellar起源 架构升级 性能优化 可用性优 化 可运维性 Cellar 分片1复制 客户端 分片1&2 log Cellar—异地容灾 • 多机房建设 网络延迟大 专线稳定性差 • 异地容灾需求 跨集群数据同步 Cellar—异地容灾 集群节点同步 消息队列同步 复制延迟 低 高 系统复杂度 低 高 运维成本 低 高 实现难度 高 低 扩展性 低 高 • 低延迟 • 低复杂度(运维成本) Cellar—异地容灾 • Cellar起源 请求超时抖动 Cellar—服务可用性提升 Cellar—无损数据迁移 数据迁移的问题 • 迁移速度不可控,易影响业务请求 • 路由表更新瞬间请求失败 • key级别迁移写入,引擎压力大 节点状态指标 • 引擎压力 • 网卡 • 队列 • QPS • ··· Cellar—无损数据迁移 智能调速+全程代理 A节点 B节点 桶2 桶1 客户端 桶4 桶4 桶1 桶3 迁移数据0 码力 | 34 页 | 1.66 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造3 8 1 5 16 14 2 8 5 5 4 5 3 16 13 1 5 2 3 2 5 3 10 10 4 服务B 服务C 服务D 已可视化 遗留留系统拆解给⻜飞⾏行行中的⻜飞机换引擎 友谊第⼀一 ⽐比赛第⼆二 降⻰龙⼋八步第⼀一式 ⽤用户 订单 商品 第⼀一式: 1. 明确要拆解的服务所涉及 的模块 2. 验证之前代码依赖分析和 数据库分析的结果 3. 不不依赖其他模块数据库等,减少改造⼯工作量量 3. 遗留留系统中还会包含前端代码和存储过程,也需要通过代码依 赖分析和数据库依赖分析进⾏行行拆解 4. 服务间依赖不不⼀一定只有REST API,可以通过异步消息、数据 冗余等⽅方式,根据实际情况进⾏行行选择 5. 部署新微服务后,推荐让新⽼老老系统并⾏行行⼀一段时间,通过分流让 少部分流量量进⼊入新微服务,确保改造更更加安全 总结 C4模型 领域驱动设计0 码力 | 54 页 | 3.85 MB | 1 年前3
唯品会调度系统的前世今生高可用和分布式功能 功能单一,只支持Java,不支持 Shell(PHP)和消息驱动的作业调度 对任务超时、任务执行情况、监控逻辑 支持粒度功能较单一或缺乏 没有容器化选型? 调度产品的定位 简易开发、简单维护 高可用、分片并发处理、资源调度动态平衡 支持Java、Shell以及本地模式(VIP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn Saturn 开源地址: Github.com/vipshop/Saturn 体系中的定位 服务化框OSP 开发框架Venus 唯品会基础架构体系 消息队列 VMS 全链路监控 Mercury 统一日志平台 dragonfly 任务调度平台 Saturn 统一配置中心 CfgCenter 统一鉴权中心 AuthCenter 服务网关 Janus 安全管理平台 Salus Running Stopping Stopped 启用 触发(手工, 时间或消息) 停用 执行完成 停用 执行完成 作业状态变迁 内部系统集成 ZK 执行结点 Job A Job B 作业调度器 控制台UI 消息系统 控制、调度结果下发 作业控制 结点监听 作业调度 执行日志 监控日志 日志查询 消息订阅 告警信息 执行结果 统一认证 架构体系 部署模型(跨机房)0 码力 | 58 页 | 5.40 MB | 1 年前3
美团点评旅游推荐系统的演进•有啊商城的开发 •2010年毕业于中科院计算所 Outline •美团点评酒旅业务简介 •基于用户画像的召回策略演进 •基于L2R的排序策略优化 •从海量大数据的离线计算到高并发在线服务的推荐引擎架构设计 •推荐在美团点评酒旅的应用实践 人工智能应用 Critical Physical World Critical Digital World Non-Critical Digital Underfiting >期望目标值 接近或略逊于训练集 合适 >期望目标值 远差于训练集 Overfiting 模型调试 模型Debug工具 从海量大数据的离线计算到高并 发在线服务的推荐引擎架构设计 猜你喜欢 筛选扩大召回 详情页推荐 搜索少/无结果推荐 …. 应用 场景 层 推荐 服务 层 召回 过滤 排序 POST Rerank 分流 日志收集 Thrift 接口 核心 • 通用过滤策略:黑名单 • 针对某类召回策略:浏览未购买 • Rerank:个性化排序 • Post Rerank 推荐引擎 API 推荐服务 APP 召回 过滤 Rerank Post Rerank Rerank服务 Merge 推荐引擎-Rerank Feature List Feature Config Model File 模型及特征配置中心 Strategy0 码力 | 49 页 | 5.97 MB | 1 年前3
海尔实时计算平台技术选型与实践上图摘自confluent官网 Flume适合: • 日志收集 • 日志传输 • 拦截数据 消息队列适合: • 消息持久化 • 解耦 推荐:Flume+ 消息队列 为何要引入消息队列 消息队列可选方案 • Kafka • Jafka • RocketMQ • RabbitMQ • ActiveMQ • Apollo 消息队列使用场景及选型 事务可靠性场景(ActiveMQ/RabbitMQ/RocketMQ):0 码力 | 41 页 | 3.21 MB | 1 年前3
数字货币交易系统架构 Python实现 黄毅TPS, 延迟10ms • 能睡个好觉(数据持久化,数据最终一致性,容错) • 设计简单,运维方便 交易系统架构设计-关键点 • 内存撮合服务的状态持久化和高可用 • 消息处理顺序的保证 • 异步服务之间消息传送的可靠性 • K线:实时的分组聚合操作 • 高效利用关系数据库 交易系统架构设计-架构图 撮合 资金清算 行情推送 K线计算 历史成交 订单状态 PG Redis 交易系统架构设计-撮合服务 • C++实现的Redis Module • 复用Redis本身的aof持久化和replication • 撮合结果直接输出到本地的redis stream(无需主动发送消息给其他服务) • 下游任务订阅redis stream $ redis-cli > ob.limit b{btc_usdt} * 10000 buy 1 10000 88181047656742912 1571408580000 “[9000,9000,9000,9000,1]” 交易系统架构设计-redis stream • Kafka-like • 一个订阅者的情况,消息有序 • Consumer group负载均衡(不保证消息顺序) • 可以批量处理消息 • 在同一个事务中存储处理结果和更新消费offset $ redis-cli > xread block 60 count 100000 streams0 码力 | 24 页 | 799.65 KB | 1 年前3
共 26 条
- 1
- 2
- 3













