清晰架构(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

相关文章
相关标签/搜索