更新
我最近對這個框架進行了重大升級,雖然所做的改動不大,但成效顯著,這次更新修復了舊框架中的所有主要問題,盡管它的的主要專案結構和介面都沒有改變,具體改動內容請參見清晰架構(Clean Architecture)的Go微服務—重大升級, 現在它幾乎擁有了我理想框架中的所有內容,它是一個輕量級的框架,但功能強大,并且還是可插拔的,我寫了如下4篇文章來講述新的框架,
-
"一個可以自我進化的微服務框架"
-
"一個非侵入的Go事務管理庫——如何使用"
-
"一個非侵入的Go事務管理庫——作業原理"
-
清晰架構(Clean Architecture)的Go微服務—重大升級
如果你想上一個新的專案,那么我建議你從新的框架開始,至于我寫的講述舊的框架的文章大部分仍然有效,在新的框架中有三種模式,從簡單到復雜,舊的框架是基于第三種模式的,是最復雜的,由于新的文章只覆寫了新的內容,舊的文章仍然需要閱讀,至于閱讀順序,是先讀新的還是先讀舊的到關系不大,如果你沒有讀過任何一篇,那么你可以從新的入手,再讀舊的,如果你已經讀了舊的,那么再讀新的,可能會對整個脈絡比較清晰,如果有些文章中有一些不一致的地方,那么以新的文章為準,改動比較多的是事務管理和日志管理,程式結構也有一些小的改動,
原文
我用Go和gRPC創建了一個微服務專案,并試圖找出最好的程式結構,它可以作為我其他專案的模板,我還將程式設計和編程的最佳實踐應用于Go Microservice程式,例如清晰架構(Clean Architecture),依賴注入(Dependency Injection),日志記錄,錯誤處理等,我有Java背景,并發現自己在Java和Go之間掙扎,它們之間的編程理念完全不同,我寫了一系列關于在專案作業中做出的設計決策和取舍的文章,
閱讀這些文章不需要熟悉Go,但如果你有Go基礎絕對會有幫助,如果你不會Go并且無法確定文章中的代碼在做什么,那么你需要從這里Go by Example1(你不必完成里面的所有主題,只需要前面幾個)學習一些基本的Go,本系列中的“事務支持”涉及到資料庫,需要Go中的一些資料庫知識,你可以從Go database / sql tutorial獲取它2,如果你對Go Microservice編程感興趣并思考和關心代碼設計,程式結構,編碼風格,日志記錄,事務管理和依賴注入,那么這個系列非常適合你,
本系列的側重點?
本系列不是關于如何快速創建程式原型,而是關于如何進行良好的程式設計使之能適應將來的變化,例如,你可能希望將一個服務的部分功能拆分為單獨的微服務,或添加事務支持,或切換到更好的日志記錄器,但不想更改代碼中的每個日志記錄陳述句,運用此專案中的程式設計,在進行上述更改時不會觸及業務邏輯代碼,你甚至很少更改任何現有代碼(容器代碼除外),多數時候只添加新代碼,因此QA作業量大大減少,你可以使用此程式作為下一個微服務應用的基礎框架,省去了從頭開始的麻煩,你唯一需要做的就是熟悉本框架的內部結構,如果你有Spring(Java)背景或來自面向物件的經歷,或者知道清晰架構(Clean Architecture)或SOLID (面向物件設計),那么這些代碼應該對你很熟悉,
你無需按以下順序閱讀文章, 如果你熟悉清晰架構(Clean Architecture)3或SOLID (面向物件設計)?,你可以按任意順序閱讀文章而不會有任何問題, 但我還是建議你至少先讀完第一篇,它將為你提供整個專案的概述,然后你可以選擇后面的任何一篇的文章,
-
清晰架構(Clean Architecture)的Go微服務: 程式結構
-
清晰架構(Clean Architecture)的Go微服務: 程式設計
-
清晰架構(Clean Architecture)的Go微服務: 設計原則
-
清晰架構(Clean Architecture)的Go微服務: 編碼風格
-
清晰架構(Clean Architecture)的Go微服務: 事物管理
-
清晰架構(Clean Architecture)的Go微服務: 日志管理
-
清晰架構(Clean Architecture)的Go微服務: 程式容器(Application Container)
-
清晰架構(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
[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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/12460.html
標籤:架構設計
上一篇:2020數學建模國賽A-E題
下一篇:高可用+可伸縮存盤方案
