Kubernetes,Istio和Java MicroProfile微服務雲原生案例 - heidloff
在過去的幾周裡,我參與了一個新的示例應用程式,該應用程式演示瞭如何構建基於微服務的架構。雖然還有一些我想補充的小問題,但我認為這個樣本現在非常全面,對於開發人員,特別是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的AdoptOpenJDK,OpenLiberty和MicroProfile。
3.讓第一次體驗儘可能簡單
有許多樣本,程式碼段,文章和教程可用於各種雲原生功能,其中許多非常好。但是,我在一個應用程式中一起執行其中一些功能時遇到了問題。有時他們使用不同的Java堆疊,有時使用不同的版本,有時文章已經過時。
示例應用程式顯示了多個功能協同工作,詳細資訊請參見下文。還有一些指令碼可以非常輕鬆地部署服務,基本上每個服務都有一個指令碼,類似於Cloud Foundry應用程式的“cf push”體驗。
4. 能夠在不同的環境中執行應用程式
幸運的是,這是Kubernetes的主要優勢之一,因為您可以執行本地,混合或公共雲基礎架構的工作負載。該repo具有如何將應用程式部署到Minikube和託管IBM Cloud Kubernetes服務的說明。
樣本申請的功能
該專案演示了以下功能:
相關文章
- [雲原生微服務架構](十二) Kubernetes和docker都做了啥微服務架構Docker
- 聊聊雲原生和微服務架構微服務架構
- SpringBoot、Kubernetes和Istio微服務網格演示原始碼Spring Boot微服務原始碼
- 從微服務到雲原生微服務
- 雲容器雲引擎:容器化微服務,Istio佔C位出道微服務
- 雲原生 go-zero 微服務框架Go微服務框架
- 雲原生架構下的微服務選型和演進架構微服務
- 雲原生微服務框架之go-zero微服務框架Go
- 容器雲技術:容器化微服務,Istio佔C位出道微服務
- 從微服務治理的角度看RSocket,. Envoy和. Istio微服務
- 跨語言微服務框架-Istio簡紹和概念微服務框架
- Java微服務開發指南–使用Docker和Kubernetes構建可伸縮的微服務Java微服務Docker
- [雲原生微服務架構](九)入門HELM微服務架構
- 雲原生微服務的下一站,微服務引擎 MSE 重磅升級微服務
- [雲原生微服務架構](十)微服務架構的基礎知識微服務架構
- 基於阿里雲 ASK 的 Istio 微服務應用部署初探阿里微服務
- IBM, Google和Lyft釋出微服務管理框架IstioIBMGo微服務框架
- 基於Istio/gRPC/Redis/BigQuery/Spring Boot/Spring Cloud和Stackdriver的微服務案例RPCRedisSpring BootCloud微服務
- 【連載】微服務網格Istio(一)微服務
- Dapr和Rainbond整合,實現雲原生BaaS和模組化微服務開發AI微服務
- 雲原生語境下,如何重新解讀微服務?微服務
- Solon 1.8.0 釋出,雲原生微服務開發框架微服務框架
- 微服務2.0時代:Spring Cloud Netflix與 Kubernetes&Istio比較微服務SpringCloud
- Kubernetes+Docker+Istio 容器雲實踐Docker
- 雲原生時代,微服務到底應該怎麼玩兒?微服務
- 40% 的雲原生開發者專注於微服務領域微服務
- 雲原生時代 PHP/Golang 專案如何實現微服務PHPGolang微服務
- Spring Boot與Kubernetes雲原生微服務實踐-楊波-極客時間-返現優惠Spring Boot微服務
- 阿里雲Kubernetes容器服務Istio實踐之整合日誌服務Log Service阿里
- [雲原生微服務架構](十一) Kubernetes高可用叢集二進位制部署(Runtime Containerd)微服務架構AI
- Dubbo 3.0 - 開啟下一代雲原生微服務微服務
- 案例:微服務從Java/SpringBoot遷移到Golang微服務JavaSpring BootGolang
- Quarkus和MongoDB微服務簡單案例原始碼MongoDB微服務原始碼
- 【大話雲原生】微服務篇-五星級酒店的服務方式微服務
- 精彩分享 | 歡樂遊戲 Istio 雲原生服務網格三年實踐思考遊戲
- 使用 Flux+Flagger+Istio+Kubernetes 實戰 GitOps 雲原生漸進式(金絲雀)交付UXGit
- 微服務使用者為什麼要用雲原生閘道器微服務
- ServiceMesh 1:大火的雲原生微服務網格,究竟好在哪裡?微服務