中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud微服務的概念是什么

發布時間:2021-12-02 15:22:30 來源:億速云 閱讀:143 作者:柒染 欄目:大數據

本篇文章為大家展示了Spring Cloud微服務的概念是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

單體架構

簡介

在軟件設計中,頻繁被使用的就是我們的經典三層架構了。
1、表示層:用于直接與用戶進行交互,通常是頁面、UI等;
2、業務邏輯層(service):用于處理業務,比如用戶從表示層輸入了消息就要經過業務邏輯層的邏輯處理之后再進行的相關操作;
3、數據訪問層(dao):用于與數據庫進行交互;

而在單體應用中,我們就會把這三層都放在一個工程中,最終通過打成war包發布到服服務器的tomcat的web-app中上線。可以說是十分方便的一個設計理念了!

優劣

單體應用的優勢在于:
1、性價比非常高,通常只需要一臺服務器就能夠把項目跑起來;
2、開發的速度也比較快,運維較簡單,項目架構比較簡單明了,適合小型應用開發。

單體應用的劣勢在于:
1、所有的業務相關操作都放在了一個服務器上,如果項目中某個業務出現了bug,不急時發現就會導致整個項目的癱瘓,最終宕機,而這對于一個大型網站來說無疑是十分致命的問題;
2、業務越來越復雜的時候,單體應用的代碼量就會越來越多,導致最后的代碼可讀性、可維護性越來越差,最終只能進行重構;
3、用戶越來越多的時候,單體應用的并發能力有限;

由此可見:在應用初期,單體應用從成本、開發時間和運維等方面都有優勢,但是單體應用會隨著業務量和用戶量的增加,會暴露出的缺點也是顯而易見的,所以到了現在的這個完全互聯網的時代,單體應用已經不適應時代的發展了!

微服務

什么是微服務

微服務最初是由Martin Fowler在2014年的一篇文章中提出來的,簡單來說,就是將單一的程序開發成一個微服務,每個服務運行在自己的進程中,通常使用HTTP RESTful API的通信風格,獨立部署的工程!

微服務特點

1、微服務單元按業務來劃分:
服務到底要多“微”,這是一個很難的界定的概念,可以從三個方面來定義:
1、根據代碼量定義
2、根據開發時間的長短來定義
3、根據業務大小來劃分
按業務劃分的微服務是主流,各個微服務獨立部署,獨立運行在進程中。微服務單元是高度組件化的模塊,并且提供了穩定的模塊邊界,服務與服務之間沒有任何耦合

2、微服務通過HTTP來互相通信
微服務之間通過簡單的HTTP來調用,更多的是使用RESTful API的風格來調用,實現了服務與語言和平臺無關,例如:使用JAVA寫的微服務可以消費使用Python寫的服務。
服務之間通信也可以通過輕量級的消息總線來實現,例如:RabblitMQ、Kafaka等,通過發布-訂閱的設計模式來實現服務之間通信。
服務與服務之間通信的數據格式一般使用的是json和xml,這兩個也是與語言、平臺無關的,一般來說json更加高效、輕量。另一種是使用Protobuf進行數據的序列化,這種方式比json更加輕量,但是可讀性十分差,需要反序列化才能讀懂,所以在Protobuf在通信協議和數據存儲中經常被使用到。

3、微服務的數據庫獨立
服務會有他的獨立的數據庫,數據庫之間沒有任何的聯系,這樣的好處在于,隨著業務的不斷擴張,數據庫相對獨立,數據量不會太大,易于維護;
但是隨之而來的問題就是如何解決分布式的事務問題了;(這個在后續介紹)

4、微服務的自動部署
一個大工程里會有許多的微服務,如果讓人工去手動部署的話,難免會出紕漏,但是隨著技術的發展,docker的容器化技術的出現,微服務的自動部署的出現,讓微服務的部署越來越簡便。

5、服務集中化管理
隨著服務的增多,服務的管理也就越來越麻煩了,所以需要使用集中化的管理方式,市場上的主流框架就是 Spring Cloud提供的Eureka注冊中心來注冊服務和發現服務,另外,zookeeper和Consul都是優秀的服務集中化管理框架。

6、分布式的架構
分布式的系統是集群部署的,通常是由許多臺計算機共同完成了一個微服務的部署,而分布式的架構是通過HTTP來通信的,所以我們的微服務可以搭建在相隔萬里的不同的兩臺計算機上,對于空間沒有任何束縛。
微服務架構是分布式的架構,而分布式的架構比單體架構更為復雜,主要要確定服務的獨立性和服務的準去可靠性,以及分布式事務、全局鎖、全局Id等問題,都是分布式系統需要考慮的。

7、熔斷機制
為了防止一個服務出現bug,導致的系統資源的耗盡而引起的雪崩效應,系統應該對微服務具有一個熔斷機制;
熔斷機制的意思就是:在一個微服務出現bug的時候,請求失敗次數達到一定的閾值之后,通過熔斷器讓這個微服務斷開服務主體,并且快速返回想要顯示的錯誤信息,過一段時間后再重新連接測試,如此反復的一個機制來保護整個系統的安全運作。
Spring Cloud中對于服務的熔斷提供了Hystrix來實現。

優劣

微服務的優勢:
1、服務進行拆分,每個服務只是負責小小的一塊內容,這讓復雜問題簡單化,開發、維護單個服務較為簡單;
2、微服務的系統是分布式的系統,服務與服務之間沒有任何耦合,隨著業務的增加,我們可以根據業務再拆分服務,這讓微服務系統具備很強大橫向擴展能力;
3、微服務之間完全通過HTTP協議來進行通信,單個微服務內部高度耦合,服務與服務之間完全獨立;
4、重寫單個微服務的業務代碼變得較為簡單;
5、微服務在CAP理論中采用的是AP架構,具有高可用(Availability)和分區容錯(Partition tolerance)的特點,高可用體現在系統7*24小時不斷的服務,它要求系統具有大量的服務器集群配置,分區容錯性也讓系統更加的健壯。

微服務的劣勢:
1、微服務的復雜度比單體服務更為復雜,更難拆分,這讓我們的服務的架構設計上應該設計出一個很棒的架構!
2、分布式的事務處理,如何處理分布式事務是一個業界所一直存在的問題,一般的處理方式是分為兩階段的提交:

第一個階段:服務通過發起一個分布式事務,交給事務協調器TC進行處理,事務調節器TC通過向所有參與該事物的服務節點發送處理事務的準備操作,所有的參與節點執行準備操作,將Undo和Redo信息寫進日志中,并且向事務管理器返回準備操作是否成功;
第二階段:事務協調器TC在一定的時間閾值收集所有節點的準備操作是否成功,如果都成功,則通知所有的節點執行提交操作,如果有一個失敗了,則執行回滾操作!

微服務的設計原則

1、如果在LAMP單體架構夠用的情況下,就該使用LAMP,因為它開發速度快,性價比高,但是隨著業務的發展,用戶的激增,可以考慮把數據庫讀寫分離、加緩存、加復雜均衡服務、將應用集群化部署等等,如果還不夠解決效率,那就可以考慮使用分布式系統,例如微服務的系統架構。
2、微服務在設計的時候一定要考慮到三大難題,服務故障的傳播性、服務的劃分、分布式事務的處理。總之,微服務的設計是漸進的,并且是隨著業務發展而發展的!

上述內容就是Spring Cloud微服務的概念是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇仁县| 泸溪县| 永仁县| 宜兰市| 象山县| 岱山县| 虹口区| 扎赉特旗| 榆林市| 仁化县| 阳城县| 雷山县| 宁国市| 黔西县| 佛学| 新建县| 鄂州市| 自贡市| 乌兰察布市| 和林格尔县| 云安县| 芦山县| 陆良县| 昭平县| 楚雄市| 铜山县| 武平县| 吐鲁番市| 昆山市| 阳城县| 七台河市| 甘孜县| 石柱| 荃湾区| 安丘市| 饶河县| 互助| 新源县| 栾川县| 日喀则市| 尤溪县|