清晰架构(Clean Architecture)的Go微服务
倚天码农 · · 2215 次点击 · · 开始浏览我用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 (面向对象设计)4,你可以按任意顺序阅读文章而不会有任何问题。 但我还是建议你至少先读完第一篇,它将为你提供整个项目的概述,然后你可以选择后面的任何一篇的文章。
- 清晰架构(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/se...
索引:
[1] Go by Example
不堆砌术语,不罗列架构,不迷信权威,不盲从流行,坚持独立思考
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
我用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 (面向对象设计)4,你可以按任意顺序阅读文章而不会有任何问题。 但我还是建议你至少先读完第一篇,它将为你提供整个项目的概述,然后你可以选择后面的任何一篇的文章。
- 清晰架构(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/se...
索引:
[1] Go by Example
不堆砌术语,不罗列架构,不迷信权威,不盲从流行,坚持独立思考