3.15go微服务实战(微服务理论)---领域驱动设计的go语言实现

enlyhua enlyhua     2022-12-02     506

关键词:

第15章 领域驱动设计的Go语言实现 
15.1 聚合模式介绍 
	实体(entity):可以持久化存储的对象
	值对象(value object):值集合的对象,比如"钱"这个值对象包括"币种"和"金额"两个值的集合
	工厂(factory):负责初始化对象的对象或方法
	储存库(repository):用于访问entity,同时封装了访问数据库的方法
	服务(service):用于实现不属于entity也不属于value object的业务逻辑

	DDD中有2个非常重要的模式:聚合(Aggregate)和聚合根(AggregateRoot)。
		1.聚合是对概念上同属于同一实体或者值对象的封装。
		2.聚合根的含义是指,任何对该聚合的访问都仅到达聚合根。

15.2 使用聚合模式 
		为什么在微服务的业务逻辑设计中需要使用聚合,有2个原因:
			1.聚合强调高内聚,除了聚合根意外都无法被外部访问,这样可以避免任何跨服务边界的对象使用;
			2.因为单个事务只能更新单个聚合,因此可以满足微服务的事务模型约束,单个聚合可以实现ACID,同时也可以支持分布式事务。

	15.2.1 聚合拥有明确的边界 
		聚合是一个确定边界内的领域对象的集合,可以将其视为一个整体。聚合由一个聚合根和一个或者多个其他实体或值对象组成。

		之所以聚合有明确的边界,就是为了增加内聚,所以聚合代表了一致性。

	15.2.2 聚合的规则 
		1.只有聚合根可被外部访问
		2.聚合之间的联系通过主键编码而不是引用
		3.单个事务只能创建或更新一个聚合

	15.2.3 聚合颗粒度 
		若聚合较小,无疑会提升数据加载和更新的速度,而且因为聚合比较小也就降低了多个外部请求同时访问同一个聚合的概率;可是聚合太小又会
	让分布式事务非常复

3.13go微服务实战(微服务理论)---微服务中的进程间通信

第13章 微服务中的进程间通信13.1 微服务中的进程间通信概述 13.1.1 交互模式 13.1.2 API定义13.2 protobuf格式 13.2.1 protobuf简介 13.2.2 protobuf的简单使用13.3 gRPC包 13.3.1 net/rpc包 13.3.2 gRPC简介 13.3.3 Go语言实现gRPC调用13.4 ... 查看详情

3.16go微服务实战(微服务理论)---go语言基于es-cqrs的微服务实践

第18章 Go语言基于ES-CQRS的微服务实践18.1 理论介绍 18.1.1 事件溯源 指的是将每次的事件都记录下来,而不是去记录对象的状态。只能追加,不能对已经添加的事件做修改。 18.1.2 命令查询职责分离 1.命令 不返回任何结果... 查看详情

3.16go微服务实战(微服务理论)---go语言基于es-cqrs的微服务实践

第18章 Go语言基于ES-CQRS的微服务实践18.1 理论介绍 18.1.1 事件溯源 指的是将每次的事件都记录下来,而不是去记录对象的状态。只能追加,不能对已经添加的事件做修改。 18.1.2 命令查询职责分离 1.命令 不返回任何结果... 查看详情

3.14go微服务实战(微服务理论)---微服务中的分布式事务管理

第14章 微服务中的分布式事务管理14.1 微服务下的事务管理 14.1.1 面临的难题 14.1.2 SRP的折衷14.2 微服务中处理事务的几种方式 用来管理事务的方法或者原则有很多种,如下: 1.避免使用跨服务的事务; 2.两部提交法,分... 查看详情

微服务实践:微服务的事件驱动数据管理

 微服务实战(一):微服务架构的优势与不足微服务实战(二):使用APIGateway微服务实战(三):深入微服务架构的进程间通信微服务实战(四):服务发现的可行方案以及实践案例微服务实践(五):微服务的事件驱动... 查看详情

chrisrichardson微服务实战系列

微服务实战(一):微服务架构的优势与不足微服务实战(二):使用APIGateway微服务实战(三):深入微服务架构的进程间通信微服务实战(四):服务发现的可行方案以及实践案例微服务实践(五):微服务的事件驱动数据... 查看详情

微服务实战:选择微服务部署策略

 微服务实战(一):微服务架构的优势与不足微服务实战(二):使用APIGateway微服务实战(三):深入微服务架构的进程间通信微服务实战(四):服务发现的可行方案以及实践案例微服务实践(五):微服务的事件驱动... 查看详情

go微服务实战之如何使用go-micro写微服务应用

什么是微服务?什么是微服务(microservice)?这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。大型产品如果不能正常维护,就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传... 查看详情

go微服务实战之如何实现加解密操作的微服务开发

1前言在上一篇文章——《​​Go微服务实战之如何使用go-micro写微服务应用​​》中,我们介绍了微服务的相关概念和go-micro框架的特点。接下来,我们将以循序渐进的方式建立一个简易的提供加解密服务的Go微服务项目。首先为... 查看详情

9.go语言高并发与微服务实战---微服务网关

第9章微服务网关 在微服务架构下,单体应用被切割成多个微服务,如果将所有的微服务直接对外暴露,势必会出现一些问题。客户端可以直接向每个微服务 发送请求,但是会存在如下问题: 1.客户端需求和每个微服务暴露的... 查看详情

2.go语言高并发与微服务实战---微服务概述

第2章微服务概述2.1系统架构的演进 2.1.1单体架构 2.1.2垂直分层架构 2.1.3SOA面向服务架构 2.1.4微服务架构 2.1.5云原生架构2.2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 ... 查看详情

2.go语言高并发与微服务实战---微服务概述

第2章微服务概述2.1系统架构的演进 2.1.1单体架构 2.1.2垂直分层架构 2.1.3SOA面向服务架构 2.1.4微服务架构 2.1.5云原生架构2.2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 ... 查看详情

10.go语言高并发与微服务实战---微服务的容错处理与负载均衡

第10章微服务的容错处理与负载均衡10.1服务熔断 10.1.1分布式系统中的服务雪崩 10.1.2服务熔断保障系统可用性 10.1.3断路器10.2负载均衡 1.负载均衡类型 2.负载均衡算法      查看详情

go微服务实战,docker

 近几年,微服这个词闯入了我们的实线范围。在百度与谷歌中随便搜一搜也有几千万条的结果。那么,什么是微服务呢?微服务的概念是怎么产生的呢?我们就来了解一下Go语言与微服务的千丝万缕与来龙去脉。什么是微服务... 查看详情

微服务实践:从单体式架构迁移到微服务架构

 微服务实战(一):微服务架构的优势与不足微服务实战(二):使用APIGateway微服务实战(三):深入微服务架构的进程间通信微服务实战(四):服务发现的可行方案以及实践案例微服务实践(五):微服务的事件驱动... 查看详情

重新理解微服务之它还那么纯粹吗?

系列文章.Net微服务实战之技术选型篇.Net微服务实战之技术架构分层篇.Net微服务实战之DevOps篇.Net微服务实战之负载均衡(上).Net微服务实战之CI/CD.Net微服务实战之Kubernetes的搭建与使用.Net微服务实战之负载均衡(下).Net微服务... 查看详情

微服务实战:深入微服务架构的进程间通信

    微服务实战(三):深入微服务架构的进程间通信【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺... 查看详情

3.20go微服务实战(微服务实战)---日志和监控

第20章 日志和监控20.1 日志实践20.2 指标 20.2.1 指标数据类型 20.2.2 命名约定 20.2.3 存储和查询 20.2.4 Grafana20.3 日志记录 20.3.1 具有关联ID的分布式跟踪 20.3.2 ElasticSearch、Logstash和Kibana 20.3.3 Kibana 20.4 异常    查看详情