分布式架构设计
文章平均质量分 82
青木编码
技术,经验分享,在平台跟大家相互学习,共同进步
展开
-
Docker 搭建redis集群
六个Redis实例的配置文件:redis.conf先启动6个redis实例执行命令配置集群查看集群信息存数据spring redis api原创 2022-06-15 13:28:19 · 134 阅读 · 0 评论 -
Docker搭建redis主从+哨兵
redis主从复制结构中,当主服务器宕机,哨兵可以监控到服务宕机,在从服务器中选举产生一个新的主服务器。清理容器(可选)启动主服务器启动两个从服务器启动哨兵哨兵的配置文件启动三个哨兵停止主服务器,测试主服务器重新选举重新启动6379,不会把6379切换成主服务器,而是作为从服务器...原创 2022-06-15 13:27:26 · 361 阅读 · 1 评论 -
分布式事务(八)Spring Cloud微服务系统基于Rocketmq可靠消息最终一致性实现分布式事务
搭建单机 Rocketmq 服务器笔记:《RocketMQ (一) 安装》搭建双主双从同步复制 Rocketmq 服务器笔记:《RocketMQ (二) 双主双从同步复制集群方案》Rocketmq事务消息笔记:《RocketMQ 发送事务消息原理分析和代码实现》新建 Empty Project:工程命名为 ,存放到任意文件夹下:压缩文件中的 7 个项目目录解压缩到 目录:在 idea 中按两下 键,搜索 ,打开 maven 工具:然后选择 工程目录下的 7 个项目的 导入:Rocketm原创 2022-06-15 13:26:23 · 946 阅读 · 0 评论 -
分布式事务(七)Seata TCC模式-Spring Cloud微服务添加 TCC 分布式事务
新建 Empty Project:工程命名为 ,存放到 seata-samples 文件夹下,与 工程存放在一起:压缩文件中的 7 个项目目录解压缩到 目录:在 idea 中按两下 键,搜索 ,打开 maven 工具:然后选择 工程目录下的 7 个项目的 导入:在订单项目中执行添加订单:我们要添加以下 TCC 事务操作的代码:打开 order-parent 中注释掉的 seata 依赖:配置application.yml设置全局事务组的组名:registry.conf 和 file.原创 2022-06-15 13:25:11 · 494 阅读 · 0 评论 -
分布式事务(六)Seata TCC模式-TCC模式介绍
TCC 与 Seata AT 事务一样都是两阶段事务,它与 AT 事务的主要区别为:以账户服务为例,当下订单时要扣减用户账户金额:假如用户购买 100 元商品,要扣减 100 元。TCC 事务首先对这100元的扣减金额进行预留,或者说是先冻结这100元:如果第一阶段能够顺利完成,那么说明“扣减金额”业务(分支事务)最终肯定是可以成功的。当全局事务提交时, TC会控制当前分支事务进行提交,如果提交失败,TC 会反复尝试,直到提交成功为止。当全局事务提交时,就可以使用冻结的金额来最终实现业务数据操作:如果全局原创 2022-06-15 13:24:03 · 537 阅读 · 0 评论 -
分布式事务(五)Seata AT模式-Spring Cloud微服务添加 AT 分布式事务
在上一节中我们完成了订单项目案例,但没有添加事务处理。下面在这个项目中我们添加 Seata AT 事务。无事务版案例代码可以在这里下载:https://gitee.com/benwang6/seata-samples/tree/%E6%97%A0%E4%BA%8B%E5%8A%A1%E7%89%88在《分布式事务(三)Seata分布式事务框架-AT模式介绍》 中介绍了 Seata AT 事务原理,介绍了 AT 事务的三个角色:TC(事务协调器)、TM(事务管理器)和RM(资源管理器),其中 TM 和 RM原创 2022-06-15 13:22:15 · 182 阅读 · 0 评论 -
分布式事务(四)Seata AT模式-Spring Cloud微服务案例
先新建文件夹 ,后面测试的 Seata AT 和 Seata TCC 模式都放在该目录下。接着创建 项目:选择 :填写项目名 和存放目录,存放在你新建的 目录下:订单案例涉及四个数据库:为了后续测试方便我们编写一个工具,用来重置所有数据库表,可以方便地把数据重置到初始状态。新建 Module,选择 填写 Group 和 Artifact,其他选项默认即可:添加 和 依赖:完成后, 文件如下:application.yml 配置项目的 文件改名成 ,然后添加 mysql 连接配置:注意原创 2022-06-15 13:20:20 · 1028 阅读 · 0 评论 -
分布式事务(三)Seata分布式事务框架
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。Fescar 开源后原创 2022-06-15 13:18:02 · 488 阅读 · 0 评论 -
分布式事务(二)分布式事务方案
首先这是普通事务:下面是分布式事务:在微服务系统中,每个微服务应用都可能会有自己的数据库,它们首先需要控制自己的本地事务。一项业务操作可能会调用执行多个微服务。如何保证多个服务执行的多个数据库的操作整体成功或整体失败?这就是分布式事务要解决的问题。CAP 和 BASE 是对大规模互联网系统分布式实践的理论总结,如果没有实践为基础理论则难以理解。这里建议先对分布式事务进行实践,之后再来阅读理论来互相印证。请参考 百度百科 - CAP原则。在分布式系统中,由于网络原因出现子系统之间无法通信的情况,就会造成分区原创 2022-06-15 13:16:52 · 151 阅读 · 0 评论 -
分布式事务(一)Mysql本地事务和事务隔离级别
数据库事务由一组sql语句组成。所有sql语句执行成功则事务整体成功;任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。下面以转账为例进一步说明。A 账户向 B 账户转账,需要更新两个账户的记录:两条sql语句都成功则转账成功。任意一条sql语句失败,恢复以前的状态。数据操作的最小单元是事务,而不是一条sql语句!事务开始后,对数据的增删改操作不直接修改数据表,而是被记录在日志文件中。将日志中记录的操作,永久保存到数据表,并清空日志文件。直接清空日志文件2. 测试打开两个终端原创 2022-06-15 08:48:50 · 158 阅读 · 0 评论