課程簡介
對于一個互聯(lián)網(wǎng)或者軟件公司,最初通常都是“野蠻生長”,“快速迭代”,“作坊式開發(fā)”,隨著業(yè)務快速發(fā)展和研發(fā)團隊規(guī)模的擴張,慢慢就會出現(xiàn)各種系統(tǒng)問題和團隊協(xié)作問題;對于處在這個環(huán)境下的研發(fā)人員,也往往面臨各種自身成長的困惑,做的工作很多、很雜,但卻沒有形成深入的、體系化的技術能力和方法論。
如果您所在的企業(yè)或者研發(fā)人員正在遭遇以下這些問題的話,那么這么課程將會是你的最佳選擇:
? 系統(tǒng)性能低下,不能很好的解決海量用戶的訪問
? 系統(tǒng)不穩(wěn)定,時常出故障
? 系統(tǒng)耦合嚴重,團隊之間各種扯皮,協(xié)同困難
? 研發(fā)效率低下,開發(fā)速度跟不上業(yè)務發(fā)展
? 研發(fā)團隊做了很多事情,但都很瑣碎、很雜,不成體系,看不到效果
? 系統(tǒng)擴展性、復用性差,一個需求,要改很多地方
目標收益
1、清晰的知道架構分層,知道基礎架構、分布式架構、業(yè)務架構各自要解決什么問題,以及對應的研發(fā)團隊的劃分
2、學會各種業(yè)務場景下的高并發(fā)高可用系統(tǒng)的設計
3、學會各種業(yè)務場景下,如何提升系統(tǒng)穩(wěn)定性、可用性
4、學會微服務劃分的原則
5、學會做業(yè)務分析,DDD領域建模
6、學會大數(shù)據(jù)的方法論,能夠根據(jù)自己的業(yè)務場景進行合理的大數(shù)據(jù)技術選型
培訓對象
1. 3-5年的開發(fā)者,希望在技術上,有一個質的提升
2.技術Leader,希望帶好研發(fā)團隊
課程內容
該課程為中高級課程,對于開發(fā)以下類型系統(tǒng)特別有幫助
1、業(yè)務邏輯特別復雜、團隊人數(shù)眾多
2、海量用戶的高并發(fā)、高可用系統(tǒng)
3、大數(shù)據(jù)處理平臺與系統(tǒng)
課程大綱
引子 |
當業(yè)務發(fā)展壯大,團隊規(guī)模到了一定時候,所面臨的問題往往都不是某一個單一系統(tǒng)的問題,而是整個研發(fā)團隊的技術架構、業(yè)務架構、工程文化問題。 本課程希望完整的闡述整個架構體系,讓大家可以“俯瞰”技術,對整個公司的技術架構、團隊分工有一個深刻的認知,在整個大背景下,再去看自己的系統(tǒng)存在什么問題。 |
第一單元 基礎架構(每個單元1小時) |
該單元介紹基礎架構主要包含哪些模塊,基礎架構為什么如此重要。 1、架構的分層:基礎架構、技術架構、業(yè)務架構、組織架構 2、微服務(RPC)框架技術選型: Dubbo/Pigeon/Spring Cloud 3、消息中間件技術選型: Kafka/RabbitMQ/RocketMQ/Plusar 4、存儲、緩存、數(shù)據(jù)庫技術選型: Mysql/HBase/RedisCluster/Memcached 5、分布式日志收集系統(tǒng) ELK 6、監(jiān)控體系: 機器監(jiān)控、系統(tǒng)監(jiān)控、服務監(jiān)控、業(yè)務監(jiān)控 7、分布式任務調度系統(tǒng) XXX-Job, Saturn, Quartz, TBSche 8. binlog監(jiān)聽中間件 Canal/Puma/RDP/.. |
第二單元 分布式架構: 高并發(fā) |
該單元介紹解決高并發(fā)問題的思維框架與實踐案例 1.高并發(fā)讀:緩存、并發(fā)讀、讀寫分離(重寫輕讀) 2.高并發(fā)寫:數(shù)據(jù)分片,任務分片,異步,批量,串行化 |
第三單元 分布式架構: 穩(wěn)定性保證 |
該單元介紹大型系統(tǒng)的穩(wěn)定性保證的關鍵策略: 1.容量規(guī)劃 容量估算方法 壓測的實現(xiàn)思路:單機壓測、全鏈路壓測 2各種限流的實現(xiàn)技術 RateLimiter、微服務框架內置、... 3.熔斷的實現(xiàn)思路 Sentinel、Hystrix 4.降級的實現(xiàn)思路 各種降級的場景舉例 5.灰度發(fā)布與回滾 |
第四單元 分布式架構:高可用 |
該單元介紹解決高可用問題的思維框架與實踐 1.高可用的幾個核心問題:如何實現(xiàn)故障自動發(fā)現(xiàn)?如何自動切換?切換后數(shù)據(jù)一致性如何保證?。。。 2.常用的幾個系統(tǒng) /中間件是如何在解決高可用問題:Mysql/Hdfs/Kafka都分別是如何解決高可用的? |
第五單元 分布式架構:分布式事務 |
該單元介紹分布式事務的各種解決方案 1.分布式問題的場景:DB與DB的分布式事務,DB與服務的分布式事務,服務與服務的分布式事務 2.常用的分布式問題解決方案與框架: 2PC, TCC, 最終一致性,1PC,對賬 |
第六單元 分布式架構:多副本一致性算法 |
該單元介紹多副本一致性問題及各種算法 1.多副本一致性問題剖析 Kafka/Mysql中數(shù)據(jù)不一致問題剖析 Paxos/Raft算法引入 2.常用的多副本一致性算法與工程實現(xiàn) Paxos/Raft算法的工程應用 |
第七單元 業(yè)務架構序列1:軟件開發(fā)全生命周期與架構4+1視圖 |
在前面6個單元,介紹了基礎架構 + 技術架構。從這個單元開始,進入業(yè)務架構的討論。 1.業(yè)務架構在軟件開發(fā)全生命周期的位置 業(yè)務架構并沒有一個業(yè)界標準的定義,但大致干什么還是有一定共識的,包括:需求分析、業(yè)務建模(UML)、OOA/OOD、設計模式、各子系統(tǒng)邊界劃分等 2.架構的4+1視圖 功能視圖、邏輯視圖、物理視圖(部署視圖)、開發(fā)視圖、運行視圖 |
第八單元 業(yè)務架構序列2:DDD與 微服務拆分 |
1.微服務拆分的思考方式 (1)從數(shù)據(jù)庫的存儲設計角度考慮微服務拆分 (2)從DDD角度考慮微服務拆分 2.ddd 領域、領域模型、領域劃分、聚合根、DDD與微服務、DDD與CQRS架構 |
第九單元 業(yè)務架構序列3:常用架構模式 |
該單元介紹業(yè)務架構中常用的幾個架構模式 1.分層模式 2.管道-過濾器模式 3.狀態(tài)機模式 4.規(guī)則引擎 5.工作流引擎 |
第十單元 大數(shù)據(jù)架構 |
該單元對大數(shù)據(jù)的技術發(fā)展脈絡做一個全面梳理,幫助業(yè)務系統(tǒng)的開發(fā)人員能夠合理的利用大數(shù)據(jù)技術。 1.大數(shù)據(jù)的技術發(fā)展脈絡與技術選型 2.什么是數(shù)據(jù)中臺 3.數(shù)據(jù)建模與數(shù)據(jù)產品 4.流式計算的一些典型應用場景和要解決的核心問題 |
第十一單元 實戰(zhàn)案例序列1 |
綜合應用前面講的分布式架構、業(yè)務架構的方法,剖析下面3個典型案例: 1. 案例1 - 分布式ID生成器 2. 案例2 - 電商庫存系統(tǒng) 3. 案例3 - 秒殺系統(tǒng) |
第十二單元 實戰(zhàn)案例序列2 |
通過實踐案例來看,分布式架構的理論是如何應用在跨城容災與異地多活的場景。 1. 跨城無復制架構 - 案例分析 2. 跨城同步復制架構 - 案例分析 3. 跨城異步復制架構 - 案例分析 |
引子 當業(yè)務發(fā)展壯大,團隊規(guī)模到了一定時候,所面臨的問題往往都不是某一個單一系統(tǒng)的問題,而是整個研發(fā)團隊的技術架構、業(yè)務架構、工程文化問題。 本課程希望完整的闡述整個架構體系,讓大家可以“俯瞰”技術,對整個公司的技術架構、團隊分工有一個深刻的認知,在整個大背景下,再去看自己的系統(tǒng)存在什么問題。 |
第一單元 基礎架構(每個單元1小時) 該單元介紹基礎架構主要包含哪些模塊,基礎架構為什么如此重要。 1、架構的分層:基礎架構、技術架構、業(yè)務架構、組織架構 2、微服務(RPC)框架技術選型: Dubbo/Pigeon/Spring Cloud 3、消息中間件技術選型: Kafka/RabbitMQ/RocketMQ/Plusar 4、存儲、緩存、數(shù)據(jù)庫技術選型: Mysql/HBase/RedisCluster/Memcached 5、分布式日志收集系統(tǒng) ELK 6、監(jiān)控體系: 機器監(jiān)控、系統(tǒng)監(jiān)控、服務監(jiān)控、業(yè)務監(jiān)控 7、分布式任務調度系統(tǒng) XXX-Job, Saturn, Quartz, TBSche 8. binlog監(jiān)聽中間件 Canal/Puma/RDP/.. |
第二單元 分布式架構: 高并發(fā) 該單元介紹解決高并發(fā)問題的思維框架與實踐案例 1.高并發(fā)讀:緩存、并發(fā)讀、讀寫分離(重寫輕讀) 2.高并發(fā)寫:數(shù)據(jù)分片,任務分片,異步,批量,串行化 |
第三單元 分布式架構: 穩(wěn)定性保證 該單元介紹大型系統(tǒng)的穩(wěn)定性保證的關鍵策略: 1.容量規(guī)劃 容量估算方法 壓測的實現(xiàn)思路:單機壓測、全鏈路壓測 2各種限流的實現(xiàn)技術 RateLimiter、微服務框架內置、... 3.熔斷的實現(xiàn)思路 Sentinel、Hystrix 4.降級的實現(xiàn)思路 各種降級的場景舉例 5.灰度發(fā)布與回滾 |
第四單元 分布式架構:高可用 該單元介紹解決高可用問題的思維框架與實踐 1.高可用的幾個核心問題:如何實現(xiàn)故障自動發(fā)現(xiàn)?如何自動切換?切換后數(shù)據(jù)一致性如何保證?。。。 2.常用的幾個系統(tǒng) /中間件是如何在解決高可用問題:Mysql/Hdfs/Kafka都分別是如何解決高可用的? |
第五單元 分布式架構:分布式事務 該單元介紹分布式事務的各種解決方案 1.分布式問題的場景:DB與DB的分布式事務,DB與服務的分布式事務,服務與服務的分布式事務 2.常用的分布式問題解決方案與框架: 2PC, TCC, 最終一致性,1PC,對賬 |
第六單元 分布式架構:多副本一致性算法 該單元介紹多副本一致性問題及各種算法 1.多副本一致性問題剖析 Kafka/Mysql中數(shù)據(jù)不一致問題剖析 Paxos/Raft算法引入 2.常用的多副本一致性算法與工程實現(xiàn) Paxos/Raft算法的工程應用 |
第七單元 業(yè)務架構序列1:軟件開發(fā)全生命周期與架構4+1視圖 在前面6個單元,介紹了基礎架構 + 技術架構。從這個單元開始,進入業(yè)務架構的討論。 1.業(yè)務架構在軟件開發(fā)全生命周期的位置 業(yè)務架構并沒有一個業(yè)界標準的定義,但大致干什么還是有一定共識的,包括:需求分析、業(yè)務建模(UML)、OOA/OOD、設計模式、各子系統(tǒng)邊界劃分等 2.架構的4+1視圖 功能視圖、邏輯視圖、物理視圖(部署視圖)、開發(fā)視圖、運行視圖 |
第八單元 業(yè)務架構序列2:DDD與 微服務拆分 1.微服務拆分的思考方式 (1)從數(shù)據(jù)庫的存儲設計角度考慮微服務拆分 (2)從DDD角度考慮微服務拆分 2.ddd 領域、領域模型、領域劃分、聚合根、DDD與微服務、DDD與CQRS架構 |
第九單元 業(yè)務架構序列3:常用架構模式 該單元介紹業(yè)務架構中常用的幾個架構模式 1.分層模式 2.管道-過濾器模式 3.狀態(tài)機模式 4.規(guī)則引擎 5.工作流引擎 |
第十單元 大數(shù)據(jù)架構 該單元對大數(shù)據(jù)的技術發(fā)展脈絡做一個全面梳理,幫助業(yè)務系統(tǒng)的開發(fā)人員能夠合理的利用大數(shù)據(jù)技術。 1.大數(shù)據(jù)的技術發(fā)展脈絡與技術選型 2.什么是數(shù)據(jù)中臺 3.數(shù)據(jù)建模與數(shù)據(jù)產品 4.流式計算的一些典型應用場景和要解決的核心問題 |
第十一單元 實戰(zhàn)案例序列1 綜合應用前面講的分布式架構、業(yè)務架構的方法,剖析下面3個典型案例: 1. 案例1 - 分布式ID生成器 2. 案例2 - 電商庫存系統(tǒng) 3. 案例3 - 秒殺系統(tǒng) |
第十二單元 實戰(zhàn)案例序列2 通過實踐案例來看,分布式架構的理論是如何應用在跨城容災與異地多活的場景。 1. 跨城無復制架構 - 案例分析 2. 跨城同步復制架構 - 案例分析 3. 跨城異步復制架構 - 案例分析 |