確定你在分布式系統中,努力實作這些微服務的最佳實踐,例如監控和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
本群提供免費的學習指導 架構資料 以及免費的解答
不懂得問題都可以在本群提出來 之後還會有職業生涯規劃以及面試指導