微服務架構十條最佳實踐

java填坑路發表於2018-07-04

確保你在分散式系統中,努力實現這些微服務的最佳實踐,例如監控和REST成熟度。

使用微服務架構可以解決所有的軟體架構的問題,對嗎?當然,這是不對的。但是,使用微服務架構是有價值的。

Hüseyin Babal 最近發表了一個觀點,即微服務架構是無法解決所有的問題的。但是,使用微服務架構是構建現代軟體架構的堅實基礎。在過去的許多年裡,我們都知道維護單體應用而帶來的挑戰,所以 我們尋找一個新的選擇來實現可持續,可擴充套件,易於整合的軟體架構。以最佳實踐為基礎來實現微服務架構可以大幅度的改善你的軟體架構。

Hüseyin 是aurea的首席軟體架構師和Kloia的諮詢師。他最近的演講,微服務架構終極指南涵蓋了他每天工作的大部分的經驗和展現了實現微服務架構的最佳實踐。

在他的演講中,它使用Spring Boot來進行應用開發,Consul作為服務發現,Elasticsearrch 和Kibana作為監控,Docker和Jenkins作為持續交付。演講中包含了十條最佳實踐的程式碼示例演示。

最佳實踐1 — 嘗試達到真正的REST

在意識到REST API的好處之後,我們可以檢視上圖的Leonard Richardson`s 的成熟度模型,對於REST的使用有四個級別的定義。

級別0:使用一個端點來訪問軟體資源

級別1:使用相同的http方法來訪問不同的資源

級別2:使用不用的http方法(例如 GET POST PUT DELETE)來訪問不同的資源

級別3:API響應中擁有導航資源,這是真正的REST。

最佳實踐2 — 使用Spring HATEOAS

這個可以幫助你使用可導航的RESTful api介面。

最佳實踐3 — 使用分散式配置

通過這種方式,你不能一次性配置50不同的配置。Consul可以用來保持鍵/值的配置。

最佳實踐4 — 客戶程式碼生成

Hüseyin 建議“要麼使用Swagger來生成任何支援的語言的客戶端程式碼,要麼通過註解來使用Feign客戶端,以及使用Ribbon進行客戶端的負載均衡”。

最佳實踐5 — 持續交付

Hüseyin 使用Docker和Jenkins進行了持續交付的示例演示。

最佳實踐6 — 監控

事實上,監控無處不在。

最佳實踐7 — 日誌

Hüseyin 指出大量的Docker 日誌驅動。他通過使用GELF(Graylog Extended Log Format)來進行示例演示.

最佳實踐8 — APM

應用效能管理。APM通過蒐集額外的詳細資訊來幫助你解決問題。Hüseyin 表示Zipkin是一個開源產品中的一個可選方案。

最佳實踐9 — 資料聚合到特定的客戶端的API閘道器

最佳實踐10 — 事件訂閱和CQRS(命令和查詢響應分離)

一個命令可以改變一個物件的狀態,但是不會返回資料。一個查詢會返回資料,但是不會更改物件的狀態。

你可以點選這裡看到Hüseyin’s 全部的演講。他為每一個最佳實踐都提供了示例程式碼和解決方案的演示。

歡迎工作一到五年的Java程式設計師朋友們加入Java架構開發:744677563

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有職業生涯規劃以及面試指導


相關文章