一:分布式数据库

分布式数据库和我们经常用的传统的关系型数据库有什么区别,比如oracle,mysql,sql server,首先看下定义:

分布式数据库定义:分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

关系型数据库:是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

说白了,分布式数据库,就是多个节点上的局部数据库,共同形成一个全局数据库提供服务,拥有更高的数据访问速度,更强的可扩展性,更高的并发访问量。目前主流的分布式数据库替代传统交易关系型数据库产品Oracle/DB2等满足不了海量吞吐、海量并发、海量交易、海量存储的在线交易业务场景。例如:蚂蚁金服Oceanbase、腾讯TDSQL、热璞HotDB、中兴GoldenDB、开源MyCAT、开源Cobar。

二:分布式事务

首先我们了解下什么是事务,指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部不执行。

事务应该具有4个属性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。这四个属性通常称为ACID特性。

那什么是分布式事务呢?分布式事务是指涉及到操作多个数据库的事务,其实就是将对同一库的事务概念扩大到对多个库的事务,目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。

三:如何实现分布式事务,解决数据一致性问题

1:基于XA协议的两阶段提交,XA是一个分布式事务协议

XA协议比较简单,而且一旦商业数据库实现了XA协议,使用分布式事务的成本也比较低。但是,XA也有致命的缺点,那就是性能不理想,特别是在交易下单链路,往往并发量很高,XA无法满足高并发场景。XA目前在商业数据库支持的比较理想,在mysql数据库中支持的不太理想,mysql的XA实现,没有记录prepare阶段日志,主备切换回导致主库与备库数据不一致。许多nosql也没有支持XA,这让XA的应用场景变得非常狭隘。

2:消息事务+最终一致性

所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性,具体原理如下:

1:事务消息与普通消息的区别就在于消息生产环节,生产者首先预发送一条消息到MQ(这也被称为发送half消息)

2:MQ接受到消息后,先进行持久化,则存储中会新增一条状态为待发送的消息

3:然后返回ACK给消息生产者,此时MQ不会触发消息推送事件

4:生产者预发送消息成功后,执行本地事务

5:执行本地事务,执行完成后,发送执行结果给MQ

6:MQ会根据结果删除或者更新消息状态为可发送

7:如果消息状态更新为可发送,则MQ会push消息给消费者,后面消息的消费和普通消息是一样的

注意点:由于MQ通常都会保证消息能够投递成功,因此,如果业务没有及时返回ACK结果,那么就有可能造成MQ的重复消息投递问题。因此,对于消息最终一致性的方案,消息的消费者必须要对消息的消费支持幂等,不能造成同一条消息的重复消费的情况。

文章转自:https://blog.csdn.net/leoyangcanwu/article/details/105844225

分布式数据库、分布式事务相关推荐

  1. 分布式数据库管理系统

    分布式数据库管理系统的发展 单个数据库分割成多个,然后把这些分割存放到同一网络中的不同计算机中.多点数据库是分布式数据库系统的核心.业务分布在不同的国家和地区需要分布式数据库管理系统.分布式数据库系统 ...

  2. 数据库安全-分布式数据库-数据仓库技术-反规范化技术-大数据

    继续肝吧,本章主要讲的数据库安全,分布式数据库,数据仓库技术,反规范化技术,大数据,概念性的东西比较多. 1.数据库安全 考的不多,了解下补充自己的知识. 静态转储:即冷备份,指在转储期间不允许对数据 ...

  3. 银行核心系统如何选型分布式数据库(含6大落地要点验证)

    本文根据洪烨老师在[deeplus直播:金融业数据库转型与国产化改造]线上分享演讲内容整理而成.(文末有回放的方式,不要错过) 洪烨 光大银行 数据库专家 具有多年银行业系统架构设计及DBA实战经验, ...

  4. 分布式数据库实战第五节 保证分布式系统中的数据库可靠

    16 再谈一致性:除了 CAP 之外的一致性模型还有哪些? 在"05 | 一致性与 CAP 模型:为什么需要分布式一致性"中,我们讨论了分布式数据库重要的概念--一致性模型.由于篇 ...

  5. 什么是分布式数据库?小学生都能看懂。

    自从互联网进入了 web2.0 时代以来,数据库作为核心的底层基础设施软件也经历了蓬勃的发展期,从早期的单机关系型数据库到NoSQL 再到如今的 NewSQL,数据库领域不管是技术还是场景都发生了巨大 ...

  6. 四种分布式数据库场景选型、优缺点对比分析和未来展望 | 趋势解读

    [摘要]随着互联网金融场景的不断拓展,海量的数据访问和处理造成传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究和场景使用应运而生,而数据的安全和合规也随着企业对数据使用的要求越来越高更加重视. ...

  7. .NET Remoting构建分布式数据库查询

    引言 随着传统的数据库.计算机网络和数字通信技术的快速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.微软提供了两种解决方案来为用户实现数据服务,即 .NE ...

  8. 大数据技术下 分布式数据库何去何从?

    转自:安华信达的文章 链接地址:http://www.sohu.com/a/133784835_481676 一.大数据技术的发展 大数据技术从诞生到现在,已历经了十几个年头,市场上也早已有公司或机构 ...

  9. oracle db-link 分布式数据库网络配置协议错误,Oracle学习(18)【DBA向】:分布式数据库...

    数据物理上被存放在网络的多个节点上,逻辑上是一个整体. 分布式数据库的独立性 l分布数据的独立性指用户不必关心数据如何分割和存储,只需关心他需要什么数据. Oracle分布式RDBMS 本地操作 远程 ...

最新文章

  1. iOS培训objective-c——实例化对象
  2. iOS 自定义返回按钮,保留系统滑动返回
  3. 打印机打印一次出三张_一次性帮你搞定3D打印机堵塞问题
  4. JavaFX UI控件教程(二十二)之Titled Pane和Accordion
  5. gb2312编码在线转换_python基础学习—04字符串与编码
  6. 子网规划与组网实验_交换机四种组网方式,你都清楚吗
  7. 小冰与老东家微软达成战略合作,并宣布数亿元Pre-A轮融资,将全面开展商业化
  8. 位结构体+大小端模式
  9. Python+OpenCV:图像快速角点检测算法(FAST Algorithm for Corner Detection)
  10. 体验ASP.NET 2.0客户端回调功能(CallBack)
  11. 原创 | 基于开源的互联网和深度信息技术
  12. java lbp_OpenCV中基于LBP算法的人脸检测测试代码
  13. rust腐蚀机场蓝卡_rust怎么弄蓝卡和红卡
  14. Oracle执行计划
  15. Kindle退市,掌阅iReader或将接过电纸书市场大旗
  16. Ti c64x 优化基本策略
  17. C#:多线程和线程池
  18. Android布局中有图片和颜色,图片和颜色
  19. 分销系统如何加粉,三级分销政策,B2B2C分销规则
  20. Emscripten 单词_真正的英语大神绝不死背单词! 他们用这种方法一周突破3500词

热门文章

  1. 访问网上计算机要输入密码,每次都要输入密码访问共享电脑解决办法
  2. 如何构建自己的支付系统
  3. Qt6 for android环境搭建
  4. 超级实用的五款黑科技APP,让你舍不得分享
  5. android 照相机 人像,拍摄人像时Android相机意图保存图像风景
  6. 1791. 找出星型图的中心节点
  7. MySQL 提示字段没有默认值 doesn’t have a default value 解决方法
  8. hibernate的多表联合查询
  9. 谷歌浏览器在PC端登录抖音官网时,登录页面不显示二维码的解决方法
  10. 【定制项目】【触摸屏一体机】【自启动运行】【M15 消防安全宣传】主要模块:视频 + 音频 + 图标 + 问答游戏