付钱拉金融云系统架构演进和最佳实践BUSINESS 2.0 PAIN POINTS 业务野蛮发展 交易量高速增加 并发请求增加 交易响应速度过慢 数据库单表 数据量剧增 模块耦合度高 开发效率低下 … 思考 THINKING 解耦 异步化 扩容 排队 队列 缓存 冷热数据隔离 读写分离 分库分表 容灾 限制 池化 ACK ... 变化 VARIETY adapter oltp db 银行/第三方支付 create new native thread 3.控制select/update/delete/insert的数据级和可变集合的size,避免随着业务增加 内存数据量不可控 4.页面查询不推荐全表查询,查询通过查询条件限制查询条数 5.页面下载条数和下载次数做限制,避免请求过多导致OOM 6.SQL优化目标必须满足range、ref或者consts,不可以是all类型,避免慢SQL 导致连接数耗尽影响业务功能 场景,预防产生死锁 8.代码中不建议使用@Transactional,因为一般业务场景中用不到,它影响数 据库性能并且多个操作可能在并发下导致数据库死锁 9.数据库单表达到一定数据量级需要做分库分表或者冷热数据隔离,避免业 务增加带来的性能问题 10.尽量避免使用全局变量防止并发出现线程安全问题,从而影响业务 11.定时器问题预防 定时器浪打浪情况下,任务重复处理会导致资金风险,建议使用redis避免0 码力 | 35 页 | 6.05 MB | 1 年前3
 高性能高可用机票实时搜索系统• 每秒计算产品数:搜索qps * 航班数 * 供应商个数 * 产品个数 = 1500万 + 设计思路路 • 最理理想的⽅方式 • 所有的报价都实时计算,填充好 • ⼀一个巨⼤大的哈希表 • 响应所有渠道价格变动进⾏行行计算 • 快 • 0 变价 设计思路路 CAP BASE 理理论 按需计算 消息驱动 异步 分布式 分级缓存 ⽆无状态 搜索框架 PriceMerger 商旅优选 头等舱 。。。 报价引擎—供应商规则 报价引擎 • 背景 • 供应商定价规则、航班舱 位、运价,决定底价 • 供应商数千,不不少供应商 上千万条规则 • 定价规则按供应商分库 • 问题 • 供应商规则更更新频繁 • 单次搜索要计算所有供应商规则 • DB读写压⼒力力⼤大 • 舱位状态变化频繁 • 热点航线问题 • 计算量量巨⼤大 报价引擎 索引 — 数据同步 Pipeline Canal 解析 拆分 分配 ⼊入队 CAN-NNG … … … PEK-SHA DataSync Diff ZK 按 供 应 商 分 表 按 航 线 分 表 报价引擎 — 同步系统⾼高可⽤用 DB主 DB备 Canal 主 Canal 备 DataSync DataSync DataSync DataSync DB主 DB备0 码力 | 26 页 | 1.94 MB | 1 年前3
 分布式 KV 存储系统 Cellar 演进之路16年初 基于开源版本研发新一代KV存储系统Cellar • Now Cellar日请求量达万亿级,美团点评最大NoSQL存储 Cellar起源 Cellar起源—Tair架构 路由表 Cellar起源—Tair架构 HASH Key 桶号 存储节点 固定HASH算 法 固定数目 数据分片 桶->存储节点 对照表 Cellar起源—Tair架构 服务层 请求 mdb Cellar起源 • 中心节点架构演进 • 节点高可用和异地容灾 • 服务可用性提升 • Cellar规划 目录 Cellar—中心节点架构演进 • 性能问题 客户端集中获取路由表 • 隔离性问题 中心节点暴露给客户端 单独的路由表获取模块 Cellar—中心节点架构演进 • 可扩展性: 路由查询能力 可线性扩展 • 隔离性: 客户端与中心节点 完全隔离 Cellar—中心节点架构演进 存储节点Failover,越快越好? • 数据补全对业务影响 • 机器宕机五分钟,数据补全两小时 节点升级,先切走流量再操作? • 节点流量只能切到有其他副本的节点 • 升级后的节点缺少升级期间的写入 Cellar—节点高可用 Cellar—节点高可用 • 秒级容灾 无数据迁移 • 节点静默升级 中心节点 A节点 1分片主 2分片备 B节点 1分片备 2分片主 分片1复制 回写增量log 分片2复制0 码力 | 34 页 | 1.66 MB | 1 年前3
 领域驱动设计&中台/演进式架构的平台化落地微服务架构设计 服务地图 设计 API设计 部署架构设计 微服务⼯工程创建 开发 框架 架构 ⻛风格 资源 配置 … 架构演进 服务 关系 分析 代码 质量量 分析 数据 库分 析 领域 模型 分析 运⾏行行资 源管理理 PaaS、 容器云资 源管理理 公共 部分 产品、⼈人 员维护 定义通⽤用 约束条件 定义服务 约束条件 可视化设计 服务地图 关联变更更到需求 数据结构分析- ⽣生产环境脚本导入可视化 领域模型- 基于代码守护的反向可视化 运⾏行行时部署架构可 视化 数据库 状态/版本显⽰示 创建系统 组建团队 我的系统 列列表 团队⼈人员⾓角⾊色 权限维护 外部系统维护 架构约束定 义维护 部署元素维护 代码引入ArchUnit/ log格式入⼿手 框架管理理 代码模版⽣生成 引擎 GIT插件通信 对接DevOps 微服务设计服务 微服务 服务地 图 API 契约 外部系 统 部署架构服务 架构约 束 部署架 构 部署组 件 架构守护 服务 架构 守护 度量量服务 度量量分 析 代码⽣生成引擎服务 依赖 框架模 板 微服务 ⼯工程 码云 U D U D DevOps平台 微服务契约测试平台 Sonar U D D U U D U D0 码力 | 42 页 | 2.95 MB | 1 年前3
 领域驱动设计&中台/可视化的遗留系统微服务改造买家创建订单 2. 商户履履⾏行行订单 订单 商品 1. 订单 2. 商品 3. *** 明确服务的范围 明确核⼼心模型 明确服务包含的数据表 可视化的拆解遗留留系统 微服务架构、绞杀模式、代码依赖分析、数据库依赖分析、 遗留留系统拆解评分表、降⻰龙⼋八步 庖丁解⽜牛拆解的最⾼高境界 了了解⽜牛的⽣生理理构造 避开筋腱⻣骨节交错的组织 从⻣骨节的缝隙下⼿手 ⼗十九年年⼑刀依然锋利利 模块A的表 模块A Data Mapper /ORM 属于模块A的表 以模块(java包)为基本单位,从数据库依赖的⻆角度看,有两种模式: 属于模块A 的表 扫描数据库依赖 UserMapper.java UserMapper.xml JAVA定义 XML实现 扫描数据库依赖 服务 名 mapp er名 ⽅方法 名 正确 依赖 表名 错误 依赖 表名 ⽤用户服 User Product 数据库依赖统计表 使⽤用⼯工具 扫描 UserMapper.xml 已可视化 拆解该从那个服务开始? 业务 复杂度 需求变 化频率 使⽤用 频度 系统集 成关系 数据迁 移量量 代码改 动量量 拆解后 带来的收益 (业务价值) 拆解中的 ⼯工作量量成本 (技术成本) 遗留留系统拆解评分表 业务 复杂度 需求变 化频率 使⽤用频0 码力 | 54 页 | 3.85 MB | 1 年前3
 联想-贺钢架构工作在国际化项目中的应用实例2/8原则),数据在 一个数据中心 亿以上 增加异地部署(建议核心点集中,其它节点分散开),较 难分割或核心数据在同一数据中心,其它分散到不 同的节点 对架构设计的影响II -- 数据库表设计 数据库表早期设计 ID ... Type Name Size Create Date … 1 … 1 1.doc 432437 2014-05-04 … 2 … 1 Test.txt 2849 2014-02-190 码力 | 53 页 | 2.36 MB | 1 年前3
 QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+流量应对策略 04 关于监控 第一部分 宜人贷发展历程 宜人贷发展历程 2011.12 宜人贷成立 2012.3 网站上线 2013.9 移动APP上线 2015.12 纽交所上市 2017 财富管理平台 网贷平台 YEP 业务� 多元化发展� [部分] 网贷平台 财富管理平台 YEP 第二部分 移动后台架构演进 初创阶段 监控 配置 报警 金融产品 Yiri 财富圈 首页 feed 活动中心 微信 WAP 4G 积分商城 ... ... 账户中心 迅速响应业务变化 before after 第三部分 流量应对策略 流量≈并发 更强的machine 更多machine(cap) 限流降级 Concurrency is about dealing with lots of things 抓大不能放小[细节决定成败] 线程阻塞>300 中间件内存管理、线程状态,连接状况 db的io,慢sql,索引,join等 代码review,数据结构,日志 GC TCP连接 第四部分 关于监控 如果没有监控… 盲 人 骑 瞎 马 , 夜 半 临 深 池 监控体系 } zabbix,datagod, prometheus… apm工具,商业产品 期望更轻量、无侵入性的业务监控0 码力 | 42 页 | 19.96 MB | 1 年前3
 大规模分布式系统架构下调测能力构建之道比对结果 CI构建流程 response request 应用服务综合mock能力 在实际应用场景中,应用所依赖的服务往往很分散: 一部分依赖服务从本机的Runtime环境即可获取, 一部分需要从协同团队的远程开发机上临时获取(联调模式), 一部分服务可能还未完成开发并发布,需要通过mock机制进行模拟。 我们需要综合利用前面所介绍的各种调测机制来保障日常开发中对应用服务的正常调测:0 码力 | 19 页 | 2.74 MB | 1 年前3
 全球架构师峰会深圳2015/研发体系构建_龚银_中型创业公司的技术管理之痛吃得了苦 卖得了萌 受得了委屈 个人的几点有效实践 锻炼身体,保持良好的体力和心态 每天写管理日志,如实记录,定期反思 保持学习,每天至少预留30分钟时间思考,30分钟时间学习 定期的一对一会谈 心态、视野、行动 不同公司不同阶段有不 同的关注点和解决方法 ,没有标准答案,思考 并实践,找到最合适自 己的路 文化 管理 组织0 码力 | 36 页 | 2.49 MB | 1 年前3
 从百度文件系统看大型分布式系统设计中的定式与创新数据一致性 • 系统扩展性 • 延迟与吞吐 • 成本与资源利用率 • … 数据与计算的分片 • 哈希分片 - 简单、均衡 - 扩容复杂、易用性差 - 一致性哈希、虚拟节点 • 按范围、数据量分 - 使用简单 - 需要管理元数据 - 中心化与去中心化 元数据管理 • 去中心化 - P2P技术 - 潜在的一致性问题 - 能管理的元数据有限 • 中心化 - 设计实现简单 - Master节点易成为瓶颈 NameServer Cluster 故障容忍 • 设备都是会坏的 - 假设的服务器MTBF是30年 - 搭建一个1万台服务器的系统 - 每一两天就坏一个 • 典型数据中心 - 过热:5分钟内数千台机器宕机 - 供电异常: 500~1000台机器突然消失 - 机架晃动: 几十台机器出现50%丢包 - 交换机故障: 几十台机器突然消失 - 磁盘、单机故障 • 通过冗余应对故障 一个典型的数据处理场景0 码力 | 24 页 | 937.45 KB | 1 年前3
共 17 条
- 1
 - 2
 













