microservices
我的微服務(wù)架構(gòu)探索之路,接下來(lái)所有內(nèi)容圍繞
Spring Cloud
Dalston.SR2 總結(jié) ,工作繁忙我會(huì)每天更新一點(diǎn)點(diǎn)~ 你的Start 是對(duì)我最大的鼓勵(lì),謝謝乖菱。
什么是微服務(wù)舱馅?
微服務(wù)
一詞來(lái)源于 Martin Fowler的名為Microservices的博文败匹,文章地址:http://martinfowler.com/articles/microservices.html 通俗的講微服務(wù)
就是系統(tǒng)架構(gòu)上的一種設(shè)計(jì)風(fēng)格经柴,它的思想是將一個(gè)獨(dú)立的系統(tǒng)拆分成多個(gè)小型服務(wù)毅贮,這些服務(wù)在各自獨(dú)立的進(jìn)程中運(yùn)行,服務(wù)之間基本http restful api 或者消息中間件通信協(xié)作,被拆分成的小服務(wù)都圍繞著系統(tǒng)中的某一項(xiàng)或者一些耦合度較高的業(yè)務(wù)功能進(jìn)行構(gòu)建(每個(gè)服務(wù)是獨(dú)立部署的)由于有了輕量級(jí)的通信協(xié)議作為基礎(chǔ),所以這些微服務(wù)可以使用不同的語(yǔ)言來(lái)編寫(xiě)蝗拿。
與單體系統(tǒng)的區(qū)別
在以往傳統(tǒng)的企業(yè)系統(tǒng)架構(gòu)中,我們針對(duì)一個(gè)復(fù)雜的業(yè)務(wù)需求通常使用對(duì)象或業(yè)務(wù)類(lèi) 型來(lái)構(gòu)建一個(gè)單體項(xiàng)目蒿涎。在項(xiàng)目中我們通常將葙求分為三個(gè)主要部分:數(shù)據(jù)庫(kù)哀托、服務(wù)端處理、前端展現(xiàn)劳秋。在業(yè)務(wù)發(fā)展初期仓手,由于所有的業(yè)務(wù)邏輯在一個(gè)應(yīng)用中,開(kāi)發(fā)玻淑、測(cè)試俗或、部署 都還比較容結(jié)且方便。但是岁忘,隨著企業(yè)的發(fā)展,系統(tǒng)為了應(yīng)對(duì)不同的業(yè)務(wù)需求會(huì)不斷為該 單體項(xiàng)目增加不間的業(yè)務(wù)模塊:?jiǎn)枙r(shí)隨著移動(dòng)端設(shè)備的進(jìn)步区匠,前端展現(xiàn)揆塊己經(jīng)不僅僅局限于Web的形式干像,這對(duì)于系統(tǒng)后端向前端的支持需要更多的接口模塊。單體應(yīng)用由于面對(duì)的業(yè)務(wù)需求更為寬泛驰弄,不斷擴(kuò)大的需求會(huì)使得單體應(yīng)用變得越來(lái)越臃腫麻汰。單體應(yīng)用的問(wèn)題就逐漸凸顯出來(lái),由于單體系統(tǒng)部署在一個(gè)進(jìn)程內(nèi)戚篙,往往我們修改了一個(gè)很小的功能五鲫,為 /部署上線(xiàn)會(huì)影響其他功能的運(yùn)行?并且,單體應(yīng)用中的這些功能模塊的使用場(chǎng)景岔擂、并發(fā)量位喂、消耗的資源類(lèi)型都各有不同,對(duì)于資源的利用又互相影響乱灵,這樣使得我們對(duì)各個(gè)業(yè)務(wù) 模塊的系統(tǒng)容量很難給出較為準(zhǔn)確的評(píng)估.所以塑崖,單體系統(tǒng)在初期雖然可以非常方便地進(jìn)行開(kāi)發(fā)和使用,但是隨著系統(tǒng)的發(fā)展痛倚,維護(hù)成本會(huì)變得越來(lái)越大规婆,且難以控制.為了解決單體系統(tǒng)變得龐人臃腫之后產(chǎn)生的難以維護(hù)的問(wèn)題.微服務(wù)架構(gòu)誕生了并被 大家所關(guān)注。我們將系統(tǒng)中的不同功能模塊拆分成多個(gè)不同的服務(wù),這些服務(wù)都能夠獨(dú)立 部署和擴(kuò)展抒蚜,由于每個(gè)服務(wù)都運(yùn)行在自己的進(jìn)程內(nèi)掘鄙,在部署上有穩(wěn)固的邊界,這樣毎個(gè)服務(wù)的更新都不會(huì)影響其他服務(wù)的運(yùn)行嗡髓,同時(shí)操漠,由于是獨(dú)立部署的,我們可以更準(zhǔn)確地為每 個(gè)服務(wù)評(píng)估性能容量,通過(guò)配合服務(wù)間的協(xié)作流程也可以更容易地發(fā)現(xiàn)系統(tǒng)的瓶頸位置器贩,以及給出較為準(zhǔn)確的系統(tǒng)級(jí)性能容最評(píng)估颅夺。
微服務(wù)架構(gòu)
優(yōu)點(diǎn)
- 1、各服務(wù)獨(dú)立部署蛹稍,對(duì)開(kāi)發(fā)更為敏捷
- 2吧黄、跨平臺(tái)且統(tǒng)一用resful風(fēng)格接口規(guī)范
- 3、服務(wù)可撥插唆姐,易于擴(kuò)展
- 4拗慨、易于測(cè)試
- 5、分散式管理奉芦,彼此松耦合
- 6赵抢、高可用、負(fù)載均衡
缺點(diǎn)
- 1声功、微服務(wù)的粗細(xì)粒度沒(méi)統(tǒng)一標(biāo)準(zhǔn)
- 2烦却、架構(gòu)與設(shè)計(jì)需要學(xué)習(xí)一些新的技術(shù)
- 3、分布式架構(gòu)下必須滿(mǎn)足CAP定律.
- 4先巴、運(yùn)維難度提高
Spring Cloud 簡(jiǎn)介
Spring Cloud
是一個(gè)基于Spring boot
實(shí)現(xiàn)的微服務(wù)架構(gòu)開(kāi)發(fā)工具其爵。Spring Cloud
為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)伸蚯,斷路器摩渺,智能路由,微代理剂邮,控制總線(xiàn))摇幻。分布式系統(tǒng)的協(xié)調(diào)導(dǎo)致了樣板模式, 使用Spring Cloud
開(kāi)發(fā)人員可以快速地支持實(shí)現(xiàn)這些模式的服務(wù)和應(yīng)用程序。他們將在任何分布式環(huán)境中運(yùn)行良好挥萌,包括開(kāi)發(fā)人員自己的筆記本電腦绰姻,裸機(jī)數(shù)據(jù)中心,以及Cloud Foundry
等托管平臺(tái)瑞眼。
- 官網(wǎng) : http://projects.spring.io/spring-cloud/
- 我用的版本:
Dalston SR2
- 官方幫助手冊(cè): http://cloud.spring.io/spring-cloud-static/Dalston.SR2/
Spring Cloud 特性
Spring Cloud專(zhuān)注于提供良好的開(kāi)箱即用經(jīng)驗(yàn)的典型用例和可擴(kuò)展性機(jī)制覆蓋龙宏。
- 分布式/版本化配置
- 服務(wù)注冊(cè)和發(fā)現(xiàn)
- 路由
- service - to - service調(diào)用
- 負(fù)載均衡
- 斷路器
- 分布式消息傳遞
微服務(wù)組件
組件簡(jiǎn)述
組件 | 簡(jiǎn)述 | 備注 |
---|---|---|
Eureka | 微服務(wù)注冊(cè)中心 | |
Ribbon | 微服務(wù)負(fù)載均衡 | |
Hystrix | 微服務(wù)容錯(cuò)保護(hù) | |
Feign | 微服務(wù)聲明式服務(wù)調(diào)用 | |
Zuul | 微服務(wù)API網(wǎng)關(guān) | |
Config | 微服務(wù)分布式配置中心 | |
Bus | 微服務(wù)消息總線(xiàn) | RabbitMQ安裝 |
Stream | 微服務(wù)消息驅(qū)動(dòng) | |
Sleuth | 微服務(wù)分布式跟蹤 |