基於Java的微服務架構源碼案例Abixen

Java 編程語言 GitHub 文章 解道Jdon 2017-04-28

微服務越來越受歡迎,每個月都有更多的庫包和解決方案來支持微服務的開發測試,很多Java開發人員雖然聽說過微服務,但是真正採用還是有猶豫的:“我知道,微服務是非常棒的,微服務器更容易維護和進一步開發,但我們沒有建立一個良好的基於微服務架構的資源。”


許多嘗試創建微服務應用程序(例如使用Netflix OSS堆棧)的開發人員都疑惑他們是否有足夠的知識來配置整個系統。因為微服務架構所需知識與與單片monolithic 應用程序非常不同,需要額外的組件功能,如請求監視,用於在服務之間共享通信的隊列,註冊表服務,配置服務等等。同時為每個微服務保留一個單獨的數據模型也是一個很好的做法。

在創建模塊化Web應用程序時,開發人員必須專注於精心設計的業務領域設計。將模塊之間的所有耦合最小化,這樣至少避免了體系架構的複雜性。

Abixen Platform是一個完整的微服務架構系統,其源碼可見Github地址:https://github.com/abixen/abixen-platform.

其體系組成部分如下:

1. Eureka:作為服務的註冊器。

2. Hystrix儀表板:允許我們實時監控請求狀態(例如,多少請求超時,多少次成功,多少次失敗等)。

3. Zipkin:一種分佈式跟蹤系統,可幫助您收集應用程序中發生高延遲問題(性能慢)所需的數據。

4. Redis數據庫:用於保存登錄用戶的信息。

5. RabbitMQ:用作在特定微服務器之間發送消息的隊列。例如,核心微服務刪除一個模塊實例,需要讓商業智能微服務或Web內容微服務刪除與其相關的所有配置。

6. Abixen Platform Common:包含用函數式微服務實現的通用API的JAR。

7. Abixen平臺配置:配置微服務。整個應用程序可以在YAML文件中進行逐個配置。

8. Abixen Platform Web Client:核心功能的靜態內容,如頁面和模塊管理,安全管理等。

9. Abixen平臺網關:起到安全網關的作用。每個請求都必須通過這個微服務。

10. Abixen平臺核心:擁有自己的業務核心數據庫,擁有平臺的核心功能,如頁面和模塊管理,安全管理等。

11. Abixen平臺商業智能服務:由於應用程序帶來了函數性的微服務,因此我們將在這裡放置一個用於商業智能報告,圖表創建和進一步管理的模塊。它也有自己的數據庫。

12. Abixen平臺Web內容服務:這與上述服務類似,但是這個函數可以提供內容創建功能,例如用戶可以創建文章。它還有自己的數據庫。

13. 您的服務:由開發人員使用該平臺創建的定製微服務。

該架構基於Netflix OSS技術棧。函數性的微服務不需要在整個平臺上都要部署,您如果不需要圖表或文章管理器,您也可以部署這個平臺並使用獨立開發的微服務。

該架構也很好地映射到Amazon組件。使用諸如EC2,ALB,ECS,ECR,Route53,CloudWatch,Elasticache,ERD和SES之類的服務在AWS上部署應用程序。

工作原理:

1. 用戶使用Web客戶端生成請求。通過Zuul Proxy,請求被轉發到網關微服務。

2. 網關微服務執行安全操作。如果用戶未通過身份驗證,則會引發“未經授權”的異常。如果經過身份驗證,則Zuul Proxy會決定將請求發送到核心平臺或指定的微服務,如商業智能,Web內容或由第三方開發人員創建的。

相關推薦

推薦中...