高可用与一致性:构建强一致性分布式数据库 TiDB-沈泰宁构建强⼀一致性分布式数据库 TiDB 沈泰宁 R & D Engineer @ PingCAP ⾃自我介绍 ⾃自我介绍 • 沈泰宁 • R&D Engineer @ PingCAP • Maintainer • rust-prometheus • grpc-rs • … ⽬目录 • What is TiDB? • How to test? What is TiDB? Single0 码力 | 45 页 | 4.63 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕要在领域内 自己实现 如何设计好状态机和自愈协议? Writing Correct Software Is Hard! Math and Thinking Can Help Us! Ø TLA+ 是用来给(软件或硬件)系统建模的语言 Ø TLA+ 强调排除特定编程语言(软件或硬件)的影响验证系 统设计 Ø TLA+ 由 Paxos 协议的发明人 Leslie Lamport 发明 使用 Networking Data 启动异常 进程被杀 服务器假死 断电 启动异常 超卖 进程死锁 负载均衡失效 业务线程池满 监控错误 流控不合理 心跳异常 缓存热点 缓存限流 数据库热点 数据库宕机 数据库延迟 CPU 抢占 内存抢占 内存错乱 上下文切换 磁盘满 磁盘坏 网络抖动 网卡慢 断网 DNS 故障 系统单点 异步阻塞 依赖超时 内存溢出 不可读写 目录 Ø 分布式系统面临的高可用问题 结果,元数据, 数据,之前的请求 Ø 逻辑正确性不能依赖缓存,写操作服务端必须有校 验而且幂等,没有缓存情况下系统仍可服务 Ø 错误回复缓存,过期时间不能太长,而且有清晰的 修复建议 Ø 数据库更新与缓存失效的策略 最佳实践分享 有关配置文件 Ø 集群使用统一的配置来源 Ø 定义正常的默认配置,满足读取不到配置的正 常运行 Ø 支持可扩展的配置命令格式 Ø 尽量支持更改配置不需要重启服务0 码力 | 44 页 | 2.47 MB | 1 年前3
付钱拉金融云系统架构演进和最佳实践Oracle Nginx keepalived 数据库双机 网络分发层 业务处理 渠道适配器 交易预处理 交易预检查 交易风控 交易路由 通知 响应 查询 通道 交易拆分 业务2.0痛点 BUSINESS 2.0 PAIN POINTS 业务野蛮发展 交易量高速增加 并发请求增加 交易响应速度过慢 数据库单表 数据量剧增 模块耦合度高 开发效率低下 … 线上环境突发事故,第一时间如何决策减少事故影响范围? 开发人员排查问题速度过慢? 随着业务的增长,问题越来越多,第一优先级需要解决什么? 系统突然CPU、内存利用率暴增,如何定位代码? 数据库连接数被耗尽,怎么办? 各种OOM如何预防? 随着系统交易量的增加,高可用系统的设计点很多,如何快速抓住建设要点? 有哪些困惑 WHAT IS THE CONFUSION 需求设计阶段- 首次拦截 APP3 APP1 APP2 APP3 APP1 APP2 APP3 DB 快速响应故障 QUICK RESPONSE FAILURE DB 我们解决了以下系统自身问题 线程数 数据库连接 数- mysql,redis 内存 慢SQL 最后的问题是什么? Java系统常见问题 JAVA SYSTEM FAQ CPU DO NOT FORGET THE BEGINNING0 码力 | 35 页 | 6.05 MB | 1 年前3
联想-贺钢架构工作在国际化项目中的应用实例• 联想电脑管家(PC): guanjia.lenovo.com.cn 国际化项目的一些不同点 • 目标客户不同: 文化习俗, 客户需求, 用户体验… • 要求不同: 各国法律法规(版权,协议,第三方,accessibility), 安全性和隐私… • 地域不同: 服务器的部署, 用户的访问, 组织架构, 团队沟通… 项目实例 -- XA项目背景及需求 • 多设备协作 PC, Mobile redis内存 cache,数据库(Mysql)多台(数据在一个数据中心) 千万到亿 增加Web服务器内存缓存,集群,IP负载均衡,基于内 容请求分发,Mysql优化(如减少写,2/8原则),数据在 一个数据中心 亿以上 增加异地部署(建议核心点集中,其它节点分散开),较 难分割或核心数据在同一数据中心,其它分散到不 同的节点 对架构设计的影响II -- 数据库表设计 数据库表早期设计 ID .0 码力 | 53 页 | 2.36 MB | 1 年前3
从百度文件系统看大型分布式系统设计中的定式与创新搜索基础架构 从百度文件系统 看大型分布式系统设计 自我介绍 • 颜世光, 专注于大规模分布式系统 • 代表作品 - 百度第三代Spider系统 - 百度文件系统BFS - 万亿量级实时数据库Tera - 集群调度系统Galaxy • 个人主页&Blog - https://github.com/bluebore - http://bluebore.cn 提纲 • 百度文件系统简介 分布式软件栈中的BFS The Baidu Stack 网络通信框架Sofa-pbrpc 分布式文件系统 BFS 集群调度系统 Galaxy 分布式协调服务 Nexus 分布式数据库 Tera 分布式计算框架 Shuttle Apps(Spider/Index/Search) 数据中心操作系统(DCOS) • 进程调度&内存管理 - Galaxy - 应用部署和任务调度 分布式系统 - 容忍网络隔离是必须的 - CP、AP Quorum机制 • Quorum写(NWR) - Write 写成功W副本 - Read 读R副本 - W+R>N,就不会丢失更新 • 一致性协议 - Paxos - Raft CAP到CAD的演变 • 必须容忍网络隔离 - CAP->CA • 跨地域的延迟 - CA->CAD/CAL • 多数情况下我们更重视可用性 - CAD->CD0 码力 | 24 页 | 937.45 KB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化Etcd已经在很多分布式系统中得 到广泛的使用。Etcd采用raft协议,来保证一致性。 2.后台服务采用Go开发,围绕业务功能需求,构建后台服务模块 包括个人中心、服务、待办服务、证照服务、公共服务、外部能力、业务办理服务和运营管理服务模块 12、系统部署架构反复评审论证 一、部署架构 1、政务云电子政务外网 :数据库、应用服务 2、政务云互联网区:静态资源、网关 3、互联网区:小程序、云服务 13、安全渗透测试、运维监控 -- 确保系统稳定 一、业务应用上线前必须经过安全渗透测试。 1、在测试环境中扫描出:越权查询、SQL注入、明文传输等,要求整改 2、正式环境检查: 操作系统、数据库、中间件漏洞,建议打补丁 二、运维监控每日 1.采用ELK收集系统日志、监控异常信息 2. 对各业务系统API接口进行状态监控,每日输出报告 14、系统上线、系统截图 粤省事小程序码 目录0 码力 | 35 页 | 15.60 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道单机环境下,可以参考MQ,采用本地File I/O实现的存储机制来mock 。 DataBase SandBox 1.为每个开发人员或测试人员提供一个单独(schema/catalog)的测试数据库。 2.预置数据独立管理,并通过测试框架提供预置数据前置导入及后置清除能力。 逻辑上支持“租户”隔离模式的分布式服务一般对多团队并行开发/调测的支持较好,分布式环境下,一般不会成为工程效率提升 项目各个阶段灵活组合使用各调测手段 总结 介绍了分布式环境下开发调测所遇到的各种效率问题 分布式环境下工程效率提升的应对之道 远程应用服务采用服务mock+直连调测 通过契约测试保障mock数据及协议的可靠性 分布式消息服务的mock实践 分布式缓存的mock实践 分布式存储(File+DB)的“逻辑”隔离策略 调测能力的总体框架及实践展示 分布式环境下调测方法论 Q/A0 码力 | 19 页 | 2.74 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造明确服务包含的数据表 可视化的拆解遗留留系统 微服务架构、绞杀模式、代码依赖分析、数据库依赖分析、 遗留留系统拆解评分表、降⻰龙⼋八步 庖丁解⽜牛拆解的最⾼高境界 了了解⽜牛的⽣生理理构造 避开筋腱⻣骨节交错的组织 从⻣骨节的缝隙下⼿手 ⼗十九年年⼑刀依然锋利利 再看⼀一眼微服务架构 我们要做应⽤用代码拆分 我们要做数据库拆分 绞杀者模式 ‣“绞杀者模式”在既有系统资产的基础上实现数字IT 与Intellij或Eclipse相 结合,实时查看依赖, 指导拆解过程 已可视化 数据库依赖模式 模块A Data Mapper /ORM 相关联但不不属于 模块A的表 模块A Data Mapper /ORM 属于模块A的表 以模块(java包)为基本单位,从数据库依赖的⻆角度看,有两种模式: 属于模块A 的表 扫描数据库依赖 UserMapper.java UserMapper JAVA定义 XML实现 扫描数据库依赖 服务 名 mapp er名 ⽅方法 名 正确 依赖 表名 错误 依赖 表名 ⽤用户服 务 com.xx x.User Mappe r getUse rById USER N/A ⽤用户服 务 com.xx x.User Mappe r getUse rProdu cts User Product 数据库依赖统计表 使⽤用⼯工具0 码力 | 54 页 | 3.85 MB | 1 年前3
ServiceComb 开源微服务框架技术演进之路 巨震proxy proxy proxy • 单体应用 • 业务模块划分 • 程序模块间调用 • 独立应用模块 • 通信:协议、队列 • SDK引用 • 通信:http、 RPC… • 服务治理 • 透明代理 • 通信:通用协议 • 服务治理 • Cloud Native部署 ServiceComb 一个基于SDK的“传统”微服务框架 Service 编程模型 运行模型 通信模型 • Spring MVC • JAX-RS • POJO 服务发现 限流 熔断 负载均衡 跟踪 … OpenAPI • 序列化 • 传输协议 Service Mesh • A service mesh is a dedicated infrastructure layer for handling service-to-service Service Discovery Instance Cache Management Service Center Istio Kubernetes Service Center 多协议支持 HTTP gRPC Other protocols invocation Handler Chain Rate Limiting Load Balancing Fallback0 码力 | 20 页 | 861.58 KB | 1 年前3
领域驱动设计&中台/物联网平台的反应式设计为什什么需要反应式架构 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: { 10 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: { 11 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { “state”: { “desired”: {0 码力 | 18 页 | 1.81 MB | 1 年前3
共 23 条
- 1
- 2
- 3













