Java輕量微服務框架:Java-micro
可以使用Go Micro作為Go服務的框架,該框架的主要關注點是與Micro相容。 這兩種語言的框架在能力和方法上有點分歧,但它們確實相容。
Micro框架處理了許多關注點,以便開發人員可以簡單地專注於他的服務的功能。
特點:
1. 可以簡單地只需將服務構建為docker容器或fat jar即可。
2. 可從環境,命令列和外部配置服務進行配置。
3. 標準化的json日誌。
4. 標準化測量指標報告
5. 用於呼叫其他服務上的端點並處理來自它們的錯誤的簡單介面。
6. 客戶端負載平衡器
7. 簡單的服務介面支援健康檢查。
8. 資料庫遷移內建。
9. 使用kafka簡化事件處理。
10. 可插入服務登錄檔註冊和發現服務例項。
11. 與Go Micro相容,允許選擇實現語言。
12. Guice依賴注入,以方便實現和測試場景。
13. 元件來建立服務整合測試場景。
服務註冊器
服務登錄檔可以和不同的後端(consul等)整合,其主要目標是為每個服務例項(可能是一個匿名的IP地址和隨機埠上)註冊,以便其他例項可以定位該服務例項。 它也是可擴充套件的。 服務資訊包含特殊格式的標籤,其包含關於每個端點的請求和響應訊息的格式以及其他標籤的資訊。
客戶端負載平衡器
在RpcClient的表面後面有一個客戶端負載平衡器。 這與服務註冊器進行互動,以跟蹤服務想要與之互動的服務的例項,跟蹤它們的健康狀態以便知道例項是否應該接收請求,並且跟蹤每個rpc呼叫的響應結果,以便維護“斷路器“功能,從而限制對非健康服務例項的暴露。
RpcClient和錯誤處理
為了允許服務呼叫其他服務,支援輕鬆建立RpcClient。 RpcClient是抽象另一個服務的rpc端點的物件。可以使用RpcClientFactory建立RpcClient。一旦有了RpcClient,呼叫另一個服務端點就像使用protobuf請求訊息呼叫callSynchronous方法(未來版本的框架也將支援非同步呼叫)一樣簡單,並且它將返回protobuf響應訊息。
超時策略、重試策略和錯誤處理都由客戶端處理。預設情況下,我們說如果響應是可重試的,預設的重試策略應該是重試失敗的請求一次。在將來的版本中,我們將新增對時間預算的支援,其中服務的客戶端可以設定允許為整個請求提供服務的時間。現在,我們有一個預設超時為1000ms的靜態策略,並且可以根據客戶端進行自定義。
RpcCallException類定義了所有的異常類別,它們的預設可檢索設定,以及生成的HTTP狀態程式碼(使用HTTP傳輸時)。當一個服務呼叫另一個服務(客戶端呼叫伺服器)時,如果伺服器在處理響應期間丟擲異常,則將該異常透明地傳輸回客戶端,並可以在客戶端重新丟擲(忽略此處的重試方面)。
健康檢查
每隔幾秒鐘,服務例項的執行狀況將報告給服務註冊器外掛。使用註釋,支援服務開發人員輕鬆掛鉤到健康檢查,以將服務例項標記為不合理。還有一個介面可以立即更改例項的執行狀況。
配置處理
如果需要配置服務中的任何元件,它可以簡單地獲取注入到其中的ServiceProperties物件,並從中請求配置屬性。屬性位於三個位置:命令列,環境變數和配置外掛。它們以此順序應用。具有與後來源不同的值的相同屬性將覆蓋較早的源。配置外掛提供了進行長輪詢的能力,以便每個服務可以從任意源獲得對配置更改的實時更新。有用於服務元件的鉤子以獲得配置改變的實時通知。
記錄
有標準化的日誌記錄。日誌記錄是json物件,標記可用於在這些物件上動態建立屬性。日誌格式可以完全自定義。
測量指標
存在標準化的度量處理。這對Sixt的基礎設施非常重視,並且使用以特定格式格式化的度量併傳送到流入代理以報告回中心influxdb群集的度量。指標報告可插入,以支援任何所需格式的報告指標到任何所需的目的地。
卡夫卡活動
有很多工廠/建設者可以輕鬆地建立Kafka主題的釋出商和訂閱者。
輸出
可以構建一個影子jar(fat jar - 包括所有依賴),或一個docker映象。可以使用陰影jar進行開發人員測試。影子jar也是docker映象任務的依賴。要在偵錯程式中啟動服務,請使用JettyServiceBase作為主類。
資料庫遷移
目前支援Flyway資料庫遷移,它支援許多不同的SQL資料庫。這種支援擴充套件到仔細控制服務生命週期和健康檢查。未來版本應支援DynamoDB例項的基本遷移支援。
依賴注入
依賴注入在java-micro中被大量使用。它嚴格支援Guice。
服務整合測試
我們在微服務專案中大量使用Sixt的自動化。為了支援這一點,框架給予開發人員自動化服務整合測試的能力。這意味著核心基礎架構依賴(例如,在一個服務上,這是consul,postgres,zookeeper和kafka),並且服務本身作為docker-compose下的容器啟動。另外,為了消除由於為每個其他服務依賴(及其依賴性等)啟動容器而引起的問題,存在一個稱為ServiceImpersonator的類,它可以用作服務登錄檔中可用的完整服務模擬,並提供真正的rpc請求。開發人員可以對映請求和響應,而不是為這些請求提供服務的例項。
可以使用設定'rpcClientRetries'覆蓋預設RpcClient重試策略(1)。可以使用設定'rpcClientTimeout'覆蓋預設RpcClient超時策略(1000ms)。
相關文章
- Oracle釋出開源的輕量級 Java 微服務框架 HelidonOracleJava微服務框架
- 甲骨文推出的 Java 微服務框架 Helidon:輕量簡單Java微服務框架
- Soa: 一個輕量級的微服務庫微服務
- 微服務架構基礎之輕量級部署微服務架構
- 5款Java微服務開源框架Java微服務框架
- spring微服務架構設計與輕量級微服務架構及最佳部署Spring微服務架構
- Java 微服務框架 Redkale 入門介紹Java微服務框架
- 用於微服務開發的 Java 框架微服務Java框架
- 輕量級微服務架構實踐之 ANOYI-IM微服務架構
- 微服務架構下的輕量級定時任務解決方案微服務架構
- 最熱門的13個Java微服務框架Java微服務框架
- 微服務框架-dubbo整合nacos框架微服務框架
- 輕量級IOC框架:Ninject框架
- 淺析微服務框架微服務框架
- TOP 13大最熱開源微服務Java框架微服務Java框架
- 跟著《架構探險》學輕量級微服務架構 (一)架構微服務
- 跟著《架構探險》學輕量級微服務架構 (二)架構微服務
- 不想寫sql?試試這款輕量級JAVA ORM框架!SQLJavaORM框架
- Flutter路由輕量級框架FRouterFlutter路由框架
- 輕量級orm框架——gzero指南ORM框架
- 輕量級Web框架Flask(二)Web框架Flask
- 超輕量級PHP框架BroPHPPHP框架
- go-zero:微服務框架Go微服務框架
- PhalApi(π框架) - PHP輕量級開源介面框架API框架PHP
- dotnet core微服務框架Jimu ~ 會員授權微服務微服務框架
- dotnet core微服務框架Jimu ~ 會員註冊微服務微服務框架
- Javalin2.4.0釋出,Kotlin/Java輕量級Web框架JavaKotlinWeb框架
- 微服務分散式事務Saga框架微服務分散式框架
- looter——超輕量級爬蟲框架爬蟲框架
- Fd.Service 輕量級WebApi框架WebAPI框架
- 如何編寫輕量級 CSS 框架CSS框架
- 微服務容錯限流框架Hystrix微服務框架
- 微服務框架之微軟Service Fabric微服務框架微軟
- 微服務分散式企業框架微服務分散式框架
- KIXEYE Chassis開源微服務框架微服務框架
- Java微服務 vs Go微服務,究竟誰更強!?Java微服務Go
- [鬥魚] 沒人比我更懂微服務--Go 微服務框架 Jupiter微服務Go框架
- Java 微服務實踐Java微服務