付钱拉金融云系统架构演进和最佳实践
开发人员如何提高代码质量,减少频繁迭代产生的bug? 线上环境突发事故,第一时间如何决策减少事故影响范围? 开发人员排查问题速度过慢? 随着业务的增长,问题越来越多,第一优先级需要解决什么? 系统突然CPU、内存利用率暴增,如何定位代码? 数据库连接数被耗尽,怎么办? 各种OOM如何预防? 随着系统交易量的增加,高可用系统的设计点很多,如何快速抓住建设要点? 有哪些困惑 WHAT IS THE CONFUSION 慢SQL、摘节点、线 程栈和内存堆现场保留 反 向 代 理 反 向 代 理 APP1 APP2 APP3 APP1 APP2 APP3 APP1 APP2 APP3 APP1 APP2 APP3 DB 快速响应故障 QUICK RESPONSE FAILURE DB 我们解决了以下系统自身问题 线程数 数据库连接 数- mysql,redis 内存 慢SQL 最后的问题是什么? 禁止应用中显式创建线程,避免不可控出现unable to create new native thread 3.控制select/update/delete/insert的数据级和可变集合的size,避免随着业务增加 内存数据量不可控 4.页面查询不推荐全表查询,查询通过查询条件限制查询条数 5.页面下载条数和下载次数做限制,避免请求过多导致OOM 6.SQL优化目标必须满足range、ref或者consts,不可以是all类型,避免慢SQL0 码力 | 35 页 | 6.05 MB | 1 年前3高性能高可用机票实时搜索系统
App WWW Touch 分销 Cache Redis MQ MQ 航班数据 运价数据 应⽤用层 聚合层 报价源 基础数据 搜索框架 遇到问题 解决⽅方案 • 报价数量量多,内存问题 • 报价源多,不不稳定 • 响应时间要求苛刻 • 搜索条件有热点 • 缓存报价不不准 • 尽量量⽤用原⽣生数据类型,编码 • 回数⽐比例例,异步搜索更更新 • 分批回数 • ⼀一致性哈希,负载均衡 报价引擎 — ⼩小内存 • String • ArrayList • Range • Date • Integer • Set • byte, byte[] • short, short[] • int, int[] • obj pool 报价引擎 — 性能优化 • 异步、并⾏行行、⽆无锁化 • 剪枝 • 空间换时间 • 缩短对象驻留留内存时间,减少gc次数,优化单机吞吐 • ⽔水平分层,纵向分渠道,良好的扩展性 • 实时计算 + 阶梯式缓存,成本与报价新鲜度的权衡 • 闭环系统 • 索引库数据同步 • 本地缓存的设计,更更新策略略 • 缩减对象内存 • ⼀一致性哈希负载均衡 ⼼心得 • 不不同的业务场景,不不同的特征 • 结合特征去进⾏行行设计和优化 • 通⽤用!=最优 • 量量体裁⾐衣 待解问题 • 开舱发现 •0 码力 | 26 页 | 1.94 MB | 1 年前3降级预案在同程艺龙的工程实践-王俊翔
执⾏行行耗时 异常数据 … JVM内存 JVM线程 GC数据 业务数据 SDK数据 ⾃自定义数据 系统数据采集 容器器数据 CPU数据 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 通过本地⽇日志⽂文件,实时采集降级服务质量量数据 ⽇日志 ⽂文件 系统数据采集 容器器数据 CPU数据 内存数据 磁盘数据 … ⽹网络数据 采集 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 应⽤用数据采集 应⽤用数据 ⽅方法数据 执⾏行行结果 执⾏行行耗时 异常数据 … JVM内存 JVM线程 GC数据 业务数据 SDK数据 ⾃自定义数据 数据通道(⻓长链接单通道) 数据采集 Proxy • 单⼯工直连数据通道 • ⻓长链接,数据流⽅方式实时发送 • 本地多队列列轮循,数据缓冲,合并异步发送 指标如何计算处理理0 码力 | 26 页 | 18.67 MB | 1 年前3大规模分布式系统架构下调测能力构建之道
将mock能力内置到分布式服务框架中 开发mock能力过滤器,在服务调用链路上对服务调用进行挡截。 “开关机制”控制mock能力启停 mock能力启用时,服务容器初始化期间将加载mock数据文件到内存中,每个服务请求将和mock数据的入参定 义进行比对,满足(静态匹配 或动态匹配)规范的请求,直接用mock数据的出参定义作为服务调用的结果。 应用无感知 无需修改应用代码,单元测试代码中也无需添加任何的mock语句。 Topic3-q1 Broker3 … … Consumer1 Consumer2 Consumer3 …. 注册中心 Producer1 Producer2 …. 内存队列1 内存队列2 内存队列3 Selector GroupN Group2 Group1 Consumer1 Consumer2 Consumer3 …. 单机MQ Mock服务 Topic10 码力 | 19 页 | 2.74 MB | 1 年前3海量用户推送后台系统架构实践-曾振波
加快数据访问,减少请求处理时间 • 多级缓存 • 本地缓存 • Redis, Couchbase, LevelDB(PIKA), 定制化 极光推送后台系统架构 04 程序及系统优化 • 内存 • 静态分配 • 内存池 • 内存对齐 • CPU Affinity • 网卡多队列 • 用户态协议栈(DPDK) 极光推送后台系统架构 05 基础组件服务化 • 业务方透明 • 统一管理 • 屏蔽后端变化0 码力 | 23 页 | 1.26 MB | 1 年前3声明式自愈系统——高可用分布式系统的设计之道-王昕
负载均衡失效 业务线程池满 监控错误 流控不合理 心跳异常 缓存热点 缓存限流 数据库热点 数据库宕机 数据库延迟 CPU 抢占 内存抢占 内存错乱 上下文切换 磁盘满 磁盘坏 网络抖动 网卡慢 断网 DNS 故障 系统单点 异步阻塞 依赖超时 内存溢出 不可读写 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法 Ø 设计和验证高可用分布式系统的案例分享0 码力 | 44 页 | 2.47 MB | 1 年前3联想-贺钢架构工作在国际化项目中的应用实例
服务器架构 百万以下 单台或多台的简单架构,可以简单通过升级服务器 配置支持更多用户 百万到千万 增加Nginx(反向代理)或DNS负载均衡,redis内存 cache,数据库(Mysql)多台(数据在一个数据中心) 千万到亿 增加Web服务器内存缓存,集群,IP负载均衡,基于内 容请求分发,Mysql优化(如减少写,2/8原则),数据在 一个数据中心 亿以上 增加异地部署(建议核心点集中,其它节点分散开)0 码力 | 53 页 | 2.36 MB | 1 年前3高可用分布式流数据存储设计-李玥
Application Coordinating Service Binlog Replication 挖坑填坑 带你 废话少说 HOW 性能 计算机到底有多快? CPU 3 GHz 内存 20 GB/s SSD 1 GB/s 1 ns 6, 000 ns 70, 000 ns 1 ms = 1, 000, 000 ns JournalQ有多快? 32, 961, 776 Partition 0 Partition 1 Partition 2 写⼊入: 查找: O(logi) + O(logj) ≈ O(1) O(1) 缓存 Cache File 堆外内存 异步预加载 读写共⻚页 PLRU淘汰策略略 ⾼高并发 ≠ ⾼高性能 减少等待 异步: Future, Callback, React框架 流程拆分 减少锁:CAS原语 减少锁等待:0 码力 | 36 页 | 6.02 MB | 1 年前3QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+
限流: max_connections(db) max_request+max_threads(middleware) 数据竞争� [NoSql方案示例] 内存操作 单线程原子操作 高可用保障 兜底策略 限流、熔断: maxclients(redis) max_request+max_threads(middleware) 多IDC,区域容灾,多ISP 集群,高可用,分片 本地缓存,防刷,流控 终端 域名 机房 LB / NG.. 网关 Cache 服务 抓大不能放小[细节决定成败] 线程阻塞>300 中间件内存管理、线程状态,连接状况 db的io,慢sql,索引,join等 代码review,数据结构,日志 GC TCP连接 第四部分 关于监控 如果没有监控… 盲 人 骑 瞎0 码力 | 42 页 | 19.96 MB | 1 年前3从百度文件系统看大型分布式系统设计中的定式与创新
分布式协调服务 Nexus 分布式数据库 Tera 分布式计算框架 Shuttle Apps(Spider/Index/Search) 数据中心操作系统(DCOS) • 进程调度&内存管理 - Galaxy - 应用部署和任务调度 • 锁和信号量 - Nexus - 分布式锁 - 分布式通知 • 文件系统 - The Baidu File System - 持久化存储0 码力 | 24 页 | 937.45 KB | 1 年前3
共 12 条
- 1
- 2