国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

微服務架構下的系統集成

開發 前端
微服務架構相比單體架構而言的優點,可以列舉出很多:服務個體更小,更內聚,業務職責更清晰,可復用性更強,可以獨立部署發布等等。

 [[406848]]

微服務架構相比單體架構而言的優點,可以列舉出很多:服務個體更小,更內聚,業務職責更清晰,可復用性更強,可以獨立部署發布等等;從軟件開發的角度,靈活性和效率都會有很大的提升……

然而,微服務架構本質上是分布式系統架構,各個服務需要配合協同來完成產品的需求,業務數據的分散使得服務之間需要通過集成來完成協同工作,那么問題來了,集成要采用什么方式?要以什么樣的原則進行?如何設計才能盡量保證不同服務之間數據的一致性?

混亂的實現

微服務架構下推薦使用REST作為服務間同步通信的方式,對于非實時需求,可以基于事件來實現異步協作。這個原則非常簡單,也非常容易實現,然而僅遵循這個原則卻很難讓我們沿著微服務的道路走下去。一些號稱微服務架構的系統,最初服務拆分并無太大問題,但隨著邏輯的不斷擴展,跨服務數據交換場景的增加,這個簡單的原則就很難指引日常的決策,甚至引發了一些新的問題,舉幾個例子:

  • 服務循環依賴

    在一些場景下服務A依賴服務B,會調用服務B的API,而在另外一些場景下,服務B也需要服務A的數據,也會通過調用服務A的API來實現。單從實現層面來看,按需獲取數據,實現很方便,可以完成業務要達成的效果;但從長遠來看,兩個服務的耦合越來越緊,未來新增需求的實現成本會越來越高,成為技術債

  • 第三方系統集成實現到業務服務中

    在一些業務場景下,當前產品需要的業務數據需要從幾個第三方系統獲取并進行整合甚至經過一些計算后才能使用,之前的一些項目在初期實現時,數據從第三方系統獲取后,經過處理直接寫入業務數據庫,就把集成的代碼直接寫到業務服務中,看起來并沒有太大的問題,只要代碼上做好隔離就好了。但實際上,后期發生了一些棘手的問題讓我們不得不作出改變:

  1. 一些定時觸發的集成任務,每次只會在一個服務實例上運行,在運行期間可能會有大量的數據讀取、計算、更新、插入等操作,會短時大量占用當前服務實例的資源,嚴重的情況下當前服務實例甚至無法正常對外提供服務
  2. 相似的集成以同樣的方式集成到業務服務中,比如不同品牌的產品庫存會從多個第三方系統獲取,業務服務變的臃腫
  3. 集成方的一些變化直接影響到業務服務,比如API的升級,這種改變必須要重新升級部署業務服務才能完成
  • 集成接口不冪等

    無論在第三方系統集成和內部服務的調用過程中,接口不冪等都會造成數據不一致的問題。最典型的場景是服務A調用服務B的接口更新或寫入數據,服務B處理成功,但由于網絡原因,服務A沒有收到服務B的響應,服務A重試調用接口,此時,服務B由于接口不冪等返回異常的響應,導致業務流程無法繼續下去

理想是豐滿的,現實是骨感的,大多數的項目開始于滿懷激情的整潔架構的夢想,而開發工作并不像想象的那么順利,伴隨著項目人員更替、交付壓力大、人員能力不足等等,架構開始逐漸走向大家不期望的方向,技術債臺高筑,攻城獅們疲于奔命的追趕進度的同時,只能望債臺興嘆。

集成的原則

當問題發生時,架構師們都能第一時間站出來說這個設計太爛了,怎么能做成這樣;事后諸葛是我們積累經驗的重要手段,從高筑的技術債臺,從疲于救火的線上問題,從接了新需求卻找不到合理方案……我們一直在總結經驗,為了避免再次摔倒在同一個地方,有哪些架構設計原則可以先行呢?

單向依賴

微服務拆分之初都定義了各個服務的上下游關系,我們可以定義上下游服務的依賴關系如下:

  • 下游服務可以直接依賴上游服務,下游服務可以通過上游服務提供的API同步對上游服務的數據進行讀寫
  • 上游服務不依賴下游服務,上游服務數據狀態變化如果會對下游服務產生影響,可以通過發布領域事件,由下游系統監聽事件作出對應的操作

    服務間僅冗余引用信息

    微服務的各個領域實體之間存在著各式各樣的關系,當領域實體A依賴領域實體B的信息時,通常需要在領域實體A中保留一部分領域實體B的副本信息,那這份副本信息中該包含哪些信息呢?

舉個例子,領域實體A是訂單,領域實體B是客戶,客戶端每次查詢訂單信息時,都要求同時查出客戶的姓名、性別和手機號碼,將這3個關鍵信息冗余在訂單的服務中就可以輕松滿足需求了,一切聽起來是那么的美好。

然而,這3個關鍵信息如果是可以變化的,那么問題就來了,如果領域實體B中的信息更新了,領域實體A中的信息要不要更新,如果不更新會造成數據不一致,如果更新無端增加了復雜度,而很有可能因此而產生循環依賴。

因此,在無法確定數據變化的準確情況時,在副本中只保留引用信息最保險,需要完整信息時可以通過引用查詢相關信息。

為第三方系統構建外觀服務

面對第三方系統集成,在系統集成過程中要考慮的更周全,一般情況下,我們無法控制第三方系統,一旦集成出現問題,需要溝通解決方案,排期開發,聯調測試等等,修復周期很長。

另一個問題是第三方系統通常采用的技術棧或集成方式可能和我們的系統完全不同。比如它可能是個非常老舊的系統,提供的接口是基于XML的SOAP;再比如它可能無法提供API,只能通過導出文件到某個SFTP或發送郵件的方式進行集成……

為了讓第三方系統集成產生盡量小的影響,我們傾向于構建外觀服務來隱藏第三方系統實現的細節,通過外觀服務對第三方系統的功能進行包裝,提供和當前系統更加一致的集成方式。我們可以把外觀服務和第三方系統看做是一個整體,那么第三方系統的集成對于當前系統內的服務來說,服務間的集成就可以和內部服務一樣處理。而對于第三方系統集成相關的細節內容被隔離在外觀服務中,第三方系統集成的變化,只需要修改外觀服務就可以了。

集成接口實現要考慮冪等性

這個原則非常簡單,但實現過程中非常容易被忽略,如果不在設計好的測試用例中,測試過程中也很難發現問題;多數情況下是到了線上,用戶使用的真實場景才會發現問題,這時已經產生了業務影響。

因此在涉及集成的接口中,要特別關注,業務上是否要求接口的冪等性,接口不冪等的情況下業務是否能夠正常的流轉。

契約測試

服務提供的接口通常不只有一個消費者,不同消費者關心的信息往往可能也不一樣,隨著服務數量的增加,在沒有契約測試的情況下,很有可能發生因為一個需求修改了當前服務接口的實現,而影響其他已有功能。而往往這個問題直到全面回歸的時候才能完全發現,甚至可能發生因改動范圍很小,回歸不夠,在上線前也難以發現。

契約測試可以很好的解決這個問題,一方面測試前置,盡早提供反饋,另一方面也起到了架構守護的作用。

小結

系統集成是分布式系統中一定會談及的問題,而且是個大問題,因為它直接影響到當前系統的架構,一個微不足道的改動很可能就破壞了整個系統架構的原則,久而久之原則便形同虛設。

微服務架構也不例外,在缺少架構約束的情況下,只圖一時之快的實現往往會葬送了微服務的優勢,一個個微小的不合理改動會逐漸將整個架構大廈摧毀,所謂千里之堤,潰于蟻穴就是這個道理。

因此,在微服務架構設計之初,我們就要在團隊內建立一些原則,明確系統間集成需要遵守的一些規范,并且在實踐過程中定期review,必要時可以采用一些架構守護的輔助工具,來保護架構的健康度。

責任編輯:張燕妮 來源: 洞見
相關推薦

2022-08-09 12:27:37

API集成微服務

2017-07-17 15:50:17

微服務Docker架構

2018-08-01 14:20:11

微服務架構人工智能

2022-03-29 10:36:32

技術架構微服務

2023-07-28 09:23:24

微服務架構

2021-09-06 11:34:47

架構微服務Hystrix

2023-07-27 14:03:51

微服務

2020-08-24 15:40:34

Java技術架構

2018-04-25 10:05:09

AI微服務架構算法

2025-11-14 00:25:00

微服務架構并發

2020-08-25 10:34:22

微服務微服務架構生產環境

2018-04-19 09:32:46

2017-03-14 11:52:52

微服務架構數據管理

2020-12-09 09:21:41

微服務架構數據

2023-08-31 17:13:01

架構軟件開發

2019-10-16 08:41:46

微服務架構Nginx

2022-01-26 09:36:53

Consul語言微服務

2022-12-21 16:13:31

微服務架構

2020-12-01 12:08:45

微服務架構DOMA

2020-06-09 22:05:44

NGINX微服務架構
點贊
收藏

51CTO技術棧公眾號

厕沟全景美女厕沟精品| 99久久.com| 亚洲va欧美va人人爽| 久艹在线免费观看| 天堂蜜桃91精品| 91深夜福利视频| 亚洲精品亚洲人成在线| 亚洲人成在线电影| 超碰电影在线播放| 大桥未久av一区二区三区| mm131亚洲精品| www.视频一区| av中文字幕av| 麻豆国产91在线播放| 国产伦精品一区二区三区在线 | 羞羞视频在线观看欧美| 国产精品欧美亚洲777777| 成人精品毛片| 久久99青青精品免费观看| 四虎地址8848精品| 影音先锋欧美精品| 成人18视频在线观看| 亚洲美女又黄又爽在线观看| 黄色aa久久| 亚洲精品一二区| 国产精品久久久久av电视剧| 日韩激情第一页| 97久久香蕉国产线看观看| 日韩精品丝袜在线| 激情视频网站在线播放色| 日韩精品在线影院| 欧美三级精品| 免费av一区二区| 亚洲va久久久噜噜噜久久| 国产精品极品在线| 中文字幕亚洲精品乱码| 国产一级二级三级精品| 国产精品日韩久久久| 三区精品视频| 丁香天五香天堂综合| av片中文字幕| 亚洲欧洲性图库| 2023欧美最顶级a∨艳星| 激情亚洲一区二区三区四区| 97在线观看免费观看高清 | 国产又大又长又粗又黄| 国产高清不卡一区| 日韩少妇内射免费播放| 中文字幕精品—区二区四季| 九色中文视频| 在线精品国精品国产尤物884a| 丝袜国产在线| 日韩中文字幕久久| 女厕嘘嘘一区二区在线播放| 岛国一区二区三区高清视频| 美国三级日本三级久久99| 波多野结衣家庭教师在线| 国产精品久久久久影院色老大| 国产美女在线播放| 日韩一级黄色大片| 国产成人精品一区二区三区视频 | 97香蕉超级碰碰久久免费的优势| 成人a'v在线播放| 欧洲精品码一区二区三区免费看| 不卡一区二区三区四区| 中文字幕一区二区三区域| 日韩精品一区二区三区四区视频| 亚洲欧洲一二区| 99久久精品久久久久久ai换脸| 国产成人一区在线| 蜜臀一区二区三区| 亚洲欧美综合图区| 国产精品成久久久久| 免费在线黄网站| 欧美性xxxx在线播放| 精品69视频一区二区三区| 51精品国产人成在线观看| 国产91精品在线观看| 国产黄在线看| 97免费视频在线| 久久精品国产成人一区二区三区 | 成人h片在线播放免费网站| 伊人精品在线| 狠狠操精品视频| 婷婷国产在线综合| 第一中文字幕在线| 欧美激情精品久久久久久免费印度| 欧美禁忌电影网| 老司机精品福利在线观看| 亚洲视频综合| 三级4级全黄60分钟| 色老综合老女人久久久| 国产99在线| 国产精品xxxxx| 免费精品视频在线| 人善交video高清| 538在线一区二区精品国产| 成人啊v在线| 国产综合第一页| 久久一区二区三区四区| 色大18成网站www在线观看| 欧美激情精品久久久久久| 欧美成人一品| 黄色片一级视频| 欧美电影免费观看完整版| 成人午夜三级| 亚洲国产精品久久久久婷婷老年| **欧美大码日韩| 国产免费拔擦拔擦8x高清在线人| 国产成人精品视频在线观看| 理论片日本一区| 最近97中文超碰在线| 久久噜噜噜精品国产亚洲综合 | 久久久久久久国产精品视频| 亚洲综合二区| 男人午夜天堂| 久久精品中文字幕| 日韩主播视频在线| 深夜影院在线观看| 欧美高清在线观看| 九九视频精品免费| 电影在线一区| 国产精品无码专区在线观看| 91网址在线看| 美女高潮视频在线看| 91在线高清视频| 亚洲国产欧美在线人成| 国产一区二区三区精品在线观看| 国产在线播放一区二区| 有坂深雪av一区二区精品| 粉嫩av国产一区二区三区| 亚洲二区自拍| 欧美日韩你懂得| 久久久人成影片免费观看| 天堂a中文在线| 国产91精品网站| 欧美高清一级片在线观看| 精品福利在线| 乱熟女高潮一区二区在线| 精品电影一区二区| 激情成人亚洲| h网站久久久| aa成人免费视频| 黄色成人在线播放| 成人在线免费视频观看| 1069男同网址| 韩国三级电影久久久久久| 亚洲国产精品成人综合色在线婷婷 | 亚洲精品第一| 欧美日韩午夜爽爽| 精品精品国产高清a毛片牛牛| 激情五月***国产精品| 尤物网址在线观看| 国产高清不卡av| 欧美性xxxx极品高清hd直播| 欧洲福利电影| 在线资源av| 91视频国产一区| 一本到三区不卡视频| 一区二区日韩免费看| www.av在线播放| 久久福利电影| 日韩欧美在线123| 天使萌一区二区三区免费观看| 日本激情在线观看| 久久久综合香蕉尹人综合网| 亚洲精品国产成人久久av盗摄 | 国产黄大片在线观看画质优化| 狠狠久久综合婷婷不卡| 欧美少妇性性性| 国产欧美一级| 天堂久久午夜av| 欧美a v在线播放| 色综合久久久久久中文网| 国产精品久久久久桃色tv| 综合色就爱涩涩涩综合婷婷| 亚洲美女在线免费观看| 国产精品专区一| 欧美日韩国产片| 日本欧美一区二区| 日本欧美一区| 视色视频在线观看| 成人精品在线视频| 欧美日韩不卡一区二区| 欧美视频官网| 亚洲青青久久| 天海翼一区二区三区四区在线观看| 国产精品福利视频| 亚洲国产成人精品电影| av电影一区二区| 风间由美中文字幕在线看视频国产欧美 | 久久免费一级片| 久久久国产视频91| 亚洲精品美腿丝袜| 欧美成人综合| 蜜桃视频www网站在线观看| 国产手机免费视频| 国产精品天天狠天天看| 精品国产自在久精品国产| 久久精品夜色噜噜亚洲a∨|