- Service Mesh實戰(zhàn):用Istio軟負(fù)載實現(xiàn)服務(wù)網(wǎng)格
- 周遙
- 6字
- 2019-07-29 18:22:35
1.4 微服務(wù)時期
1.4.1 服務(wù)細(xì)化
微服務(wù)是2012由Martin Fowler提出的概念,并沒有嚴(yán)格的定義。從本質(zhì)上來說,分布式經(jīng)過前一輪的服務(wù)化后,應(yīng)用本身臃腫復(fù)雜的問題已經(jīng)得到了很好的解決。不過微服務(wù)則希望將其更進一階。這里的重點就是“微”,即一個服務(wù)只負(fù)載一個獨立的功能。此時,傳統(tǒng)的“用戶中心”服務(wù),對于“微服務(wù)”來說,根據(jù)業(yè)務(wù)需要可能就需要再次拆分,例如針對電商場景,可能就需要拆分成“買家服務(wù)”“賣家服務(wù)”“商家服務(wù)”等。
至于到底需要拆分到多細(xì),這里的原則便是,任何一個需求不會因發(fā)布或者維護而影響到不相關(guān)的服務(wù),一切可以做到獨立部署運維。當(dāng)然,甚至可以拆分到一個獨立的功能、一個服務(wù),肯定就不會相互影響,這也正是Serverless思想所提倡的。不過Serverless尚需要較多的基礎(chǔ)服務(wù)支撐,而且還沒有被主流公司接受,因此服務(wù)的拆分粒度,現(xiàn)在仍然是一個沒有明確界限的事。
1.4.2 架構(gòu)輕量化
“微服務(wù)”所強調(diào)的不只是服務(wù)劃分粒度上的“微”,同時對整個架構(gòu)也有更高層次的要求。例如“微服務(wù)”希望遠(yuǎn)程調(diào)用協(xié)議是非常輕量級的,它不提倡使用像Dubbo這樣的強語義協(xié)議,因為每種語言都需要一個針對性的客戶端,而且客戶端邏輯還比較復(fù)雜,甚至還支持編寫Groovy語言來自定義擴展。
廣為大眾所接受的Spring Cloud框架是微服務(wù)的典型代表。相對于傳統(tǒng)分布式服務(wù)架構(gòu),Spring Cloud使用HTTP作為RPC遠(yuǎn)程調(diào)用協(xié)議,配合上Netflix貢獻的Eureka與API網(wǎng)關(guān)Zuul,其能做到細(xì)分內(nèi)部服務(wù)的同時對外暴露統(tǒng)一的接口,讓外部終端對系統(tǒng)內(nèi)部分布式架構(gòu)無感知。此外,Spring Cloud的Config組件還將配置與上述各框架結(jié)合起來,讓每個服務(wù)都可以非常簡單地接入并配置系統(tǒng)。
綜上所述,在我看來,“微服務(wù)”所強調(diào)的輕,其實就是反映工程師們普遍不希望分布式相關(guān)架構(gòu)邏輯侵入業(yè)務(wù)系統(tǒng)的事實。在傳統(tǒng)的分布式服務(wù)架構(gòu)中,一個服務(wù)(應(yīng)用)通常要非常多的配置才能正常工作,例如Dubbo需要填入配置中心地址、配置Service接口XML文件等,并且要求對方也接入Dubbo客戶端才行,而Spring Cloud則只需要通過幾個簡單的注解即可完成對服務(wù)調(diào)用的聲明,因為是基于HTTP的,即便是不同語言,也可以很好地支持。
縱觀整個分布式發(fā)展史,微服務(wù)時期可以說是一個發(fā)展的分水嶺,因為此時工程師們真正開始注意到架構(gòu)本身帶來的復(fù)雜性。在此之前,分布式都是往做多做細(xì)方向發(fā)展,例如之前“集群化”“服務(wù)化”“服務(wù)治理化”等一系列過程,都是一種架構(gòu)擴展演進。而微服務(wù)在細(xì)化的同時,首次提出了“微”,即輕量級的概念,在此之后,分布式架構(gòu)便進入了一個架構(gòu)收縮的過程,因為其本身已經(jīng)太復(fù)雜了,工程師僅是理解業(yè)務(wù)估計都需要好幾天,因此需要讓他們盡量少地去感知架構(gòu)的存在,甚至做到完全無感知。
要知道,所有這些對于加班如家常便飯一般的工程師來說,那是一件非常幸福的事。
- CorelDRAW X6圖形設(shè)計立體化教程
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)移動UI設(shè)計
- Adobe After Effects CC 高手之路
- 剪映:短視頻剪輯/字幕/動畫/AI從新手到高手(手機版+電腦版)
- Excel 2013電子表格處理
- Maya建模技術(shù)解析
- 計算機·手機生活應(yīng)用
- Illustrator平面設(shè)計立體化教程:Illustrator 2021(微課版)
- Photoshop CC 2017從入門到精通
- Python Testing: Beginner's Guide
- 從零開始:Indesign CC 2019設(shè)計基礎(chǔ)+商業(yè)設(shè)計實戰(zhàn)
- 中文版Photoshop CC基礎(chǔ)教程
- Configuring IPCop Firewalls: Closing Borders with Open Source
- 24小時玩賺剪映
- Apache JMeter