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

10個優秀實踐技巧,實現有效的微服務架構

開發 架構
去年有人提出了微服務將瘋狂至死,微服務的爭論從未停止過。今天,小芯給大家帶來的是不能不提系列——正確實施微服務架構的10條技巧(也是10個優秀實踐)。

[[285723]]

 微服務架構是什么?

這是筆者自己整理的定義:

微服務架構是將軟件系統分解為自主模塊,這些自主模塊可獨立部署,并通過輕量級,與語言無關的方式進行通信,共同實現業務目標。

軟件系統很復雜。由于人腦只能接受一定程度的復雜性,因此大型軟件系統的高度復雜性會帶來許多問題。大規模、復雜的軟件系統難以開發、增強、維護,難以實現現代化以及擴大規模。

多年來,人們做了許多嘗試,以解決軟件系統的復雜性問題。20世紀70年代,David Parnas和Edsger W引入了模塊化軟件開發。Dijkstra解決了軟件系統復雜性這一問題。在90年代,引入了分層軟件架構,解決業務應用程序的復雜性。自21世紀初以來,面向服務的架構(SOA)脫穎而出,以開發復雜的業務應用程序。微服務架構是處理現代軟件應用程序復雜性的新方法。

此時可能會出現一個問題:為什么突然需要一種新的軟件開發方法?

簡單來說,軟件開發所處的整個生態系統在過去十年里發生了巨大變化。如今,軟件會通過Agile方法開發,利用CI / CD法在Container + Cloud上進行部署,然后保留在NoSQL數據庫上,最后呈現在瀏覽器或智能手機上,而且這些設備在高速網絡下會連接在一起。基于這些因素,微服務架構于2012年應運而生。

微服務或Monolith

對于微服務與Monolith,主要有兩類人群持相反的觀點。

對一類人群而言,微服務架構就是一種貨物崇拜(Cargo-Cult)或一種趨勢驅動開發(Hype Driven Development),這對于喜歡技術的開發人員來說,就像是游樂場。

而另一類人群表示,微服務架構是“統治一切的架構”,會消除任何軟件系統的復雜性。筆者看來,微服務和Monolith架構互為補充。對于長期精簡的應用程序,Monolith 架構更為合適。另一方面,對于大型且復雜的應用程序或可能變得大型和復雜的應用程序,微服務架構這一解決方案更好。

如今的軟件開發是十分龐大的工程,可以實現微服務架構和Monolith架構的共存,就如SQL和NoSQL并存一樣。

10個優秀實踐

使用正確的方法設計微服務架構非常具有挑戰性和難度。微服務架構不同于Monolith架構,可以提供一勞永逸的解決方案,微服務體系結構針對不同問題提供不同的解決方案。如果選擇了錯誤的解決方案,那么微服務架構將是一顆定時炸彈,注定會引爆。設計欠佳的微服務架構要比Monolith更加糟糕。定義一套微服務架構的優秀實踐也十分困難。筆者在一些會議演講上聽到過一些著名且受人尊敬的軟件工程師曾提出適得其反的微服務架構優秀實踐。

本文提出了一些微服務架構的優秀實踐,有助于開發有效的微服務應用程序,在該應用程序中,目標項目可以存在6個月以上,并且團隊規模為中型到大型(6名以上的開發人員)。以下幾篇文章全面呈現了有關Microservice Architecture的優秀實踐,例如Martin Fowler撰寫的文章《微服務架構的特征》或Chris Richardson撰寫的《微服務模式》或Netflix的《微服務運用》:Tony Mauro撰寫的《架構設計的若干教訓》。也有一些很棒的演講,例如Stefan Tilkov的演講《微服務模式和反模式》,David Schmitz的演講《應對微服務嚴重失敗的10條技巧》,Sam Newman的演講《微服務原理》。

1. 微前端

不幸的是,大多數后端開發人員對前端開發的看法比較落后,認為前端開發很簡單。由于大多數軟件架構師都是后端開發人員,因此幾乎不關心前端,并且前端通常在架構設計中被忽略。在微服務項目中,后端數據庫常常會高度模塊化,但是有一個Monolith前端。在合適的情況下,開發人員會考慮使用最熱門的SPA(React,Angular,Vue)之一來開發Monolith 前端。

但主要問題在于,前端Monolith與筆者在文章《微服務架構:簡介與在項目中應用的必要性》(MicroserviceArchitecture: A brief overview and why you should use it in your next project)描述的后端Monolith一樣糟糕。

此外,由于更改瀏覽器也要保持前端的同步,就需要進行大爆炸式的現代化(這就是許多公司仍在使用過時的Angular 1框架的原因)。網絡簡單但功能強大,并本身提供嵌入。基于微前端開發SPA有很多方法:使用iFrame、Web組件或通過Elements(Angular / React)。

2. 連續交付

微服務架構的一個關鍵USP是每個微服務都可以獨立部署。如果系統有100個微服務,要求更改一個微服務,那么可以僅更新一個微服務,而無需更改其他99個微服務。

但是,在沒有自動化的情況下獨立部署100個微服務(DevOps,CI / CD)是一項艱巨的任務。要充分利用此微服務功能,需要CI / CD和DevOps法。使用不帶CI / CD,DevOps的微服務架構,自動化就像購買最新的保時捷,然后手動剎車駕駛。不足為奇的是,CI / CD被微服務專家馬丁·福勒(Martin Fowler)列為使用微服務架構的三個先決條件之一。

3. 微服務優先

許多專家認為,對于未開發的(新的)項目,最好從松耦合的單片架構開始,因為微服務架構需要大量的初始工作來設置操作。

專家認為,一旦該項目變得足夠成熟,就可以將“精巧”設計的Monolith輕松地轉換為微服務。但是,筆者認為這種方法在大多數情況下將以失敗告終。實際上,Monolith內部的模塊緊密耦合,這使其難以轉換為微服務。同樣,一旦應用程序正式投入生產,要在不中斷應用程序的情況下轉換為微服務將變得更加困難。因此,如果最終有計劃使用微服務架構,建議一開始就使用微服務。

4. 庫的基礎設施。

在微服務軟件開發的早期,Netflix主要使用Java編程來開發微服務。Netflix還開發了許多庫(包括Hystrix,Zuul的Netflix OSS Stack)。許多公司效仿Netflix,并開始使用Netflix OSS庫。后來,許多公司(包括Netflix)發現Java并不是開發微服務的事實語言,因為Java體積龐大且存在冷啟動問題。

Netflix后來轉向Polyglot微服務范式,并決定不再進一步開發Netflix OSS,這導致追隨Netflix的公司陷入困境。因此,與其大量投資于特定語言的庫(例如基于Java的Netflix OSS),使用框架(例如服務網格,API網關)更為明智。

5. 域驅動設計

開發微服務較大的挑戰是將大型、復雜的應用程序拆分為小型、可管理且可獨立部署的模塊。如果微服務沒有以正確的方式對應用程序進行拆分,那么將存在緊密耦合的微服務,這些微服務將具有Monolith的所有缺點以及微服務(又名分布式Monolith)的所有復雜性。

幸運的是,在這方面已經有一個可以提供許多幫助的解決方案。埃里克·埃文斯(Eric Evans)是一名軟件工程顧問,曾在不同公司中多次遇到有關業務應用程序中復雜性的問題,并在2004年出版的書籍《域驅動設計:解決軟件核心中的復雜性》中總結了很有價值的見解。該書的核心概念可分為以下三類:

  • 軟件開發團隊應與業務部門或領域專家緊密合作。
  • 架構師或開發人員和領域專家應首先進行戰略設計:查找有界上下文以及相關的核心域、通用語言、子域、上下文映射圖。
  • 然后,架構師或開發人員應進行戰術設計,將核心領域分解為細粒度的構建基塊:實體、值對象、聚合、聚合根。

域驅動設計的詳細討論超出了本文的范圍,但是大家應該讀讀原書埃里克·埃文斯(Eric Evans)《域驅動設計:解決軟件核心中的復雜性》(藍皮書)或沃恩·弗農(Vaughn Vernon)所著書籍《實施域驅動設計》(紅皮書)。如果將一個大型系統分為核心域和子域,再將核心域和子域映射到一個或多個微服務,那么可以獲得理想的松耦合微服務。

6. 可觀察性

微服務架構的一個主要缺點在于以運營為代價使軟件開發變得簡單。使用Monolith監視應用程序要更為簡單。但是,由于許多微服務在容器上運行,因此整個系統的可觀察性變得非常關鍵和復雜。甚至日志記錄也變得很復雜,無法將來自許多容器或機器的日志聚合到一個中心位置上。

幸運的是,市場上已經有許多企業級的解決方案。例如,ELK / Splunk提供微服務的日志記錄。Prometheus / AppDynamics提供行業級的監視。在微服務領域,另一個非常重要的可觀察性工具是Tracing。通常,微服務的一個API請求會導致對其他微服務的多次級聯調用。要分析微服務系統的延遲,有必要測量每個微服務上的延遲度。Zipkin / Jaeger為微服務提供了出色的跟蹤支持。

7. 統一技術棧

微服務架構表明,需要采用對于微服務最適合的編程語言和框架。這不應從字面上理解。有時,微服務可能需要新的技術棧,例如對于CPU繁重或高性能的任務,可以選擇C ++ / Rust之類的編程語言。如果微服務可與機器學習一起使用,也許Python是更好的選擇。

但是,在沒有任何充分理由的情況下,使用不同的編程語言或框架可能會出現太多的編程語言和框架,而沒有帶來任何真正的好處。想象一個這樣的場景:使用Spring Boot + Kotlin + React + MySQL開發一種微服務,使用JakartaEE + Java + Angular + PostgreSQL開發另一種微服務,再使用Scala + Play Framework + VueJS + Oracle開發其他一種微服務,那么需要付出很多努力維護不同的編程語言、數據庫和框架,但收獲會很少。

8. 每個微服務的數據庫

將復雜應用程序拆分為微服務模塊后,接下來的挑戰出現了——如何處理數據庫?

是否應該在微服務之間共享數據庫。這個問題的答案是雙刃劍,有利有弊。

一方面,在微服務之間共享數據庫將帶來強大耦合,這與微服務架構的目標恰恰相反。即使數據庫中出現微小變化,也需要團隊之間的同步操作。同樣,在一項服務中,管理事務和鎖定數據庫也具有挑戰性。但是在多個分布式微服務之間管理事務或鎖定數據庫是一項艱巨的任務。

另一方面,如果每個微服務都有自己的數據庫或專用表,則在微服務之間交換數據就會帶來會打開潘多拉魔盒式的挑戰。因此,許多杰出的軟件工程師都提倡在微服務之間共享一個實用的解決方案。但是,筆者認為,微服務完全是一個可持續和長期的軟件開發過程。因此,每個微服務都應具有自己的數據庫(或專用表)。

9. 異步通訊

微服務架構中很具挑戰性的一個設計決策是服務之間如何進行通信和共享數據。當每個微服務都有自己的數據存儲時,這一點尤為重要。

通常,一個微服務可以單獨存在,但不能單獨滿足所有業務目標。所有微服務一起工作,實現業務目標,并繼續一起工作,這些微服務需要交換數據或觸發其他微服務來完成任務。微服務之間最簡單且最常見的通信方式是通過Synchronous REST API,這很實用,但不是長久之計。如果服務A調用服務B,服務B調用服務C,服務C同步調用服務D,那延遲就會疊加。

另外,由于微服務主要是分布式系統,因此可能會有故障。同步微服務通常會導致失敗的級聯,即一個服務中的故障可能導致其他服務出現故障。微服務之間的同步通信還導致微服務之間的緊密耦合。想要有個長久的解決方案,則微服務應該異步通信。微服務之間的異步通信有很多方法:例如,通過Message QueueKafka,通過異步REST(ATOM)或CQRS。

10. 組織注意事項

大約50年前(1967年),梅爾文·康威(Melvin Conway)觀察到,公司的軟件架構受組織結構(康威法則)的限制。盡管這一發現已有50年歷史,但麻省理工大學和哈佛商學院最近發現該法律在現代仍然有效。如果某個組織計劃開發微服務架構,則應相應地擴大團隊規模(兩個“美式”比薩團隊:5人或9人)。此外,團隊應是跨職能的,并且理想情況下擁有前端或后端開發人員、Ops工程和測試人員。微服務架構僅在高級管理層也相應地改變觀點和愿景的情況下才起作用。

以上。

希望大家可以閱讀完以上技巧后,可以正確實施微服務架構。

責任編輯:華軒 來源: 今日頭條
相關推薦

2019-12-17 08:07:58

微服務架構

2020-04-27 10:20:07

微服務架構數據庫

2023-09-11 13:29:00

微服務架構

2023-09-02 20:55:04

微服務架構

2022-04-08 09:00:00

微服務架構安全防火墻

2022-05-13 14:01:46

微服務架構安全微服務

2020-08-07 09:41:00

微服務架構數據

2020-05-29 09:41:26

微服務數據工具

2014-07-29 13:55:10

程序員代碼

2021-02-20 10:26:00

前端

2018-11-28 08:15:09

2020-10-27 06:56:53

IoT產品實踐

2021-05-08 16:11:08

Java開發代碼

2019-11-20 10:32:39

云計算安全技術

2022-11-28 23:48:06

JavaScript編程語言技巧

2021-09-27 09:00:00

開發微服務架構

2022-01-24 10:26:46

Kubernetes微服務

2019-11-05 17:10:19

Java開發編程語言

2018-04-20 10:38:25

2014-12-22 09:59:05

程序員
點贊
收藏

51CTO技術棧公眾號

99久久综合国产精品二区| 欧美色图12p| 国产精品一区二区三区在线观| 嗯啊主人调教在线播放视频| 日韩视频在线你懂得| 在线观看的黄色| 欧美精品第一页在线播放| 理论不卡电影大全神| 久久中文字幕一区| 国产精品88久久久久久| 日本不卡在线观看| 久久久91精品国产一区二区精品| 欧美精品99久久| 欧美激情导航| 美女免费视频一区二区| 精品人妻大屁股白浆无码| 国产精品色婷婷久久58| yiren22亚洲综合伊人22| 亚洲激情免费观看| 亚洲三级av| 久久精品国产精品青草色艺| 欧美无乱码久久久免费午夜一区| 北条麻妃69av| 粉嫩久久99精品久久久久久夜| 国产视频一二区| 在线成人小视频| 久久精品青草| 一本久道中文无码字幕av| 日韩视频在线永久播放| 国产一区二区亚洲| 手机在线看福利| 一本色道久久88综合日韩精品| 亚洲中午字幕| 欧美大陆一区二区| 亚洲人成自拍网站| 欧美日韩免费| 欧美国产综合视频| 2020欧美日韩在线视频| 国产精品久久久久久久久妇女| 亚洲欧美另类中文字幕| 蜜桃精品一区二区三区| 日本高清一区| 91在线看www| 99久久精品免费看国产| 国产福利91精品一区二区三区| 女人另类性混交zo| 色yeye香蕉凹凸一区二区av| 新67194成人永久网站| 深夜成人福利| 日韩电影在线看| 超薄丝袜一区二区| 成人婷婷网色偷偷亚洲男人的天堂| 国产成人免费观看| 亚洲永久精品大片| 黄色网页网址在线免费| 亚洲欧美国产一本综合首页| 视频在线观看国产精品| 久久中文资源| 日本二区视频| 日韩av在线免费观看一区| 国产伦精品一区二区三区视频金莲| 久久综合九色欧美综合狠狠| 校园春色 亚洲色图| 欧美日韩精品一区二区三区四区| 99精品国产高清一区二区麻豆| 日韩欧美99| 亚洲日韩中文字幕| 久久久久国产精品麻豆| 欧美精品momsxxx| 在线视频1区| 国产成人在线一区二区| 久久久久国产精品麻豆ai换脸 | 99国产精品自拍| 日本三级在线观看网站| youjizz.com亚洲| 美女性感视频久久久| 亚洲激情图片一区| 欧美日韩午夜| 综合久久伊人| 国产在线导航| 国产成人精品免费久久久久 | 久久久亚洲成人| 国产精品久久午夜| 国产在线不卡| 亚洲天堂中文字幕在线观看| 最近中文字幕mv2018在线高清 | 亚洲h精品动漫在线观看| 国产一区电影| 国产精品激情av在线播放| 91免费精品国自产拍在线不卡 | 91女主播在线观看| 9999在线观看| 91精品国产综合久久久久久蜜臀 | 亚洲国产日韩一区二区| 日韩成人a**站| 天堂中文资源在线| 警花观音坐莲激情销魂小说| 91精品在线国产| 亚洲区免费影片| 国产欧美日韩亚州综合| 日韩精品一区二区久久| 在线播放麻豆| 国产精品日韩欧美综合| 精品国产91亚洲一区二区三区婷婷 | 91精品国产欧美一区二区成人| 久久一二三国产| 久久电影国产免费久久电影| 日韩高清在线免费观看| 四虎国产精品免费久久| 春暖花开亚洲一区二区三区| 亚洲国产一区在线| 亚洲天天做日日做天天谢日日欢| 91白丝在线| 国产亚洲依依| 在线影视一区| 午夜精彩视频| 日本肉体xxxx裸体xxx免费| 天堂av一区二区| 91国产在线播放| 成人a在线视频| 欧美一乱一性一交一视频| 一区二区国产盗摄色噜噜| 国产不卡视频在线播放| 久久福利影院| 尤物网精品视频| 久久一区国产| 国产精品一区二区x88av| 久久99久久99精品免视看婷婷 | 欧美污视频久久久| 精品一区二区日本| 四虎影院一区二区| 久久久久久久久久久久久国产| 亚洲一区二区精品在线| 精品无码国产一区二区三区av| 国产玉足脚交久久欧美| 久久精品午夜福利| 激情小视频在线观看| 狂野欧美性猛交xxxxx视频| 四虎免费av| 传媒视频在线| f2c人成在线观看免费视频| av网站免费在线观看| 成人黄色毛片| 超碰97成人| 影音先锋亚洲电影| 国产麻豆欧美日韩一区| 国产一区二区成人久久免费影院 | 欧美一区日韩一区| 亚洲欧美另类国产| 日韩免费av一区二区| 欧美日韩精品免费看| 免费看涩涩视频| 丝袜中文在线| 欧美男女视频| 久久久久毛片免费观看| 不卡一区视频| 国产精品av久久久久久麻豆网| 好看不卡的中文字幕| 97se亚洲国产综合在线| 色综合天天在线| 4444欧美成人kkkk| 91国产视频在线| 国产精品制服诱惑| 国产一区一区三区| julia京香一区二区三区| av免费不卡| 欧美三区不卡| 一区二区三区四区国产精品| 亚洲成年人在线播放| 中文国产亚洲喷潮| 久久久久久久久久久一区| 国产欧美va欧美va香蕉在| 精品国产aⅴ麻豆| 春暖花开亚洲| 黄色动漫在线| 欧美日韩精品一区二区视频| 狠狠色丁香久久婷婷综合_中 | 欧美日韩一区二区三区在线看| 亚洲美女福利视频网站| 国产日韩欧美一区二区三区四区 | 91精品婷婷国产综合久久竹菊| 欧美日韩免费观看一区三区| 国产成人aa精品一区在线播放| 国产黄色激情视频| 国产天堂在线播放视频| 99久久夜色精品国产网站| 天天亚洲美女在线视频| 日韩美女在线视频| 欧美精品日日鲁夜夜添| 日韩经典中文字幕| 日本道精品一区二区三区| 久久久www免费人成精品| 日本亚洲一区二区| 亚洲精品色图| 国产乱一区二区| 91精品免费观看| 日本午夜在线亚洲.国产| 国产精品影视| 99久久精品费精品国产| 日韩欧美一区二区三区在线|