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