微服务架构下分布式事务解决方案 | 第一章 : 分布式事务
- 微服务的发展
微服务倡导将复杂的单体应用拆分为若干个功能简单,松耦合的服务。这样可以降低开发难度、增强扩展性、便于敏捷开发,当前被越来越多的开发者推崇。很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。当前微服务的开发框架也非常多,比较著名的有Dubbo、SpringCloud、thrift 、grpc等。
- 微服务落地存在的问题
目前存在的主要困难有如下几方面:
- 单体应用拆分为分布式系统后,进程之间的通讯机制和故障处理措施变得更加复杂。
- 系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操纵多个数据库来实现,服务间的调用导致分布式事务问题变得非常突出。
- 微服务数量众多,其测试,部署,监控等都变得更加困难。
随着RPC框架的成熟,第一个问题已经逐步得到解决。例如Dubbo支持多种通讯协议,Spring Cloud下的Ribbon,Feign等很好的支持Restful调用。对于第三个问题,随着docker、devops技术的发展以及各公有云paas平台自动化运维工具的推出,微服务的测试、部署与运维会变得越来越容易。而对于第二个问题,现在还没有通用方案很好的解决微服务产生的事务问题。分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。
- 分布式事务
- 数据库事务
数据库的事务介绍参见博客:事务及事务的隔离级别 - 分布式事务
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 - 分布式理论
CAP理论:
C: 一致性(Consistency),在分布式系统中的所有数据备份,在同一时刻是否同样的值。
A: 可用性(Availability),在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
P: 分区容错性(Partition Tolerance),以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
三者不可同时满足,而服务化中,更多的是提升A以及P,在这个过程中不可避免的会降低对C的要求。 -
分布式事务的解决方案
- 基于XA协议的两阶段提交方案
- TCC方案
- 基于消息的最终一致性方案
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)
在使用Spring Cloud的过程中,难免会遇到一些问题。所以对Spring Cloud的常用问题做一些总结。 一、Eureka常见问题 1.1 Eureka 注册服务慢 默认情况下,服务注册到Eureka Server的过程较慢。在开发或测试时,常常希望能够加速这一过程,从而提升工作效率。 该问题的原因及解决方案: 服务的注册涉及周期性心跳,默认30秒一次(通过客户端配置的serviceUrl)。只有当实例、服务端和客户端的本地缓存中的元数据都相同时,服务才被其他客户端发现(所以可能需要3次心跳)。可以使用参数 eureka.instance.leaseRenewalInSeconds 修改时间间隔, 从而加快客户端连接到其他服务的过程。在生产环境中最好坚持使用默认值,因为在服务器内部有一些计算,它们会对续约做出假设。 综上所述,要想解决服务注册慢的问题,只须将 eureka.instance.leaseRenewalInSeconds 设成一个更小的值。该配置用于设置 Eureka Client 向 Eureka Server 发送心跳的时间间隔, 默认是30,单位是秒。在生产环...
- 下一篇
团队管理
一、项目流程 流程 时间点 需求池优先级 无 产品评审 时间点 用例评审 时间点 UI评审 时间点 数据库、架构评审 时间点 排期 时间点 开发 时间点 整包提测 时间点 产品、UI确认功能 时间点 性能压测 时间点 第一轮测试 时间点 第二轮测试 时间点 产品发布 时间点 上线 时间点 复盘 时间点 二、中间穿插每周一次团队分享 人员 分享内容 时间点 产品 分享内容 时间点 前端 分享内容 时间点 后端 分享内容 时间点 安卓/IOS 分享内容 时间点 运营 分享内容 时间点 UE 分享内容 时间点 三、git分支管理 分支 来源 上线合并 说明 master 无 无 主分支 develop master master 平时开发后合并的分支 release master master 和本版本的功能bug无关的功能开发,有可能需要稍后时间在上线,但是这中间可能会有hotfix feature develop develop 平时本地开发分支 hotfix master developmasterrelease 紧急修复线上问题 feature release developmast...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8