目录前言1.微服务架构下的事务管理1.1分布式事务的挑战1.2一个Saga的示例1.3Saga使用补偿事务来回滚所作出的改变2.Saga的协调模式2.1两种Saga协调模式2.2实现协同式的CreateOrderSaga2.3协同式Sage服务间通信相关的问题2.4协同式Sage的优缺点2.5实现编排式的CreateOrderSaga2.6把Saga编排器视为一个状态机2.7编排式Saga的优缺点3.解决隔离问题3.1Saga只满足ACD3.2缺乏隔离导致的问题3.3Saga的结构模型术语3.4解决隔离问题的对策4.OrderService和CreateOrderSaga的设计4.1Order
目录前言1.业务逻辑组织模式1.1一个典型的服务架构1.2使用事务脚本模式设计业务逻辑1.3使用领域模型模式设计业务逻辑1.4关于领域驱动设计2.使用聚合模式设计领域模型2.1聚合拥有明确的边界2.2聚合规则2.3聚合的颗粒度2.4使用聚合设计业务2.5OrderService基于聚合设计的业务逻辑3.发布领域事件3.1领域事件的应用场景3.2领域事件的特点3.3事件增强3.4识别领域事件3.5生成领域事件3.6发布领域事件3.7消费领域事件4.KichenService的业务逻辑4.1KichenService的设计4.2Ticket类的结构4.3Ticket聚合的行为4.4KitchenS
目录前言1.业务逻辑组织模式1.1一个典型的服务架构1.2使用事务脚本模式设计业务逻辑1.3使用领域模型模式设计业务逻辑1.4关于领域驱动设计2.使用聚合模式设计领域模型2.1聚合拥有明确的边界2.2聚合规则2.3聚合的颗粒度2.4使用聚合设计业务2.5OrderService基于聚合设计的业务逻辑3.发布领域事件3.1领域事件的应用场景3.2领域事件的特点3.3事件增强3.4识别领域事件3.5生成领域事件3.6发布领域事件3.7消费领域事件4.KichenService的业务逻辑4.1KichenService的设计4.2Ticket类的结构4.3Ticket聚合的行为4.4KitchenS
目录前言1.微服务架构到底是什么1.1软件架构的4+1视图1.2应用程序的两个层面需求1.3分层式架构风格1.4关于架构风格的六边形1.5什么是服务1.6微服务架构的架构风格2为应用程序定义微服务架构2.1定义应用程序架构的三步式流程2.2第一步:识别系统操作2.2.1识别系统操作的步骤与一些事项:2.3第二步:定义服务2.3.1根据业务能力进行服务拆分2.3.2根据子域进行服务拆分2.3.3拆分的指导原则2.3.4拆分单体应用为服务的难点2.3.5上帝类阻碍了拆分2.4第三步:定义服务API2.4.1定义服务API的步骤与事项3.本章小结最后前言这是一本关于微服务架构设计方面的书,这是本人阅
目录前言1.微服务架构到底是什么1.1软件架构的4+1视图1.2应用程序的两个层面需求1.3分层式架构风格1.4关于架构风格的六边形1.5什么是服务1.6微服务架构的架构风格2为应用程序定义微服务架构2.1定义应用程序架构的三步式流程2.2第一步:识别系统操作2.2.1识别系统操作的步骤与一些事项:2.3第二步:定义服务2.3.1根据业务能力进行服务拆分2.3.2根据子域进行服务拆分2.3.3拆分的指导原则2.3.4拆分单体应用为服务的难点2.3.5上帝类阻碍了拆分2.4第三步:定义服务API2.4.1定义服务API的步骤与事项3.本章小结最后前言这是一本关于微服务架构设计方面的书,这是本人阅
目录前言1.迈向单体地狱的漫长旅程1.1FTGO应用程序单体架构1.2单体架构的好处1.3FTGO应用程序单体地狱1.4什么是单体地狱2.为什么本书与你有关2.1阅读门槛3.你会在本书中学到什么3.1需要重点关注的知识3.2其他技术4.拯救之道:微服务架构4.1扩展应用程序的三个维度(扩展立方体)[微服务的定义]4.2微服务的基本特性4.3FTGO的微服务架构4.4微服务架构与SOA的异同5.微服务架构的好处与弊端5.1微服务架构的好处5.2微服务架构的弊端6.微服务架构的模式语言6.1一些概念(模式、模式语言等)6.2常用的模式结构包括三个重要部分6.3微服务架构模式语言6.4微服务的主要几
目录前言1.迈向单体地狱的漫长旅程1.1FTGO应用程序单体架构1.2单体架构的好处1.3FTGO应用程序单体地狱1.4什么是单体地狱2.为什么本书与你有关2.1阅读门槛3.你会在本书中学到什么3.1需要重点关注的知识3.2其他技术4.拯救之道:微服务架构4.1扩展应用程序的三个维度(扩展立方体)[微服务的定义]4.2微服务的基本特性4.3FTGO的微服务架构4.4微服务架构与SOA的异同5.微服务架构的好处与弊端5.1微服务架构的好处5.2微服务架构的弊端6.微服务架构的模式语言6.1一些概念(模式、模式语言等)6.2常用的模式结构包括三个重要部分6.3微服务架构模式语言6.4微服务的主要几
目录前言1.微服务架构中的进程间通信概述1.1交互方式的两个维度1.2交互方式的类型1.3API的演化1.4消息的格式2.基于同步远程过程调用模式的通信2.1远程过程调用RPI2.2REST通信协议的特点及优缺点2.3gRPC通信协议的特点及优缺点2.4同步通信下的局部故障风险2.5解决局部故障的思路与方法2.6应用层服务发现模式2.7平台层服务发现模式3.基于异步消息模式的通信3.1关于消息3.2关于消息通道3.3使用消息机制实现交互方式3.4为基于消息机制的服务API创建API规范3.5无代理消息的利弊3.6基于代理消息的利弊3.7选择消息代理需要考虑的因素3.8处理并发和消息顺序3.9处
目录前言1.微服务架构中的进程间通信概述1.1交互方式的两个维度1.2交互方式的类型1.3API的演化1.4消息的格式2.基于同步远程过程调用模式的通信2.1远程过程调用RPI2.2REST通信协议的特点及优缺点2.3gRPC通信协议的特点及优缺点2.4同步通信下的局部故障风险2.5解决局部故障的思路与方法2.6应用层服务发现模式2.7平台层服务发现模式3.基于异步消息模式的通信3.1关于消息3.2关于消息通道3.3使用消息机制实现交互方式3.4为基于消息机制的服务API创建API规范3.5无代理消息的利弊3.6基于代理消息的利弊3.7选择消息代理需要考虑的因素3.8处理并发和消息顺序3.9处
今天这篇笔记我们来学习Go限流限流是分布式系统中经常需要用到的技术,因为我们让请求没有限制,很容易就出现某个用户开很多线程把我们的服务拉跨,进而影响到别的用户。限流我们来看下Go语言层面可以怎么做到限流,先看一段不限流的代码,typeAPIConnectionstruct{}funcOpen()*APIConnection{ return&APIConnection{}}func(a*APIConnection)ReadFile(ctxcontext.Context)error{//假装我们在这里有运行 returnnil}func(a*APIConnection)ResolveAddress