分布式
文章平均质量分 93
NCS123456
这个作者很懒,什么都没留下…
展开
-
7.0 柔性事务:可靠消息最终一致性
可以看到,其实就是将消息先发送到一个我们自己编写的一个"独立消息服务"应用中,刚开始处于prepare状态,业务逻辑处理成功后,确认发送消息,这个时候"独立消息服务"才会真正的把消息发送给消息队列。消费者消费成功后,ack时,除了对消息队列进行ack(图中没有画出),对于独立消息服务也要进行ack,"独立消息服务"一般是把这条消息删除。对于"本地事务表",其实和"独立消息服务"的作用类似,只不过"独立消息服务"是需要独立部署的,而"本地事务表"是将"独立消息服务"的功能内嵌到应用中。如果消费失败怎么办?转载 2023-07-08 15:11:32 · 203 阅读 · 0 评论 -
6.0 柔性事务 :TCC两阶段补偿型
TCC方案是可能是目前最火的一种柔性事务方案了。关于TCC(Try-Confirm-Cancel)的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称的是Atomikos公司,其注册了TCC商标。转载 2023-07-08 15:11:12 · 173 阅读 · 0 评论 -
5.0 柔性事务:最大努力通知
举例来说:笔者曾经做过一个短信发送平台,背景是公司内部有多个业务都有发送短信的需求,如果每个业务独立实现短信发送功能,存在功能实现上的重复。因为商务对接过程,是没有我靓丽的身影的。总之短信发送要花很多钱,如果短信发送供应商说短信都发送成功了,而短信平台却一条成功的记录都没有,出现这种扯皮的情况就不好了)在这个案例中,短信发送供应商通知短信平台短信发送结果的过程中,就是最典型的最大努力通知型方案,通知了N次就不再通知。6、短信平台接收到短信发送结果后,更新短信发送状态,可能是成功,也可能失败(如手机欠费)。转载 2023-07-08 15:10:42 · 188 阅读 · 0 评论 -
4.0 atomikos JTA/XA全局事务
其旗下最著名的产品就是事务管理器。产品分两个版本:TransactionEssentials:开源的免费产品ExtremeTransactions:上商业版,需要收费。这两个产品的关系如下图所示:1、实现了JTA/XA规范中的事务管理器(Transaction Manager)应该实现的相关接口,如:UserTransaction实现是com.atomikos.icatch.jta.UserTransactionImp,用户只需要直接操作这个类。转载 2023-07-08 15:10:12 · 399 阅读 · 0 评论 -
3.0 JTA规范
JTA是java扩展包,在应用中需要额外引入相应的jar包依赖JTA规范1.1中的源码非常少,如下所示:javax.transaction.Status:事务状态,这个接口主要是定义一些表示事务状态的常量,此接口无需实现javax.transaction.Synchronization:同步javax.transaction.Transaction:事务javax.transaction.TransactionManager:事务管理器。转载 2023-07-08 15:09:27 · 109 阅读 · 0 评论 -
2.0 mysql 对XA事务的支持
MySQL 从5.0.3开始支持XA分布式事务,且只有InnoDB存储引擎支持。MySQL Connector/J 从5.0.0版本之后开始直接提供对XA的支持。需要注意的是, 在DTP模型中,mysql属于资源管理器(RM)。而一个完整的分布式事务中,一般会存在多个RM,由事务管理器TM来统一进行协调。因此,这里所说的mysql对XA分布式事务的支持,一般指的是单台mysql实例如何执行自己的事务分支。转载 2023-07-08 15:08:56 · 212 阅读 · 0 评论 -
1.0 分布式事务概述
1.0 分布式事务概述2.0 mysql 对XA事务的支持3.0 JTA规范4.0 atomikos JTA/XA全局事务5.0 柔性事务:最大努力通知6.0 柔性事务 :TCC两阶段补偿型7.0 柔性事务:可靠消息最终一致性1、事务简介事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。转载 2023-07-08 15:08:02 · 105 阅读 · 0 评论 -
常见软件负载均衡
1. 网站建设初期,可以选用Nginx、HAProxy作为反向代理负载均衡(流量不大时,可以不选用负载均衡),因为其配置简单,性能也能满足一般业务场景。注:DNS的负载均衡架构,主要适用大规模应用。2. 网站并发到达一定程度后,为了提高稳定性和转发效率,可以使用LVS+Nginx,可以保障入口流量最大性能及效率被负载均衡转发。3. 为了保障高可用架构,业务整体的容灾,单机房容量限制,会引入异地多活架构,可以使用DNS+LVS+Nginx作为负载均衡。原创 2023-05-15 20:37:23 · 210 阅读 · 0 评论 -
分布式选举算法之Paxos、Raft与Bully
分布式系统的集群方式大致可以分为主从(Master-Slave)模式和无主模式。主从模式可以简化系统的设计,Master作为权威节点,部分操作仅由Master执行,并负责维护集群元信息。缺点是master节点存在单点故障,需要解决灾备问题,并且集群模式会受限于Master节点的管理能力。通过Paxos、Raft与Bully等分布式算法,解决分布式中的一致性问题,来解决Master节点的选举。原创 2022-12-01 17:59:42 · 578 阅读 · 0 评论 -
分布式存储--常见分区算法
随着请求量和数据量的增加,一台机器已经无法满足需求,我们就需要把数据和请求分散到多台机器。我们就需要引入分布式存储。分布式存储有以下特性:增强可用性:如果数据库的某个节点出现故障,在其他节点的数据仍然可用; 维护方便:如果数据库的某个节点出现故障,需要修复数据,只修复该节点即可; 均衡I/O:可以把不同的请求映射到各节点以平衡I/O,改善整个系统性能; 改善查询性能:对分...原创 2019-08-05 09:21:35 · 1555 阅读 · 1 评论 -
RabbitMq,ActiveMq,ZoreMq,kafka比较
1.各队列性能比较。 测试一:测试场景: Scenario A: Enqueuing 20,000 messages of 1024 bytes each, then dequeuing them afterwards. Scenario B: Enqueuing and dequeuing simultaneously 20,000 messages of 1024 by...原创 2016-03-08 19:19:20 · 585 阅读 · 0 评论