清晰架構(Clean Architecture)的Go微服務

我用Go和gRPC建立了一個微服務項目,並試圖找出最好的程序結構,它能夠做爲我其餘項目的模板。我還將程序設計和編程的最佳實踐應用於Go Microservice程序,例如清晰架構(Clean Architecture),依賴注入(Dependency Injection),日誌記錄,錯誤處理等。我有Java背景,並發現本身在Java和Go之間掙扎,它們之間的編程理念徹底不一樣。我寫了一系列關於在項目工做中作出的設計決策和取捨的文章。html

閱讀這些文章不須要熟悉Go,但若是你有Go基礎絕對會有幫助。若是你不會Go而且沒法肯定文章中的代碼在作什麼,那麼你須要從這裏Go by Example¹(你沒必要完成裏面的全部主題,只須要前面幾個)學習一些基本的Go。本系列中的「事務支持」涉及到數據庫,須要Go中的一些數據庫知識,你能夠從Go database / sql tutorial獲取它²。若是你對Go Microservice編程感興趣並思考和關心代碼設計,程序結構,編碼風格,日誌記錄,事務管理和依賴注入,那麼這個系列很是適合你。git

本系列的側重點?github

本系列不是關於如何快速建立程序原型,而是關於如何進行良好的程序設計使之能適應未來的變化。例如,你可能但願將一個服務的部分功能拆分爲單獨的微服務,或添加事務支持,或切換到更好的日誌記錄器,但不想更改代碼中的每一個日誌記錄語句。運用此項目中的程序設計,在進行上述更改時不會觸及業務邏輯代碼。你甚至不多更改任何現有代碼(容器代碼除外),多數時候只添加新代碼,所以QA工做量大大減小。你可使用此程序做爲下一個微服務應用的基礎框架,省去了從頭開始的麻煩。你惟一須要作的就是熟悉本框架的內部結構。若是你有Spring(Java)背景或來自面向對象的經歷,或者知道清晰架構(Clean Architecture)或SOLID (面向對象設計),那麼這些代碼應該對你很熟悉。sql

你無需按如下順序閱讀文章。 若是你熟悉清晰架構(Clean Architecture)³或SOLID (面向對象設計)⁴,你能夠按任意順序閱讀文章而不會有任何問題。 但我仍是建議你至少先讀完第一篇,它將爲你提供整個項目的概述,而後你能夠選擇後面的任何一篇的文章。數據庫

  1. 清晰架構(Clean Architecture)的Go微服務: 程序結構編程

  2. 清晰架構(Clean Architecture)的Go微服務: 程序設計架構

  3. 清晰架構(Clean Architecture)的Go微服務: 設計原則併發

  4. 清晰架構(Clean Architecture)的Go微服務: 編碼風格框架

  5. 清晰架構(Clean Architecture)的Go微服務: 事物管理微服務

  6. 清晰架構(Clean Architecture)的Go微服務: 日誌管理

  7. 清晰架構(Clean Architecture)的Go微服務: 程序容器(Application Container)

  8. 清晰架構(Clean Architecture)的Go微服務: 依賴注入(Dependency Injection)

源程序:

完整的源程序連接 github: https://github.com/jfeng45/servicetmpl

索引:

[1] Go by Example

[2] Go database/sql tutorial

[3][The Clean Code Blog](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)

[4] S.O.L.I.D is for the first five object-oriented design (OOD) principles introduced by Robert C. Martin, popularly known as Uncle Bob and the acronym is introduced later by Michael Feathers

相關文章
相關標籤/搜索