课程简介
随着互联网的发展,很多大型网站或系统要处理海量的用户访问,需要解决高并发、高可用和由此带来的数据一致性问题,这也使得大家把大部分精力都用在了解决这些问题上面。我把这些问题称为“显性问题”,因为如果解决不好,会造成系统宕机,用户体验受损,给企业带来严重损失,大家都能意识到这种问题很重要。解决的思路通常有两个:第一,利用分布式系统的特性,不断地分拆,把大系统拆小,降低风险,各个击破;第二,小步快跑,快速迭代,设计不合理没关系,可以不断重构,不断发布新版本。
但还有一类问题是“隐性问题”,是指系统的可重用性、可扩展性、可维护性等。因为一个系统由于设计得不好导致研发人力的投入和时间成本的增加,往往是没有办法显式地衡量的。可能不是系统设计得不好,而是业务本身就很复杂,又或者各部门之间的沟通协调问题,所以导致开发效率低。再说,即使系统设计得不好,做新功能有沉重的历史包袱,还能通过加班加点解决。但其实“隐性问题”比“显性问题”影响更大,因为它会让技术拖业务后腿,当有新需求的时候,系统无法跟随业务快速变化。
本课程希望同时深入讨论这两方面问题,从而打通技术和业务的任督二脉。
目标收益
(1) 对高并发、高可用系统的设计,形成一个方法论。
(2) 对业务建模、DDD,形成一个直观认识,可以落地
(3) 对架构体系形成一个宏观把握,帮助自身职业生涯更上一步。
(4) 对产品、业务、技术的分工与协作,有更清楚的认识。
培训对象
开发大型网站、大型后台系统的软件架构师、技术Leader、程序员、产品经理;管理多个研发团队的技术负责人
该培训对于开发以下类型系统特别有帮助:
1、用户访问量大,高并发、高可用系统
2、业务逻辑特别复杂
3、研发团队规模特别大,上千人
课程大纲
引子 |
面对大型系统,经常会遇到2类技术人员和团队: (1)技术功底不错,但不懂业务,导致系统边界混乱、团队分工不明确、接口设计不合理、系统难理解;(2)懂业务,但技术不够,无法很好处理高并发、高可用、性能等问题。 该课程希望重点来讨论这2类问题,最终把业务和技术很好的融合起来,从而让大家形成一个完整的知识体系 |
第一单元 高并发问题 |
该单元介绍高并发问题的经典解决方案:1. 高并发读 (1)缓存 (2)并发读 (3)重写轻读 2.高并发写: (1)数据分片 (2)任务分片 (3)异步 (4)批量 (5)串行化 + 异步IO |
第二单元 高可用问题 |
该单元介绍高可用问题的经典解决方案: (1)多副本。鸡蛋不要放在一个篮子里。 (2)隔离、限流、熔断、降级 Netflex的Hystrix,阿里的Sentinel (3)灰度发布、回滚 (4)监控体系:资源监控、系统监控、业务监控 |
第三单元 分布式事务 |
该单元介绍分布式事务的经典解决方案: (1)2PC (2)最终一致性(消息中间件) (3)TCC (4)事务状态表+调用方重试+接收方幂等 (5)对账 (6)妥协方案:弱一致性+基于状态的补偿 (7)妥协方案:重试+回滚+报警+人工修复 |
第四单元 一致性算法(Paxos/Raft/Zab) |
该单元介绍经典的3种一致性算法以及业界的一些产品: 1.Paxos算法 腾讯的PhxPaxos、PhxSQL、PaxosStore 阿里的AliSQL X-Cluster、X-Paxos MySQL的MGR Google的Chubby 2. Raft算法 阿里的RDS(Relation Database Service) etcd TiDB 百度开源的bRaft 唯品会的VDL 3. Zab算法 Zookeeper |
第五单元 业务架构思维 |
从需要分析到业务建模的常用思维模式: (1) 分层 (2) 边界思维 (3) 系统化思维 (4) 利益相关者分析 (5) 非功能性需求分析(以终为始) (6) 视角(架构4+1/5+1视图) (7) 抽象 (8) 建模 (9) 正交分解 |
第六单元 DDD |
通俗的阐释DDD: (1)各式各样的方法论 (2) 为什么要“领域驱动” (3)“业务流程”不等于“系统流程” (4) 为何很难设计一个好的领域模型 (5) 领域驱动设计与微服务架构的“合” (6) 领域驱动设计与读写分离(CQRS) |
第7单元 技术架构与业务架构融合 |
技术架构与业务架构融合设计 (1) 软件开发生命周期 (2) 草图与概念图 (3) 领域模型设计 (4) 4+1视图 (5) 微服务拆解 (6) 走查与反向修正 |
第8单元 团队管理 |
1. 管项目 2. 管业务3. 管人 1. 项目管理 如何推动项目按时、按质完成 2. 业务管理 如何达成业务目标 3. 团队管理 团队培养与团队规划 |
引子 面对大型系统,经常会遇到2类技术人员和团队: (1)技术功底不错,但不懂业务,导致系统边界混乱、团队分工不明确、接口设计不合理、系统难理解;(2)懂业务,但技术不够,无法很好处理高并发、高可用、性能等问题。 该课程希望重点来讨论这2类问题,最终把业务和技术很好的融合起来,从而让大家形成一个完整的知识体系 |
第一单元 高并发问题 该单元介绍高并发问题的经典解决方案:1. 高并发读 (1)缓存 (2)并发读 (3)重写轻读 2.高并发写: (1)数据分片 (2)任务分片 (3)异步 (4)批量 (5)串行化 + 异步IO |
第二单元 高可用问题 该单元介绍高可用问题的经典解决方案: (1)多副本。鸡蛋不要放在一个篮子里。 (2)隔离、限流、熔断、降级 Netflex的Hystrix,阿里的Sentinel (3)灰度发布、回滚 (4)监控体系:资源监控、系统监控、业务监控 |
第三单元 分布式事务 该单元介绍分布式事务的经典解决方案: (1)2PC (2)最终一致性(消息中间件) (3)TCC (4)事务状态表+调用方重试+接收方幂等 (5)对账 (6)妥协方案:弱一致性+基于状态的补偿 (7)妥协方案:重试+回滚+报警+人工修复 |
第四单元 一致性算法(Paxos/Raft/Zab) 该单元介绍经典的3种一致性算法以及业界的一些产品: 1.Paxos算法 腾讯的PhxPaxos、PhxSQL、PaxosStore 阿里的AliSQL X-Cluster、X-Paxos MySQL的MGR Google的Chubby 2. Raft算法 阿里的RDS(Relation Database Service) etcd TiDB 百度开源的bRaft 唯品会的VDL 3. Zab算法 Zookeeper |
第五单元 业务架构思维 从需要分析到业务建模的常用思维模式: (1) 分层 (2) 边界思维 (3) 系统化思维 (4) 利益相关者分析 (5) 非功能性需求分析(以终为始) (6) 视角(架构4+1/5+1视图) (7) 抽象 (8) 建模 (9) 正交分解 |
第六单元 DDD 通俗的阐释DDD: (1)各式各样的方法论 (2) 为什么要“领域驱动” (3)“业务流程”不等于“系统流程” (4) 为何很难设计一个好的领域模型 (5) 领域驱动设计与微服务架构的“合” (6) 领域驱动设计与读写分离(CQRS) |
第7单元 技术架构与业务架构融合 技术架构与业务架构融合设计 (1) 软件开发生命周期 (2) 草图与概念图 (3) 领域模型设计 (4) 4+1视图 (5) 微服务拆解 (6) 走查与反向修正 |
第8单元 团队管理 1. 管项目 2. 管业务3. 管人 1. 项目管理 如何推动项目按时、按质完成 2. 业务管理 如何达成业务目标 3. 团队管理 团队培养与团队规划 |