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