深入淺出雲原生架構(三):服務編排和服務網格

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本系列文章的"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part1\/","title":"","type":null},"content":[{"type":"text","text":"第一部分"}]},{"type":"text","text":"探討了微服務、無服務器和容器化等技術趨勢的架構演變和戰略性架構模式。在技術平臺發生重大變化時,遵循松耦合、可擴展、基於接口設計等原則的架構會更有彈性。設計良好的解決方案會將業務邏輯與技術組件(會隨着時間推移而變得過時)隔離開來,經得起時間的考驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part2\/","title":"","type":null},"content":[{"type":"text","text":"第二部分"}]},{"type":"text","text":"重點探討架構穩定性缺陷和反模式(如分佈式單體、“死星架構”),以此說明平衡架構和技術穩定性的必要性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三部分探討微服務架構中服務交互的重要性,分佈式系統的典型挑戰,以及像服務編排和服務網格這樣的先進架構模式如何幫助我們克服這些挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"微服務架構帶來了不少好處,但也帶來了一些挑戰。我們會將這些挑戰視爲架構機會,探討如何通過服務編排來克服它們。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文討論的設計模式適用於像AWS、VMware Tanzu Application Service(之前的Pivotal Cloud Foundry)或Kubernetes這樣的雲平臺。但是,你也可以把它們用在非雲基礎設施裏。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在不少組織中,Kubernetes已經成爲事實上的雲平臺。服務網格框架提供了一種讓我們得以在雲上充分利用Kubernetes的卓越方法,不管你現在已經在使用Kubernetes,還是計劃將來對它做些研究。本文將介紹服務網格如何幫助我們管理生產環境的服務部署。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1box-1-business-logic-1630320217028.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先看下我們(作爲程序員或架構師)在分佈式應用程序架構中所遇到的挑戰。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"挑戰1:筒倉式開發"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面是一個分佈式系統的例子,說明了在基於服務的架構和雲平臺出現之前傳統應用程序面臨的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-1-siloed-development-example-updated-1630320217028.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖1、筒倉式開發示例"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個例子中有兩個客戶端應用程序(App 1和App2)和三個業務服務(Service 1、Service 2和Service 3)。App 1和Service 1以及Service 2交互。App 2只和Service 2交互。Service 2還會與Service 3交互。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們仔細分析下App 1,看看這個應用程序裏發生了什麼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個例子說明了微服務出現之前典型的應用程序開發和部署方式,即使是在今天,有些應用程序仍然在使用這種設計。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-2-Application-and-service-functionality-under-the-hood-1630320217028.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖2、應用程序和後臺的服務功能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上面的示例應用程序包含了關鍵的業務邏輯,也混合了非業務邏輯任務,所有功能都嵌在了應用程序代碼裏:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"非功能性的:驗證、授權、通知等。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"常見的平臺任務:服務路由、服務發現、服務重試\/斷路器、跟蹤等。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通常,非功能性需求被硬編碼到應用程序中,與業務邏輯攪合在一起,儘管那是諸多應用程序的共同關注點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個例子顯示了一個傳統的應用程序包含多少真正的業務代碼,相比之下,非功能性任務應該在應用程序之外處理,並供多個業務應用使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"8個功能中僅有1個是應用特有的邏輯,其他7個功能不應該和應用程序邏輯耦合在一起。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1box-2-architecture-artifacts-1630320217028.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果仔細看下其他的應用程序,很可能也會發現同樣的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從Service 1、2、3中可以看到類似的模式。每個服務的業務邏輯都混合了非功能性的平臺任務,和我們前面看到的一樣,它們不應該包含在服務裏。我們看到了一些共有的非功能性服務,如身份驗證、授權、客戶通知等。還有一些所有業務應用程序共有的平臺服務,如路由、服務發現、服務監控和跟蹤,這些服務託管在雲平臺上。當我們仔細查看每個組件時,這個包含2個應用、3個服務的分佈式系統的簡單例子似乎看上去就不那麼簡單了,如下所示:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-3-Distributed-systems-example-with-common-functionality-duplicated-in-each-app-and-service-1630320217028.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖3、分佈式系統示例,這些應用和服務之間有一些共有的重複的功能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所有的應用程序和服務都包含了所有的非功能代碼。這種設計存在很多缺點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這些應用程序和服務中,同樣的功能有大量重複的實現,導致應用程序開發週期變長(上市時間),而且維護成本呈指數增長。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些共有的功能嵌入到了每個應用和服務中,每個功能都使用了特有的技術和框架,如分別使用"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/projects\/spring-cloud-gateway","title":"","type":null},"content":[{"type":"text","text":"Spring Cloud Gateway"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/zipkin.io\/","title":"","type":null},"content":[{"type":"text","text":"Zipkin"}]},{"type":"text","text":"或"},{"type":"link","attrs":{"href":"https:\/\/www.jaegertracing.io\/","title":"","type":null},"content":[{"type":"text","text":"Jaeger"}]},{"type":"text","text":"實現路由和跟蹤。底層技術的任何升級都需要修改應用程序,重新構建和部署,導致停機和中斷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1box-3-business-logic-common-functions-updated-1630327861021.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於存在這些挑戰,分佈式系統變得複雜。這些應用程序需要重新設計和重構,以避免筒倉式開發和一次性解決方案的泛濫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於網絡越來越穩定和可靠,可以開始將“進程內”調用(如圖3所示)轉換爲“通過網絡”通信了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"經過重新設計後,藉助“公共服務”這一設計模式,這些複雜的系統可以使用共有的功能,但又不必將它們嵌入到每個應用程序和服務中。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"公共服務"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於嵌入在每個應用程序裏的代碼,我們的處理方式是將每個公共功能封裝到自己的服務裏,並託管在雲中一箇中央服務器(也許是VM)上或容器中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-4-Common-functionality-encapsulated-in-independent-microservices-1630327861021.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖4、封裝在獨立微服務中的公共功能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當應用需要執行公共功能時,客戶端應用程序就會調用這些遠程服務。如圖4所示,公共邏輯不再嵌入到每個應用程序或業務服務中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公共服務應該是無狀態的,最好是按照"},{"type":"link","attrs":{"href":"https:\/\/12factor.net\/","title":"","type":null},"content":[{"type":"text","text":"12要素應用"}]},{"type":"text","text":"最佳實踐開發或重構,這樣就可以在消費者應用程序中重用,提升其價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以使用開源框架來開發這些公共服務,如用於Java應用程序的"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/projects\/spring-boot","title":"","type":null},"content":[{"type":"text","text":"Spring Boot"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/projects\/spring-cloud","title":"","type":null},"content":[{"type":"text","text":"Spring Cloud"}]},{"type":"text","text":",用於ASP.NET應用程序的"},{"type":"link","attrs":{"href":"https:\/\/docs.microsoft.com\/en-us\/aspnet\/core\/fundamentals\/middleware\/?view=aspnetcore-5.0","title":"","type":null},"content":[{"type":"text","text":"Asp.Net Core"}]},{"type":"link","attrs":{"href":"https:\/\/docs.microsoft.com\/en-us\/aspnet\/core\/fundamentals\/middleware\/?view=aspnetcore-5.0","title":"","type":null},"content":[{"type":"text","text":"中間件"}]},{"type":"text","text":"。在理想情況下,這些服務都是12要素應用程序,都可以比較容易地部署到任何雲平臺上。在生產環境中管理和監控也比較容易。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這種架構有若干優點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開發速度更快,交付時間更短,這也意味着上市時間更短。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"單個部署,獨立於其他應用程序和服務,因此,組件之間的依賴性較小。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以對每個服務進行擴展。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"天然符合安全和技術標準。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更小、更快、更簡單的在線維護讓我們不必在升級共享功能時重新構建和部署所有應用程序和服務。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"長期來看,技術債務更少。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些公共服務可以託管在雲平臺上(如"},{"type":"link","attrs":{"href":"https:\/\/aws.amazon.com\/","title":"","type":null},"content":[{"type":"text","text":"AWS"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/azure.microsoft.com\/en-us\/","title":"","type":null},"content":[{"type":"text","text":"Azure"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/kubernetes.io\/","title":"","type":null},"content":[{"type":"text","text":"Kubernetes"}]},{"type":"text","text":"或"},{"type":"link","attrs":{"href":"https:\/\/tanzu.vmware.com\/application-service","title":"","type":null},"content":[{"type":"text","text":"VMWare Tanzu Application Service"}]},{"type":"text","text":",之前叫Pivotal Cloud Foundry)。這些平臺對自動擴展、監控、快捷部署等特性提供了良好的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而,公共服務只是雲原生之旅的過渡架構,並非最終目標。即便如此,基於公共服務的架構也帶來了不少好處,當然也帶來了一些挑戰,包括緊耦合的服務交互,以及在路由、發現、斷路器策略方面缺少中心化的策略執行機制。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於那些新出現的挑戰,本文稍後會專門介紹。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着微服務在組織裏的採用和推廣,客戶端應用程序和業務服務以及服務與服務之間的通信變得非常重要。如果處理不好這種通信複雜性,可能會導致服務性能退化以及系統可用性問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在,讓我們更詳細地看下應用和服務之間的通信挑戰。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"挑戰2:應用與服務以及服務與服務之間的通信"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着我們將大型應用程序分解成細粒度的服務,部署的組件總量在增加,這使得這些組件之間的交互變得越來越複雜。圖5說明了這種複雜性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-5-Application-to-service-communication-challenges-1630328963068.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖5、應用程序與服務之間通信的挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"即使是對於從每個客戶端應用程序中提取出來單獨部署的公共功能,服務之間的相互依賴以及服務之間的調用方式對於這種架構也是一個很大的威脅。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們擴展下前面的例子,增加一些業務服務,看看對服務通信有什麼影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從圖5服務之間的通信可以看出,不同的服務之間仍然是緊耦合的,當整個系統變慢或是出現中斷時,還是很難準確定位哪個服務有問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可能會想,其他採用微服務的公司同樣也會面臨交互模型複雜這樣的挑戰。他們確實遇到了。像Netflix、Amazon、Twitter這些公司都經歷過同樣的挑戰,原因是任何應用程序或服務調用其他的服務時缺少一個有效的服務通信模型或治理流程。正如"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part2\/#theCommentsSection","title":"","type":null},"content":[{"type":"text","text":"本系列文章第二部分"}]},{"type":"text","text":"指出的那樣,這種架構挑戰在行業裏相當普遍,它被定義成一個反模式“"},{"type":"link","attrs":{"href":"https:\/\/mrtortoise.github.io\/architecture\/lean\/design\/patterns\/ddd\/2018\/03\/18\/deathstar-architecture.html","title":"","type":null},"content":[{"type":"text","text":"死星架構"}]},{"type":"text","text":"“。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1box-4-death-start-architecture-1630328963068.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些公司是通過服務編排來克服這一架構挑戰的。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"服務編排"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-6-Service-orchestration-improved-service-to-service-interaction-1630328963068.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖6、利用服務編排改進服務間通信"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在圖6所示的服務編排模型中,我們對於公共服務的處理還是像之前的架構一樣,在客戶端應用程序之外,它們會單獨部署,有自己的生命週期和擴展性要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最主要的改進是,我們將路由服務移到了所有公共服務的前面。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客戶端應用程序應該只調用路由服務。路由服務將根據用例以及來自客戶端應用程序的請求的上下文信息,按照預定義的順序調用一個或多個公共服務和應用服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"該架構有許多好處:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,客戶端應用程序和公共服務之間是松耦合的,可提供靈活的流量管理和中心化的策略執行機制。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些策略可以是安全相關的,如身份驗證和授權,可以是SLA相關的,如服務重試和斷路器規則,還可以是可觀測性和監控相關的。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"該架構提供系統的端到端監控。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"該架構還爲其中不同部分(客戶端應用程序、後端公共服務或者是路由器本身)的交互提供了很大的靈活性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客戶端應用程序可以是Web應用程序、移動App、IoT設備或其他服務。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"後端服務可以是單體應用、微服務或"},{"type":"link","attrs":{"href":"https:\/\/aws.amazon.com\/lambda\/","title":"","type":null},"content":[{"type":"text","text":"無服務器函數"}]},{"type":"text","text":"。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"路由服務可以用於提供不同的能力,如路由\/分流、生產應用零停機的金絲雀部署。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客戶端和服務之間的通信可以使用基於請求\/響應機制的事務性同步方式,也可以使用基於消息發佈\/訂閱的異步方式。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在服務編排架構中,消費者應用程序團隊只需要關注用戶界面和應用程序特有的服務,保護業務邏輯和IP不受技術變化和公共基礎能力(非應用程序特有的能力)的影響。所有的公共服務——不管是業務服務,非功能性服務,還是平臺服務——都託管在雲平臺上供路由服務調用,路由服務充當了服務編排器的角色。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如圖7所示,公共服務中使用的所有技術和框架完全是從消費者應用程序中抽象出來的。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"技術抽象"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-7-Service-orchestrator-based-solutions-abstract-technologies-from-client-applications-1630329480308.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖7、基於服務編排的解決方案從客戶端應用程序中抽象出來的技術"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們來看下服務編排如何從客戶端應用程序中把技術抽象出來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用圖7所示的中心化服務編排器,客戶端應用程序不需要知道這些技術中的任何一項。此外,這些技術中的任何一項升級都不會影響客戶端應用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1box-5-seamless-updates-1630329480308.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"與本文迄今爲止所討論的基於服務的架構類似,雖然服務編排架構看上去同樣不錯,但它也面臨着一些挑戰:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"路由服務會成爲一個單點故障。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"會有一些性能開銷,因爲路由服務需要通過網絡調用場景中涉及的每個服務。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"沒有服務的本地調用。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"沒有去中心化的策略執行機制。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"截至目前,我們前面討論的3種不同的架構(傳統的分佈式系統、基於微服務的架構和基於服務編排的應用程序)都面臨一些挑戰。現在,讓我們探討下兩種新興的雲原生設計模式:"},{"type":"link","attrs":{"href":"https:\/\/philcalcado.com\/2017\/08\/03\/pattern_service_mesh.html","title":"","type":null},"content":[{"type":"text","text":"服務網格"}]},{"type":"text","text":"和挎鬥(sidecar)。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"服務網格和挎鬥"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在本文最後,我們將探討基於服務網格和挎鬥設計模式的架構模型。Kubernetes對挎鬥模式提供了開箱即用的支持,所以這個模型很適合Kubernetes平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"該架構模型如圖8所示,和基於服務編排的解決方案一樣,其中仍有一個名爲“控制平面”的中心化組件,定義和管理不同的策略。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"挎鬥容器(數據平面的一部分)會在運行時自動注入業務服務。這些挎鬥代理會執行在控制平面中定義的策略,並將其複製到數據平面。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於服務網格的解決方案有助於改善分佈式系統架構的安全性、可觀測性和流量管理功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於服務網格的解決方案所遵循的基本原則是:集中式的策略管理,非集中式的策略執行(兩全其美)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/imgopt.infoq.com\/fit-in\/625x1000\/filters:quality(80)\/filters:no_upscale()\/articles\/cloud-native-architecture-adoption-part3\/en\/resources\/1Figure-8-Service-mesh-and-sidecars-for-Kubernetes-hosted-apps-1630329480308.jpg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"圖8、面向Kubernetes託管應用的服務網格和挎鬥"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"服務網格功能"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如下所示,與傳統的微服務架構相比,基於服務網格的解決方案在連接性、可靠性、安全性和可觀測性方面提供了諸多好處。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"連接性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"流量控制(路由、分流)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"網關(入口、出口)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務發現"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"A\/B測試、金絲雀"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務超時、重試"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"可靠性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"斷路器"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"故障注入\/混沌測試"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"安全性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務間身份驗證(mTLS)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"證書管理"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶身份驗證(JSON Web Tokens)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶授權(基於角色的訪問控制)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據加密"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"可觀測性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"監控"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"遙測、儀表盤、指標"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分佈式跟蹤"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務圖"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近年來,服務網格技術吸引了許多人的注意,已經有一些實現,如"},{"type":"link","attrs":{"href":"https:\/\/istio.io\/","title":"","type":null},"content":[{"type":"text","text":"Istio"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/linkerd.io\/","title":"","type":null},"content":[{"type":"text","text":"Linkerd"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/www.consul.io\/docs\/connect","title":"","type":null},"content":[{"type":"text","text":"Consul Connect"}]},{"type":"text","text":"等。由於本文的重點是探討成功的微服務架構所採用的架構模式,所以我們沒有深入探討服務網格的特性和實現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果想了解更多關於服務網格技術的內容,請閱讀"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/minibooks\/service-mesh-guide\/","title":"","type":null},"content":[{"type":"text","text":"InfoQ迷你書《服務網格終極指南》"}]},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"總結"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"微服務之間的交互和通信有多種不同的實現方式。服務編排可以通過將API網關作爲架構核心組件來實現。如果我們需要的能力超出了API網關的範圍,那麼我們可以使用服務網格和挎鬥來應對那些額外的雲原生架構需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在雲原生應用程序架構中,一件很重要的事情是設計層次之間的交互,包括如何在建模工作中把數據、服務和事件作爲一等公民。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在本系列文章的第4部分中,我們將討論最後一部分內容:雲原生DevOps。我們將看下DevOps實踐(CI\/CD、容器華、Kubernetes雲平臺、微服務和服務編排模式)如何幫助組織上雲。"}]},{"type":"heading","attrs":{"align":null,"level":2}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"參考資料"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part1\/","title":"","type":null},"content":[{"type":"text","text":"深入淺出雲原生架構(一):架構演進與成熟"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part2\/","title":"","type":null},"content":[{"type":"text","text":"深入淺出雲原生架構(二):反模式"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/philcalcado.com\/2017\/08\/03\/pattern_service_mesh.html","title":"","type":null},"content":[{"type":"text","text":"服務網格模式"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/vp-microservices-communication-governance-using-service-mesh\/","title":"","type":null},"content":[{"type":"text","text":"通過微服務網格實現微服務通信與治理"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/vp-microservices-orchestration-choreography\/","title":"","type":null},"content":[{"type":"text","text":"服務交互和治理模型:Orchestration vs Choreography"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/multi-runtime-microservice-architecture\/","title":"","type":null},"content":[{"type":"text","text":"多運行時微服務架構"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/presentations\/microservices-factors\/","title":"","type":null},"content":[{"type":"text","text":"可靠的微服務"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices","title":"","type":null},"content":[{"type":"text","text":"在微服務中引入Istio服務網格"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者簡介:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Srini Penchikala"},{"type":"text","text":"是德克薩斯州奧斯汀通用汽車公司全球製造IT部門的高級IT架構師。他在軟件架構、設計和開發方面有超過25年的經驗,目前專注於雲原生架構、微服務和服務網格、雲數據管道和持續交付。Penchikala在組織中是企業雲原生服務網格解決方案的共同創建者和首席架構師。 Penchikala寫了"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/minibooks\/apache-spark\/","title":"","type":null},"content":[{"type":"text","text":"Big-Data Processing with Apache Spark"}]},{"type":"text","text":"一書,並與人合著了"},{"type":"link","attrs":{"href":"https:\/\/www.manning.com\/books\/spring-roo-in-action","title":"","type":null},"content":[{"type":"text","text":"Spring Roo in Action"}]},{"type":"text","text":"一書。他經常在大會上演講,是一名大數據培訓師,並在多個技術網站上發表了多篇文章。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Marcio Esteves"},{"type":"text","text":"是德克薩斯州休斯頓東京海運HCC的應用開發總監,他領導解決方案架構、質量保證和開發團隊,協調企業和業務IT部門開展合作,推動通用技術的採用,其重點關注的是創造收入、全球部署、基於雲的系統。在此之前,Esteves是通用汽車IT全球製造部的首席架構師,領導架構師和雲原生工程師團隊,主要負責數字化轉型技術,如機器學習、大數據、物聯網和人工智能\/雲優先的微服務架構。Esteves制定了願景和戰略,並領導了通用汽車企業雲原生服務網格解決方案的實施,其中包括供多個關鍵業務應用程序使用的可自動擴展的微服務。他還擔任了位於奧斯汀市中心VertifyData的董事會技術顧問。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/cloud-native-architecture-adoption-part3\/","title":"","type":null},"content":[{"type":"text","text":"Adoption of Cloud Native Architecture, Part 3: Service Orchestration and Service Mesh"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章