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

溫馨提示×

溫馨提示×

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

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

深入理解分析微服務(上)

發布時間:2020-08-10 15:02:29 來源:網絡 閱讀:471 作者:java周某人 欄目:編程語言

深入理解分析微服務(上)


深入理解分析微服務(上)


前言;

今年有人提出了2019年微服務將瘋狂至死,可見微服務的爭論從未停止過。在這我將自己對微服務的理解整理了一下,希望對大家有所幫助。由于篇幅太長,小編把他分為了上下篇,記得關注我哦

什么是微服務

1)一組小的服務(大小沒有特別的標準,只要同一團隊的工程師理解服務的標識一致即可)

2)獨立的進程(java的tomcat,nodejs等)

3)輕量級的通信(不是soap,是http協議)

4)基于業務能力(類似用戶服務,商品服務等等)

5)獨立部署(迭代速度快)

6)無集中式管理(無須統一技術棧,可以根據不同的服務或者團隊進行靈活選擇)

ps:微服務的先行者Netflix公司,開源了一些好的微服務框架,后續會有介紹。

怎么權衡微服務的利于弊

利:

強模塊邊界 。(模塊化的演化過程:類-->組件/類庫(sdk)-->服務(service),方式越來越靈活)

可獨立部署。

技術多樣性。

弊:

分布式復雜性。

最終一致性。(各個服務的團隊,數據也是分散式治理,會出現不一致的問題)

運維復雜性。

測試復雜性。

企業在什么時候考慮引入微服務

從生產力和系統的復雜性這兩個方面來看。公司一開始的時候,業務復雜性不高,這時候是驗證商業模式的時候,業務簡單,用單體服務反而生產力很高。隨著公司的發展,業務復雜性慢慢提高,這時候就可以采用微服務來提升生產力了。至于這個轉化的點,需要團隊的架構師來進行各方面衡量,就個人經驗而言,團隊發展到百人以上,采用微服務就很有必要了。

有些架構師是具有微服務架構能力,所以設計系統時就直接設計成了微服務,而不是通過單服務慢慢演化發展成微服務。在這里我并不推薦這種做法,因為一開始對業務領域并不是很了解,并且業務模式還沒有得到驗證,這時候上微服務風險比較高,很有可能失敗。所以建議大家在單服務的應用成熟時,并且對業務領域比較熟悉的時候,如果發現單服務無法適應業務發展時,再考慮微服務的設計和架構。

微服務的組織架構

深入理解分析微服務(上)


如上圖左邊,傳統的企業中,團隊是按職能劃分的。開發一個項目時,會從不同的職能團隊找人進行開發,開發完成后,再各自回到自己的職能團隊,這種模式實踐證明,效率還是比較低的。

如上圖右邊,圍繞每個業務線或產品,按服務劃分團隊。團隊成員從架構到運維,形成一個完整的閉環。一直圍繞在產品周圍,進行不斷的迭代。不會像傳統的團隊一樣離開。這樣開發效率會比較高。至于這種團隊的規模,建議按照亞馬遜的兩個披薩原則,大概10人左右比較好。

怎么理解中臺戰略和微服務

中臺戰略的由來:馬云2015年去歐洲的一家公司supersell參觀,發現這個公司的創新能力非常強,團隊的規模很小,但是開發效率很高。他們就是采用中臺戰略。馬云感觸很深,回國后就在集團內部推出了中臺戰略。

深入理解分析微服務(上)


簡單的理解就是把傳統的前后臺體系中的后臺進行了細分。阿里巴巴提出了大中臺小前臺的戰略。就是強化業務和技術中臺,把前端的應用變得更小更靈活。當中臺越強大,能力就越強,越能更好的快速響應前臺的業務需求。打個比喻,就是土壤越肥沃,越適合生長不同的生物,打造好的生態系統。

服務分層

每個公司的服務分層都不相同,有的公司服務沒有分層,有的怎分層很多。目前業界沒有統一的標準。

下面推薦一個比較容易理解的兩層結構。

深入理解分析微服務(上)


1:基礎服務: 比如一個電商網站,商品服務和訂單服務就屬于基礎服務(核心領域服務)。緩存服務,監控服務,消息隊列等也屬于基礎服務(公共服務)

2:聚合服務 :例如網關服務就算一種聚合服務(適配服務)。

這是一種邏輯劃分,不是物理劃分,實際設計的東西很多很復雜。

微服務的技術架構體系

下圖是一個成型的互聯網微服務的架構體系:

深入理解分析微服務(上)


1:接入層 負載均衡作用,運維團隊負責

2:網關層 反向路由,安全驗證,限流等

3:業務服務層 基礎服務和領域服務

4:支撐服務層

5:平臺服務

6:基礎設施層 運維團隊負責。(或者阿里云)

微服務的服務發現的三種方式

第一種:如下圖所示,傳統的服務發現(大部分公司的做法)。服務上線后,通知運維,申請域名,配置路由。調用方通過dns域名解析,經過負載均衡路由,進行服務訪問。缺點: LB的單點風險,服務穿透LB,性能也不是太好

深入理解分析微服務(上)


第二種:也叫客戶端發現方式。如下圖所示。通過服務注冊的方式,服務提供者先注冊服務。消費者通過注冊中心獲取相應服務。

并且把LB的功能移動到了消費者的進程內,消費者根據自身路由去獲取相應服務。優點是,沒有了LB單點問題,也沒有了LB的中間一跳,性能也比較好。但是這種方式有一個非常明顯的缺點就是具有非常強的耦合性。針對不同的語言,每個服務的客戶端都得實現一套服務發現的功能。

深入理解分析微服務(上)


第三種:也叫服務端發現方式,如下圖所示。和第二種很相似。但是LB功能獨立進程單獨部署,所以解決了客戶端多語言開發的問題。唯一的缺點就是運維成比較高,每個節點都得部署一個LB的代理,例如nginx。

深入理解分析微服務(上)


微服務網關

網關就好比一個公司的門衛。屏蔽內部細節,統一對外服務接口。

深入理解分析微服務(上)


下圖是一個網關所處位置的示例圖。

深入理解分析微服務(上)


Netflix Zuul網關介紹

深入理解分析微服務(上)


核心就是一個servlet,通過filter機制實現的。主要分為三類過濾器:前置過濾器,過濾器和后置過濾器。

主要特色是,這些過濾器可以動態插拔,就是如果需要增加減少過濾器,可以不用重啟,直接生效。原理就是:通過一個db維護過濾器(上圖藍色部分),如果增加過濾器,就將新過濾器編譯完成后push到db中,有線程會定期掃描db,發現新的過濾器后,會上傳到網關的相應文件目錄下,并通知過濾器loader進行加載相應的過濾器。

深入理解分析微服務(上)


整個網關調用的流程

上圖從左變http Request開始經過三類過濾器,最終到最右邊的Http Response,這就是Zull網關的整個調用流程。

微服務的路由發現體系

整個微服務的路由發現體系,一般由服務注冊中心和網關兩部分組成。以NetFlix為例子,Eureka和Zull這兩個組件支撐了netFlix整個的路由發現體系。如下圖所示,首先外部請求發送到網關,網關去服務注冊中心獲取相應的服務,進行調用。其次內部服務間的調用,也通過服務注冊中心進行的

深入理解分析微服務(上)


微服務配置中心

目前大部分公司都是把配置寫到配置文件中,遇到修改配置的情況,成本很高。并且沒有修改配置的記錄,出問題很難追溯。配置中心就接解決了以上的問題。

可配置內容:數據庫連接,業務參數等等

深入理解分析微服務(上)


配置中心就是一個web服務,配置人員通過后臺頁面修改配置,各個服務就會得到新的配置參數。實現方式主要有兩種,一種是push,另一種是pull。兩張方式各有優缺點。push實時性較好,但是遇到網絡抖動,會丟失消息。pull不會丟失消息但是實時性差一些。大家可以同時兩種方式使用,實現一個比較好的效果。如下圖所示,這是一個國內知名互聯網公司的配置中心架構圖。

深入理解分析微服務(上)


RPC遇到了REST

深入理解分析微服務(上)


內部一些核心服務,性能要求比較高的可以采用RPC,對外服務的一般可以采用rest。

上半部分先分享到這里,記得關注我哦,每天都會分享java有關的文章

?


向AI問一下細節

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

AI

西乌珠穆沁旗| 揭西县| 闽侯县| 勃利县| 久治县| 沅陵县| 门头沟区| 综艺| 忻州市| 屏东市| 体育| 扶余县| 江山市| 康定县| 肥乡县| 拉萨市| 宜兰县| 滦平县| 阿城市| 宁乡县| 灌阳县| 新丰县| 香格里拉县| 青川县| 渝中区| 湛江市| 平果县| 吉安市| 新建县| 稷山县| 五华县| 安宁市| 承德县| 舟曲县| 长治县| 阿拉尔市| 湟中县| 南陵县| 和硕县| 宜都市| 安图县|