当前位置:首页 > 经验 >

分布式微服务架构的优缺点(微服务架构缺点)

来源:原点资讯(www.yd166.com)时间:2022-10-28 06:13:15作者:YD166手机阅读>>

【51CTO.com原创稿件】伴随着业务的快速的发展、越来越高的业务复杂度,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。

分布式微服务架构的优缺点,微服务架构缺点(1)

图片来自 包图网

随之而来就必然遇到分布式事务这个难题。而我的这篇文章总结了分布式事务的解决方案,希望给大家带来帮助。

分布式事务基础①到底什么是事务呢?

什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。

明白上述例子,再来看事务的定义:事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。

②先来回顾本地事务

在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务。

由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。

回顾一下数据库事务的四大特性 ACID:

  • A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。
  • C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。

比如:张三向李四转 100 元,转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出 100 元,李四账户没有增加 100 元这就出现了数据错误,就没有达到一致性。

  • I(Isolation):隔离性,数据库中的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避脏读、重复读等问题。
  • D(Durability):持久性,事务完成之后,该事务对数据的更改会被持久化到数据库,且不会被回滚。

数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。

③分布式事务

银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的本地事务保证转账的 ACID,只能够通过分布式事务来解决。

分布式事务就是指事务的发起者、资源及资源管理器和事务协调者分别位于分布式系统的不同节点之上。

在上述转账的业务中,用户 A-100 操作和用户 B 100 操作不是位于同一个节点上。

本质上来说,分布式事务就是为了保证在分布式场景下,数据操作的正确执行。

分布式事务在分布式环境下,为了满足可用性、性能与降级服务的需要,降低一致性与隔离性的要求,一方面遵循 BASE 理论(BASE 相关理论,涉及内容非常多,感兴趣的程序员们,可以参考 BASE 理论)。

BASE 理论:

  • 基本业务可用性(Basic Availability)
  • 柔性状态(Soft state)
  • 最终一致性(Eventual consistency)

同样的,分布式事务也部分遵循 ACID 规范:

  • 原子性:严格遵循
  • 一致性:事务完成后的一致性严格遵循;事务中的一致性可适当放宽
  • 隔离性:并行事务间不可影响;事务中间结果可见性允许安全放宽
  • 持久性:严格遵循
④分布式事务场景

典型的场景就是微服务架构:微服务之间通过远程调用完成事务操作。

比如:订单微服务和库存微服务,下单的同时订单微服务请求库存微服务减库存。简言之:跨 JVM 进程产生分布式事务。

分布式微服务架构的优缺点,微服务架构缺点(2)

单体系统访问多个数据库实例:当单体系统需要访问多个数据库(实例)时就会产生分布式事务。

比如:用户信息和订单信息分别在两个 MySQL 实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时产生分布式事务。

简言之:跨数据库实例产生分布式事务。

分布式微服务架构的优缺点,微服务架构缺点(3)

多服务访问同一个数据库实例:比如:订单微服务和库存微服务即使访问同一个数据库也会产生分布式事务,原因就是跨 JVM 进程,两个微服务持有了不同的数据库链接进行数据库操作,此时产生分布式事务。

分布式微服务架构的优缺点,微服务架构缺点(4)

首页 1234下一页

栏目热文

分布式和微服务项目(微服务分布式方案)

分布式和微服务项目(微服务分布式方案)

微服务架构的演变微服务架构的技术体系、社区目前已经越来越成熟。在最初系统架构的搭建,或者当现有架构已到达瓶颈需要进行架构...

2022-10-28 06:21:12查看全文 >>

分布式微服务架构详解(各种微服务架构图解)

分布式微服务架构详解(各种微服务架构图解)

在分布式架构中,网络通信是底层基础,没有网络,也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作,共同完成...

2022-10-28 06:26:25查看全文 >>

分布式事务一致性解决方案(springcloud分布式事务)

分布式事务一致性解决方案(springcloud分布式事务)

事务想必大家并不陌生,比如经常被人提起的ACID,但是为了后续的分布式事务的内容,我们先来聊聊 ACID,然后再介绍下什...

2022-10-28 06:21:22查看全文 >>

微服务与分布式区别(微服务与分布式的优势)

微服务与分布式区别(微服务与分布式的优势)

分布式架构是分布式计算技术的应用和工具,目前成熟的技术包括J2EE, CORBA和.NET(DCOM),这些技术牵扯的内...

2022-10-28 05:59:47查看全文 >>

架构解密从分布式到微服务(微服务和分布式最大区别)

架构解密从分布式到微服务(微服务和分布式最大区别)

深入Kubernetes微服务平台Kubernetes的概念与功能架构师普遍有这样的愿景:在系统中有ServiceA、S...

2022-10-28 06:22:00查看全文 >>

什么是分布式架构和微服务架构(微服务架构优缺点)

什么是分布式架构和微服务架构(微服务架构优缺点)

单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署 优点: 架构简单 部署成本低 缺点: 耦合度高(维护困...

2022-10-28 06:39:26查看全文 >>

golabel标签编辑软件基础操作教程(golabel批量打印方法)

golabel标签编辑软件基础操作教程(golabel批量打印方法)

本节要点 - 掌握Label 和 GOTO 指令的使用 - 要点解析 (1)Label 指令。 Label 指令——标签...

2022-10-28 06:34:33查看全文 >>

golabel软件使用方法(golabel软件怎么打印标签)

golabel软件使用方法(golabel软件怎么打印标签)

今天我们要讨论的是C语言中相对比较冷门的知识关键字goto!goto关键字基础知识关键字goto表示无条件跳转的意思,类...

2022-10-28 06:35:07查看全文 >>

golabel软件安装(打开golabel后语言栏不见了)

golabel软件安装(打开golabel后语言栏不见了)

| 责编:王冬奇经过半年多的等待,我们终于迎来了Windows 8.1系统的2014UPDATE1升级。在此之前Wind...

2022-10-28 06:17:01查看全文 >>

golabel文字下面怎么加横线(golabel标签打印时怎么增加下划线)

golabel文字下面怎么加横线(golabel标签打印时怎么增加下划线)

标签制作软件适用于制作各个行业的标签,当我们在标签制作软件中批量设计标签时,有时需要在对象下面添加下划线,那么,在标签制...

2022-10-28 06:22:03查看全文 >>

文档排行