個(gè)人專題目錄
1.1 微服務(wù)與微服務(wù)架構(gòu)
業(yè)界大牛馬丁.福勒(Martin Fowler) 這樣描述微服務(wù):
論文網(wǎng)址: https://martinfowler.com/articles/microservices.html
_ 微服務(wù)
強(qiáng)調(diào)的是服務(wù)的大小速缆,它關(guān)注的是某一個(gè)點(diǎn),是具體解決某一個(gè)問(wèn)題/提供落地對(duì)應(yīng)服務(wù)的一個(gè)服務(wù)應(yīng)用,
狹意的看,可以看作Eclipse里面的一個(gè)個(gè)微服務(wù)工程/或者M(jìn)odule
_ 微服務(wù)架構(gòu)
)
微服務(wù)架構(gòu)是?種架構(gòu)模式膜毁,它提倡將單?應(yīng)?程序劃分成?組?的服務(wù)轮纫,服務(wù)之間互相協(xié)調(diào)器瘪、互相配合普筹,為?戶提供最終價(jià)值筐乳。每個(gè)服務(wù)運(yùn)?在其獨(dú)?的進(jìn)程中,服務(wù)與服務(wù)間采?輕量級(jí)的通信機(jī)制互相協(xié)作(通常是基于HTTP協(xié)議的RESTful API)逞姿。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)?構(gòu)建辞嗡,并且能夠被獨(dú)?的部署到?產(chǎn)環(huán)境、類?產(chǎn)環(huán)境等滞造。另外续室,應(yīng)當(dāng)盡量避免統(tǒng)?的、集中式的服務(wù)管理機(jī)制谒养,對(duì)具體的?個(gè)服務(wù)??挺狰,應(yīng)根據(jù)業(yè)務(wù)上下?,選擇合適的語(yǔ)?买窟、?具對(duì)其進(jìn)?構(gòu)建丰泊。
1.1.1 技術(shù)維度理解
微服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用,根據(jù)業(yè)務(wù)拆分成一個(gè)一個(gè)的服務(wù)始绍,徹底 地去耦合,每一個(gè)微服務(wù)提供單個(gè)業(yè)務(wù)功能的服務(wù)瞳购,一個(gè)服務(wù)做一件事, 從技術(shù)角度看就是一種小而獨(dú)立的處理過(guò)程疆虚,類似進(jìn)程概念苛败,能夠自行單獨(dú)啟動(dòng) 或銷毀,擁有自己獨(dú)立的數(shù)據(jù)庫(kù)径簿。
1.2 微服務(wù)技術(shù)棧有哪些
微服務(wù)條目 | 落地技術(shù) | 備注 |
---|---|---|
服務(wù)開發(fā) | Springboot罢屈、Spring、SpringMVC | |
服務(wù)配置與管理 | Netflix公司的Archaius篇亭、阿里的Diamond等 | |
服務(wù)注冊(cè)與發(fā)現(xiàn) | Eureka缠捌、Consul、Zookeeper等 | |
服務(wù)調(diào)用 | Rest译蒂、RPC曼月、gRPC | |
服務(wù)熔斷器 | Hystrix、Envoy等 | |
負(fù)載均衡 | Ribbon柔昼、Nginx等 | |
服務(wù)接口調(diào)用(客戶端調(diào)用服務(wù)的簡(jiǎn)化工具) | Feign等 | |
消息隊(duì)列 | Kafka哑芹、RabbitMQ、ActiveMQ等 | |
服務(wù)配置中心管理 | SpringCloudConfig捕透、Chef等 | |
服務(wù)路由(API網(wǎng)關(guān)) | Zuul等 | |
服務(wù)監(jiān)控 | Zabbix聪姿、Nagios碴萧、Metrics、Spectator等 | |
全鏈路追蹤 | Zipkin末购,Brave破喻、Dapper等 | |
服務(wù)部署 | Docker、OpenStack盟榴、Kubernetes等 | |
數(shù)據(jù)流操作開發(fā)包 | SpringCloud Stream(封裝與Redis,Rabbit曹质、Kafka等發(fā)送接收消息) | |
事件消息總線 | Spring Cloud Bus | |
...... |
1.3 SpringCloud是什么
1.3.1 官網(wǎng)說(shuō)明
SpringCloud,基于SpringBoot提供了一套微服務(wù)解決方案擎场,包括服務(wù)注冊(cè)與發(fā)現(xiàn)羽德,配置中心,全鏈路監(jiān)控迅办,服務(wù)網(wǎng)關(guān)玩般,負(fù)載均衡,熔斷器等組件礼饱,除了基于NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件究驴。
SpringCloud利用SpringBoot的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)镊绪,SpringCloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具,包括配置管理洒忧、服務(wù)發(fā)現(xiàn)蝴韭、斷路器、路由熙侍、微代理榄鉴、事件總線、全局鎖蛉抓、決策競(jìng)選庆尘、分布式會(huì)話等等,它們都可以用SpringBoot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
SpringBoot并沒有重復(fù)制造輪子巷送,它只是將目前各家公司開發(fā)的比較成熟驶忌、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來(lái),通過(guò)SpringBoot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理笑跛,最終給開發(fā)者留出了一套簡(jiǎn)單易懂付魔、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包
1.3.2 SpringCloud=分布式微服務(wù)架構(gòu)下的一站式解決方案
是各個(gè)微服務(wù)架構(gòu)落地技術(shù)的集合體,俗稱微服務(wù)全家桶
1.3.3 SpringCloud和SpringBoot是什么關(guān)系
SpringBoot專注于快速方便的開發(fā)單個(gè)個(gè)體微服務(wù)飞蹂。
SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架几苍,它將SpringBoot開發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來(lái),
為各個(gè)微服務(wù)之間提供陈哑,配置管理妻坝、服務(wù)發(fā)現(xiàn)伸眶、斷路器、路由惠勒、微代理赚抡、事件總線、全局鎖纠屋、決策競(jìng)選涂臣、分布式會(huì)話等等集成服務(wù)
SpringBoot可以離開SpringCloud獨(dú)立使用開發(fā)項(xiàng)目,但是SpringCloud離不開SpringBoot售担,屬于依賴的關(guān)系.
SpringBoot專注于快速赁遗、方便的開發(fā)單個(gè)微服務(wù)個(gè)體,SpringCloud關(guān)注全局的服務(wù)治理框架族铆。
1.3.4 Dubbo是怎么到SpringCloud的岩四? 哪些優(yōu)缺點(diǎn)讓你去技術(shù)選型
目前成熟的互聯(lián)網(wǎng)架構(gòu)(分布式+服務(wù)治理Dubbo)
我們把SpringCloud VS DUBBO進(jìn)行一番對(duì)比
最大區(qū)別:SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式哥攘。
嚴(yán)格來(lái)說(shuō)剖煌,這兩種方式各有優(yōu)劣。雖然從一定程度上來(lái)說(shuō)逝淹,后者犧牲了服務(wù)調(diào)用的性能耕姊,但也避免了上面提到的原生RPC帶來(lái)的問(wèn)題。而且REST相比RPC更為靈活栅葡,服務(wù)提供方和調(diào)用方的依賴只依靠一紙契約茉兰,不存在代碼級(jí)別的強(qiáng)依賴,這在強(qiáng)調(diào)快速演化的微服務(wù)環(huán)境下欣簇,顯得更加合適规脸。
品牌機(jī)與組裝機(jī)的區(qū)別
很明顯,Spring Cloud的功能比DUBBO更加強(qiáng)大熊咽,涵蓋面更廣莫鸭,而且作為Spring的拳頭項(xiàng)目,它也能夠與Spring Framework横殴、Spring Boot黔龟、Spring Data、Spring Batch等其他Spring項(xiàng)目完美融合滥玷,這些對(duì)于微服務(wù)而言是至關(guān)重要的氏身。使用Dubbo構(gòu)建的微服務(wù)架構(gòu)就像組裝電腦,各環(huán)節(jié)我們的選擇自由度很高惑畴,但是最終結(jié)果很有可能因?yàn)橐粭l內(nèi)存質(zhì)量不行就點(diǎn)不亮了蛋欣,總是讓人不怎么放心,但是如果你是一名高手如贷,那這些都不是問(wèn)題陷虎;而Spring Cloud就像品牌機(jī)到踏,在Spring Source的整合下,做了大量的兼容性測(cè)試尚猿,保證了機(jī)器擁有更高的穩(wěn)定性窝稿,但是如果要在使用非原裝組件外的東西,就需要對(duì)其基礎(chǔ)有足夠的了解凿掂。
社區(qū)支持與更新力度
最為重要的是伴榔,DUBBO停止了5年左右的更新,雖然2017.7重啟了庄萎。對(duì)于技術(shù)發(fā)展的新需求踪少,需要由開發(fā)者自行拓展升級(jí)(比如當(dāng)當(dāng)網(wǎng)弄出了DubboX),這對(duì)于很多想要采用微服務(wù)架構(gòu)的中小軟件組織糠涛,顯然是不太合適的援奢,中小公司沒有這么強(qiáng)大的技術(shù)能力去修改Dubbo源碼+周邊的一整套解決方案,并不是每一個(gè)公司都有阿里的大牛+真實(shí)的線上生產(chǎn)環(huán)境測(cè)試過(guò)忍捡。
總結(jié)Cloud與Dubbo
問(wèn)題:
曾風(fēng)靡國(guó)內(nèi)的開源 RPC 服務(wù)框架 Dubbo 在重啟維護(hù)后集漾,令許多用戶為之雀躍,但同時(shí)砸脊,也迎來(lái)了一些質(zhì)疑的聲音帆竹。互聯(lián)網(wǎng)技術(shù)發(fā)展迅速脓规,Dubbo 是否還能跟上時(shí)代?Dubbo 與 Spring Cloud 相比又有何優(yōu)勢(shì)和差異险领?是否會(huì)有相關(guān)舉措保證 Dubbo 的后續(xù)更新頻率侨舆?
人物:Dubbo重啟維護(hù)開發(fā)的劉軍,主要負(fù)責(zé)人之一
劉軍绢陌,阿里巴巴中間件高級(jí)研發(fā)工程師挨下,主導(dǎo)了 Dubbo 重啟維護(hù)以后的幾個(gè)發(fā)版計(jì)劃,專注于高性能 RPC 框架和微服務(wù)相關(guān)領(lǐng)域脐湾。曾負(fù)責(zé)網(wǎng)易考拉 RPC 框架的研發(fā)及指導(dǎo)在內(nèi)部使用臭笆,參與了服務(wù)治理平臺(tái)、分布式跟蹤系統(tǒng)秤掌、分布式一致性框架等從無(wú)到有的設(shè)計(jì)與開發(fā)過(guò)程
1.4 參考資料
官網(wǎng)
http://projects.spring.io/spring-cloud/
參考書
https://springcloud.cc/spring-cloud-netflix.html
springcloud中國(guó)社區(qū)
springcloud中文網(wǎng)
1.5 SpringCloud國(guó)內(nèi)使用情況
1.5.1 國(guó)內(nèi)公司
clip_image018.jpg
1.5.2 阿里云
)