Seata解决分布式事务问题
Seata解决分布式事务问题1、分布式事务问题由来分布式前
单机单库没这个问题
从1:1 -> 1:N -> N:N
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
2、Seata简介2-1、是什么Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务
2-2、能干嘛一个典型的分布式事务过程
分布式事务处理过程的一一ID+三组件模型:
Transaction ID XID 全局唯一的事务ID
三组件概念
TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分 ...
Sentinel实现熔断与限流
Sentinel 实现熔断与限流1、Sentinel 介绍官方 Github
官方文档
1-1、是什么随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适 ...
Nacos服务注册和配置中心
Nacos 服务注册和配置中心1、SpringCloud Alibaba 简介1-1、为什么会出现 SpringCloud alibabaSpring Cloud Netflix 项目进入维护模式:
https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now
什么是维护模式?将模块置于维护模式,意味着 Spring Cloud 团队将不会再向模块添加新功能。我们将修复 block 级别的 bug 以及安全问题,我们也会考虑并审查社区的小型 pull request。
进入维护模式意味着什么呢?进入维护模式意味着 Spring Cloud Netflix 将不再开发新的组件,我们都知道 Spring Cloud 版本迭代算是比较快的,因而出现了很多重大 ISSUE 都还来不及 Fix 就又推另一个 Release 了。进入维护模式意思就是目前一直以后一段时间 Spring Cloud Netflix 提供的服务和功能就这么多了,不在开发新的组件和功能了。以后将以维护和 Merge 分支 Full R ...
Sleuth分布式请求链路跟踪
Sleuth 分布式请求链路跟踪1、Sleuth 介绍1-1、为什么会出现这个技术?需要解决哪些问题?在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
官网:https://github.com/spring-cloud/spring-cloud-sleuth
1-2、是什么Spring Cloud Sleuth 提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了 zipkin
2、搭建链路监控步骤2-1、zipkin 搭建安装下载SpringCloud 从 F 版起已不需要自己构建 Zipkin Server 了,只需调用 jar 包即可
zipkin 下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/zipkin-server-2.12.9-exec.jar
运行 jar1java -j ...
Stream消息驱动
Stream 消息驱动1、消息驱动 Stream 介绍1-1、Stream 为什么被引入常见 MQ(消息中间件):
ActiveMQ
RabbitMQ
RocketMQ
Kafka
有没有一种新的技术诞生,让我们不再关注具体 MQ 的细节,我们只需要用一种适配绑定的方式,自动的给我们在各种 MQ 内切换。(类似于 Hibernate)
2、是什么
屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。
官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架。
**应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中 binder 对象交互。通过我们配置来 binding(绑定),而 Spring Cloud Stream 的 binder 对象负责与消息中间件交互。**所以,我们只需要搞清楚如何与 Spring Cloud Stream 交互就可以方便使用消息驱动的方式。
通过使用 Spring Integration 来连接消息代理中间件以实现消息事件驱动。Spring Cloud Stream ...
Bus消息总线
Bus 消息总线1、SpringCloud Bus 介绍1-1、消息总线的由来回顾上一篇文章 Config 分布式配置中心存在的问题
假如有多个微服务客户端 3355/3366/3377……,每个微服务都要执行一次 post 请求,手动刷新?
可否广播,一次通知,处处生效?
我们想大范围的自动刷新,求方法
以上就是消息总线的产生由来
Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新
1-2、是什么
Spring Cloud Bus 是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了 Java 的事件处理机制和消息中间件的功能。
Spring Cloud Bus 目前支持 RabbitMQ 和 Kafka。
1-3、能干嘛Spring Cloud Bus 能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。
1-4、总线什么是总线在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主 ...