![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
清晰架构的Go微服务
清晰架构(Clean Architecture)的Go微服务
倚天码农
用Java和Go编写用应用程序。对程序架构和微服务感兴趣
展开
-
清晰架构(Clean Architecture)的Go微服务—重大升级
去年,我创建了一个清晰架构(Clean Architecture)微服务框架,它功能强大,但有些重。我写了一个系列文章来讲述它,请参阅"清晰架构(Clean Architecture)的Go微服务"。 我还指出了设计中存在的一些缺陷,并讲到希望以后能修复它们。现在我终于有时间对它进行了改造,结果比我预期的还要好。我所做的改动不大,但效果惊人。主要的项目结构和接口没有变,我在那些文章中写的大部分内容仍然有效。这次升级修复了旧框架中的所有主要问题。现在它几乎拥有了我理想框架中的所有内容。它是一个轻量级的,但功原创 2020-07-24 17:10:55 · 1078 阅读 · 5 评论 -
一个可以自我进化的微服务框架
本文介绍了一个能够自我进化的轻量级的清晰架构框架。当创建一个新项目时你可以从最简单的轻量级的框架开始。当此项目不断发展变得复杂时,框架可以自我进化为一个功能强大的重量级框架。在此过程中,不需要更改任何业务代码。目前它有三种模式,分别是初级模式,增强模式和高级模式。最复杂的是高级模式,它基于依赖注入,非常强大。我创建了三个简单的应用程序来说明展示如何使用它,每个程序对应一种模式。原创 2020-06-28 12:20:12 · 1478 阅读 · 1 评论 -
一个非侵入的Go事务管理库——工作原理
我对去年写的事务管理代码进行了升级,使其成为一个非侵入式的轻量级事务管理库。当你使用它时,只需要在应用程序中额外增加两三行代码就能搞定,所有其他代码都放在了事务管理库。它很好地将业务代码与数据库事务代码隔离开来,这样你的业务代码里就只有纯粹的业务逻辑。它是一个库而不是框架,所以不论你使用任何框架都可以使用它。本文讨论事务管理库的工作原理原创 2020-06-21 15:36:53 · 1117 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务
我用Go和gRPC创建了一个微服务项目,并试图找出最好的程序结构,它可以作为我其他项目的模板。我还将程序设计和编程的最佳实践应用于Go Microservice程序,例如清晰架构(Clean Architecture),依赖注入(Dependency Injection),日志记录,错误处理等。我有Java背景,并发现自己在Java和Go之间挣扎,它们之间的编程理念完全不同。我写了一系列关于在项目...原创 2020-02-17 09:32:23 · 2709 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务: 编码风格
编码风格在编程中是一个相对乏味的主题,但是合适的编码风格对一个有效的程序员是至关重要的。 它有三个组成部分:程序结构 ( application layout)编码规则或风格命名约定我已经在清晰架构(Clean Architecture)的Go微服务: 程序结构¹中讨论了程序结构,因此本文将介绍后两点。编码规则或风格没有包级别(package level)变量。 ...原创 2020-02-03 09:08:38 · 1508 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务: 事物管理
为了支持业务层中的事务,我试图在Go中查找类似Spring的声明式事务管理,但是没找到,所以我决定自己写一个。 事务很容易在Go中实现,但很难做到正确地实现。需求:将业务逻辑与事务代码分开。在编写业务用例时,开发者应该只需考虑业务逻辑,不需要同时考虑怎样给业务逻辑加事务管理。如果以后需要添加事务支持,你可以在现有业务逻辑的基础上进行简单封装,而无需更改任何其他代码。事务实现细节应该对业务逻...原创 2020-01-22 09:10:35 · 2380 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务: 依赖注入(Dependency Injection)
在清晰架构(Clean Architecture)中,应用程序的每一层(用例,数据服务和域模型)仅依赖于其他层的接口而不是具体类型。 在运行时,程序容器¹负责创建具体类型并将它们注入到每个函数中,它使用的技术称为依赖注入²。 以下是要求。容器包的依赖关系:容器包是唯一依赖于具体类型和许多外部库的包,因为它需要创建具体类型。 本程序中的所有其他软件包主要仅依赖于接口。外部库可以包括DB和DB...原创 2020-01-16 09:50:38 · 2008 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务: 程序容器(Application Container)
清晰架构(Clean Architecture)的一个理念是隔离程序的框架,使框架不会接管你的应用程序,而是由你决定何时何地使用它们。在本程序中,我特意不在开始时使用任何框架,因此我可以更好地控制程序结构。只有在整个程序结构布局完成之后,我才会考虑用某些库替换本程序的某些组件。这样,引入的框架或第三方库的影响就会被正确的依赖关系所隔离。目前,除了logger,数据库,gRPC和Protobuf(这...原创 2020-01-09 19:42:26 · 3122 阅读 · 2 评论 -
清晰架构(Clean Architecture)的Go微服务: 日志管理
良好的日志记录可以提供丰富的日志数据,便于在调试时发现问题,从而大大提高编码效率。 记录器提供的自动化信息越多越好,日志信息也需要以简洁的方式呈现,便于找到重要的数据。日志需求:无需修改业务代码即可切换到其他日志库不需直接依赖任何日志库整个应用程序只有一个日志库的全局实例,因此你可以在一个位置更改日志配置并将其应用于整个程序。可以在不修改代码的情况下轻松更改日志记录选项,例如,日志级...原创 2020-01-03 16:03:46 · 2106 阅读 · 0 评论 -
清晰架构(Clean Architecture)的Go微服务: 设计原则
我最近写了一个Go微服务应用程序,这个程序的设计来自三个灵感:清晰架构"Clean Architecture"¹ and SOLID (面向对象设计)² 设计 原则³Spring的容器技术(Spring’s application context)⁴Go的简洁设计⁵ 特别是 Go的面向对象的设计⁶我使用Spring的基于接口的编程和依赖注入(Dependency Injection...原创 2019-12-30 09:23:59 · 1826 阅读 · 1 评论 -
清晰架构(Clean Architecture)的Go微服务: 程序设计
我使用Go和gRPC创建了一个微服务,并将程序设计和编程的最佳实践应用于该项目。 我写了一系列关于在项目工作中做出的设计决策和取舍的文章,此篇是关于程序设计。程序的设计遵循清晰架构(Clean Architecture)¹。 业务逻辑代码分三层:用例(usecase),域模型(model)和数据服务(dataservice)。有三个顶级包“usecase”,“model”和“dataservi...原创 2019-12-26 09:10:22 · 2192 阅读 · 4 评论 -
清晰架构(Clean Architecture)的Go微服务: 程序结构
我使用Go和gRPC创建了一个微服务,并试图找出最佳的程序结构,它可以用作我未来程序的模板。 我有Java背景,并发现自己在Java和Go之间挣扎,它们之间的编程理念完全不同。我写了一系列关于在项目工作中做出的设计决策和取舍的文章。 这是其中的第一篇, 是关于程序结构的。程序结构的资源Go的标准程序结构的最佳资源可能是Github上的标准Go程序结构¹,但它不适合我的项目。在阅读了Sylvai...原创 2019-12-20 11:32:16 · 3354 阅读 · 0 评论