www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]最近看到一些小伙伴在聊微服務(wù)相關(guān)的話題,每個人對于微服務(wù)都有自己的理解。甚至很多小伙伴覺得微服務(wù)就是架構(gòu)界的“白富美”,人人都很向往擁有它,其實不盡然。任何事物脫離場景的表述都是蒼白的。那么微服務(wù)到底是什么呢?我們在什么時候需要它呢?在此我


最近看到一些小伙伴在聊微服務(wù)相關(guān)的話題,每個人對于微服務(wù)都有自己的理解。甚至很多小伙伴覺得微服務(wù)就是架構(gòu)界的“白富美”,人人都很向往擁有它,其實不盡然。任何事物脫離場景的表述都是蒼白的。那么微服務(wù)到底是什么呢?我們在什么時候需要它呢?在此我想拿出兩年前在團(tuán)隊內(nèi)部做過的一次分享,跟大家一起聊聊微服務(wù)。

說起微服務(wù),我們不得不從它是如何誕生的說起,當(dāng)我們理解了它誕生的原因后,自然就會知道微服務(wù)是為何而生,生而為何。話不多說,我們這就開始吧!

1.架構(gòu)的演變


以互聯(lián)網(wǎng)應(yīng)用為例,絕大部分的應(yīng)用都是從單體應(yīng)用架構(gòu)開始,隨著業(yè)務(wù)的拓展及業(yè)務(wù)量的提升,逐步向分布式應(yīng)用架構(gòu)發(fā)展。而在早期的分布式應(yīng)用架構(gòu)中,以SOA架構(gòu)為主,隨著技術(shù)、理念的發(fā)展及更新,逐漸衍生出了微服務(wù)架構(gòu)。


應(yīng)用架構(gòu)的發(fā)展日新月異,從來沒有停止過它的腳步。微服務(wù)架構(gòu)同SOA架構(gòu)一樣,同為階段性的產(chǎn)物(近些年,Serverless架構(gòu) 也逐漸進(jìn)入大家的視野,開啟了應(yīng)用架構(gòu)向“無服務(wù)器架構(gòu)”模式的轉(zhuǎn)變,使開發(fā)人員能夠更加聚焦在業(yè)務(wù)本身的開發(fā)。)。世界上唯一不變的就是變化本身


2.單體應(yīng)用架構(gòu)


單體應(yīng)用架構(gòu)大都是以分層架構(gòu)(layered-base)為基礎(chǔ)構(gòu)建的。所謂的單體應(yīng)用架構(gòu),就是將應(yīng)用所有功能打包成一個獨立的單元向外提供服務(wù)。單體應(yīng)用架構(gòu)有其自身的優(yōu)越性,非常適合初創(chuàng)型團(tuán)隊進(jìn)行快速業(yè)務(wù)試錯。


單體應(yīng)用架構(gòu)的優(yōu)點:

  • 技術(shù)棧單一

  • 開發(fā)人員規(guī)模小

  • 系統(tǒng)架構(gòu)簡單

  • 運維管理、部署,人員招聘及人員管理都相對容易實現(xiàn)。


隨著業(yè)務(wù)的不斷拓展及業(yè)務(wù)量的提升,單體應(yīng)用架構(gòu)的問題也逐漸顯現(xiàn)出來。


單體應(yīng)用架構(gòu)的缺點:

  • 程序耦合嚴(yán)重,代碼擴(kuò)展性差,業(yè)務(wù)邏輯復(fù)雜使得需求響應(yīng)變慢。

  • 業(yè)務(wù)容量存在瓶頸。各種業(yè)務(wù)代碼及數(shù)據(jù)層的耦合使得服務(wù)擴(kuò)展變得復(fù)雜。

  • 系統(tǒng)可用性差。由于代碼臃腫,邏輯復(fù)雜,使測試難度增加,程序bug會給整個平臺帶來災(zāi)難性的后果。


為了解決上述的問題,分布式架構(gòu)應(yīng)運而生。



3.分布式應(yīng)用架構(gòu)


分布式應(yīng)用架構(gòu)為提升應(yīng)用的擴(kuò)展性、容量及可用性等問題提供了解決方案。所謂的分布式應(yīng)用架構(gòu)就是將應(yīng)用系統(tǒng)拆分為多個獨立的子系統(tǒng),并由各個子系統(tǒng)協(xié)同處理,共同向外提供服務(wù)。對于分布式應(yīng)用架構(gòu)我們按時間將其分為了兩個階段,before 2010、after 2010。



? SOA before 2010


SOA(Service-Oriented Architecture)又叫面向服務(wù)的架構(gòu)。它是一個組件模型,它將應(yīng)用程序按不同功能單元(稱為服務(wù))進(jìn)行拆分,并通過定義良好的接口和協(xié)議將服務(wù)聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各類系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。


關(guān)于SOA架構(gòu)我們可以追溯到2000年前后。那時的互聯(lián)網(wǎng)企業(yè)都在高速擴(kuò)張,很多大型的企業(yè)都面臨著業(yè)務(wù)不斷拓展帶來的應(yīng)用復(fù)雜性及容量不足等問題的挑戰(zhàn),正是在這種環(huán)境下,SOA架構(gòu)出現(xiàn)了。


SOA通過對業(yè)務(wù)垂直切分,將平臺的業(yè)務(wù)拆分成若干個子服務(wù)。通過這樣的拆分,可以有效的解決單體應(yīng)用架構(gòu)所面臨的問題。


SOA的優(yōu)點:

  • 業(yè)務(wù)及代碼邏輯的復(fù)雜度降低,提升需求響應(yīng)能力

  • 可用性提高。各子系統(tǒng)獨立的開發(fā)及部署,使測試復(fù)雜度降低,bug的影響范圍不會擴(kuò)散至整個應(yīng)用平臺。

  • 業(yè)務(wù)容量大。針對各個子系統(tǒng)的業(yè)務(wù)特點進(jìn)行有針對性的優(yōu)化及擴(kuò)容,使優(yōu)化及擴(kuò)容更加簡便及輕量。


隨著時間推移,被拆分的服務(wù)越來越多,隨之帶來問題的復(fù)雜度也呈指數(shù)上升。SOA架構(gòu)的缺點逐步暴露出來。


SOA的缺點

  • 系統(tǒng)架構(gòu)復(fù)雜。

  • 系統(tǒng)出錯概率增大。

  • 部署運維復(fù)雜度陡增。

  • 研發(fā)人員規(guī)模、質(zhì)量上升

  • 學(xué)習(xí)曲線變大

  • 團(tuán)隊協(xié)作、管理難度增加,重復(fù)功能的開發(fā)也會在團(tuán)隊內(nèi)部造成不菲浪費


從量變到質(zhì)變,SOA的這些問題給團(tuán)隊帶來了新的挑戰(zhàn)。隨著技術(shù)、理念的發(fā)展,逐漸孕育出了微服務(wù)架構(gòu)。



? Microservices 2010 later


微服務(wù) (Microservices) 是一種軟件架構(gòu)風(fēng)格,它是以專注于單一責(zé)任與小型功能區(qū)塊 (Small Building Blocks) 為基礎(chǔ),利用模組化的方式組合出復(fù)雜的大型應(yīng)用程序,各功能區(qū)塊使用與語言無關(guān) (Language-Independent/Language agnostic) 的 API 集相互通訊。
微服務(wù)本質(zhì)上是SOA架構(gòu)的升級版,使用了一些新的理念及技術(shù)實現(xiàn),以解決SOA架構(gòu)暴露出的問題。



2010年后,隨著領(lǐng)域驅(qū)動設(shè)計、持續(xù)集成持續(xù)部署(CI/CD)虛擬化技術(shù)、云計算、基礎(chǔ)設(shè)施自動化以及多年來分布式架構(gòu)實踐過程中產(chǎn)生出的一些解決方案(服務(wù)注冊發(fā)現(xiàn)、分布式配置服務(wù)監(jiān)控、服務(wù)跟蹤...),使得分布式架構(gòu)得到了長足的發(fā)展。問題、難點一個個被攻克,微服務(wù)架構(gòu)正式在此基礎(chǔ)上誕生了。


微服務(wù)的優(yōu)點:

  • 進(jìn)一步降低了系統(tǒng)的復(fù)雜度。由于自動化技術(shù)的完善及領(lǐng)域驅(qū)動設(shè)計理念的普及,系統(tǒng)得到更進(jìn)一步的拆分及更細(xì)的顆粒度。

  • 組件化。更細(xì)的服務(wù)粒度,使服務(wù)擁有更高的可復(fù)用性,服務(wù)逐步組件化。

  • 自動化、高可用。高度的自動化測試、集成、部署及監(jiān)控,使系統(tǒng)運維逐漸由人工操作向AI智能化轉(zhuǎn)型,使系統(tǒng)的彈性更優(yōu),可用性更高,故障率更低。

  • 混合技術(shù)棧。團(tuán)隊中可以使用多種技術(shù)棧進(jìn)行開發(fā)工作,針對不同業(yè)務(wù)的特點,采用更加有針對性的開發(fā)語言開發(fā)部署。

  • 系統(tǒng)彈性可伸縮。由于采用了虛擬化、特別是容器化的部署,自動化技術(shù)的加入,系統(tǒng)具有高度的可伸縮性,使平臺資源利用率更高。

微服務(wù)的缺點:

  • 服務(wù)拆分的復(fù)雜性高。服務(wù)限界上下文[5]的錯誤,會導(dǎo)致不得不頻繁的更改服務(wù)間的協(xié)作。

  • 決策難度高。更細(xì)粒度的服務(wù),意味著更高的靈活性及更多的組合,因此在設(shè)計開發(fā)中會遇到更多的決策,決策的失誤會造成不必要的成本浪費。

  • 學(xué)習(xí)成本進(jìn)一步提高。



4.總結(jié)



通過對應(yīng)用架構(gòu)發(fā)展脈絡(luò)的梳理,我想你對微服務(wù)是什么應(yīng)該有所了解了。微服務(wù)其實正是在SOA的基礎(chǔ)上,結(jié)合了最新的理念、成熟的解決方案逐步發(fā)展而來的一個大型應(yīng)用平臺解決方案。


  • 單體應(yīng)用架構(gòu)解決的是應(yīng)用從0到1的問題。

  • SOA聚焦解決的是提升平臺容量,可用性,可維護(hù)性的問題。

  • 微服務(wù)聚焦解決的是服務(wù)編排與治理的問題。

  • serverless架構(gòu)要解決的是讓研發(fā)人員的工作能夠聚焦在業(yè)務(wù)的開發(fā)。


透過問題看本質(zhì),明白了他們核心解決的問題,我想你也應(yīng)該知道該如何取舍和選擇了吧!所有技術(shù)架構(gòu)核心是保障一個應(yīng)用平臺能夠更穩(wěn)定、高效的運轉(zhuǎn),從而達(dá)成應(yīng)用平臺最大化價值的目標(biāo)。為了實現(xiàn)目標(biāo),應(yīng)用架構(gòu)也只是其中的一個維度,商業(yè)的目標(biāo)、市場的定位、運營的策略、組織架構(gòu)...,所有這些問題及環(huán)節(jié)都需要統(tǒng)籌規(guī)劃,協(xié)同發(fā)展才可以實現(xiàn)最終的目標(biāo)。


微服務(wù)的話題僅憑借一篇文章很難說完,本文為了便于大家的理解,我們盡量保持在架構(gòu)發(fā)展趨勢這一維度跟大家進(jìn)行了講解,沒有對細(xì)節(jié)深入展開,后續(xù)文章會逐漸深入講解。 最后,感謝大家的耐心閱讀,謝謝!



尾注



[1]. https://martinfowler.com/articles/serverless.html

[2]. 《誰動了我的奶酪?》是美國作家斯賓塞·約翰遜

[3]. 《分布式系統(tǒng)原理與范型》

[4]. https://dzone.com/articles/microservices-vs-soa-whats-the-difference

[5]. 《領(lǐng)域驅(qū)動設(shè)計》


特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

聊聊微服務(wù)(一)

聊聊微服務(wù)(一)

聊聊微服務(wù)(一)

長按訂閱更多精彩▼

聊聊微服務(wù)(一)

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉