Kubernetes,Istio和Java MicroProfile微服務雲原生案例 - heidloff

banq發表於2019-04-11

在過去的幾周裡,我參與了一個新的示例應用程式,該應用程式演示瞭如何構建基於微服務架構。雖然還有一些我想補充的小問題,但我認為這個樣本現在非常全面,對於開發人員,特別是Java EE開發人員來說,學習微服務和雲原生模式是一個很好的選擇。
該示例可用作開源。GitHub repo被稱為cloud-native-starter

Kubernetes,Istio和Java
在構建雲原生應用程式時,開發人員面臨著如何解決流量路由,彈性,分散式監控,服務發現等主題的挑戰。幸運的是,大多數這些新挑戰都是由業務流程平臺Kubernetes和服務網路Istio處理的。此功能通常適用於微服務,無論它們是在何種語言中實現,都不會更改應用程式邏輯。
但是,編排平臺和服務網格無法涵蓋某些功能。相反,它必須在微服務的業務邏輯中處理,例如特定於應用程式的故障轉移功能,指標和細粒度授權。
Java開發人員可以利用Eclipse MicroProfile來實現此功能。MicroProfile是Java EE(企業版)的擴充套件,用於構建基於微服務的體系結構,並補充了Kubernetes和Istio功能。除了Kubernetes和Istio無法處理的特定於應用程式的邏輯之外,它還具有開發微服務時通常需要的便利功能,例如呼叫REST API的機制和實現REST API(包括其文件)的功能。

設計原則
示例應用程式遵循以下設計原則:

  • 儘可能地利用平臺 - 在語言特定的框架中儘可能少地做
  • 僅將開源元件用於應用程式的核心服務
  • 讓第一次體驗儘可能簡單
  • 能夠在不同的環境中執行應用程式

讓我更詳細地解釋一下設計原則。

1. 儘可能地利用平臺 - 在語言特定的框架中儘可能少地做
使用Kubernetes和Istio處理流量管理等功能的優點是,這些功能與語言無關。雲原生應用程式可以並且通常是多語言。這允許開發人員為特定任務選擇最佳語言。

2. 僅將開源元件用於應用程式的核心服務
在我擔任開發人員的角色中,我與許多開發人員交談。幾乎每個人都喜歡開源。為了面向儘可能多地開發人員,示例僅在應用程式的核心服務使用開源專案。例如Java堆疊利用OpenJ9,OpenJDK的AdoptOpenJDKOpenLibertyMicroProfile

3.讓第一次體驗儘可能簡單
有許多樣本,程式碼段,文章和教程可用於各種雲原生功能,其中許多非常好。但是,我在一個應用程式中一起執行其中一些功能時遇到了問題。有時他們使用不同的Java堆疊,有時使用不同的版本,有時文章已經過時。
示例應用程式顯示了多個功能協同工作,詳細資訊請參見下文。還有一些指令碼可以非常輕鬆地部署服務,基本上每個服務都有一個指令碼,類似於Cloud Foundry應用程式的“cf push”體驗。

4. 能夠在不同的環境中執行應用程式
幸運的是,這是Kubernetes的主要優勢之一,因為您可以執行本地,混合或公共雲基礎架構的工作負載。該repo具有如何將應用程式部署到Minikube和託管IBM Cloud Kubernetes服務的說明

樣本申請的功能
該專案演示了以下功能:


相關文章