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

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


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

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

1.架構的演變


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


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


2.單體應用架構


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


單體應用架構的優(yōu)點:

  • 技術棧單一

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

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

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


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


單體應用架構的缺點:

  • 程序耦合嚴重,代碼擴展性差,業(yè)務邏輯復雜使得需求響應變慢。

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

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


為了解決上述的問題,分布式架構應運而生。



3.分布式應用架構


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



? SOA before 2010


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


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


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


SOA的優(yōu)點:

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

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

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


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


SOA的缺點

  • 系統(tǒng)架構復雜。

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

  • 部署運維復雜度陡增。

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

  • 學習曲線變大

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


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



? Microservices 2010 later


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



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


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

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

  • 組件化。更細的服務粒度,使服務擁有更高的可復用性,服務逐步組件化。

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

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

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

微服務的缺點:

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

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

  • 學習成本進一步提高。



4.總結



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


  • 單體應用架構解決的是應用從0到1的問題。

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

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

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


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


微服務的話題僅憑借一篇文章很難說完,本文為了便于大家的理解,我們盡量保持在架構發(fā)展趨勢這一維度跟大家進行了講解,沒有對細節(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]. 《領域驅(qū)動設計》


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

聊聊微服務(一)

聊聊微服務(一)

聊聊微服務(一)

長按訂閱更多精彩▼

聊聊微服務(一)

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

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

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