RocketMQ使用及分布式事务解决思路

就我个人目前理解,对于分布式事务目前大概有两种类型,①单个应用多个库,可以利用JTS及各个数据库的接口来实现;②多个应用多个,只能利用中间件来完成分布式事务,中间件充当事务管理器角色。
调研了多种MQ,决定采用阿里的RocketMQ来作为中间件。因为RocketMQ文档资料比较多,而且做集群方案的时候不需要引入第三方注册中心来做集群管理和负载均衡,RocketMQ可以保证严格的消息顺序,丰富的消息拉取模式(Push or Pull)

首先,我们需要安装配置rocketMQ:

1.下载安装rocketMQ

 访问官网https://rocketmq.apache.org  下载rocketMQ。

rocketMQ
20180211171720.png | center | 830x468
第一个here链接是下载的源码版本,下面的那些命令是编译安装MQ的,这里我选择直接下载编译好的二进制文件。

这里写图片描述
下载完成后,解压后文件目录如下:

这里写图片描述

单节点的配置一下jvm的内存信息就可以了,内存配置跟双master的一样,在windows下依次直接点击mqnamesvr.cmd与mqbroker.cmd就可以启动了。这里主要说一下双master,双master会了其他的都大同小异。
进入解压目录里的bin目录,编辑runserver.sh 和runbroker.sh 文件
JVM内存配置如下:

这里写图片描述


#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx1g -Xmn1g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

runserver.sh 和runbroker.sh两个都用这个配置。
如果启动还是有问题的话可能还需要配置下 runserver.xml 和runbroker.xml
类似这样

分布式事务使用RocketMQ时,可能会遇到一些坑。其中一个主要的坑是如何保证分布式事务的正确执行。有几种常用的分布式事务解决方案,包括XA方案(两阶段提交方案)、TCC方案(try、confirm、cancel)、SAGA方案、可靠消息最终一致性方案和最大努力通知方案。 在RocketMQ中,主要采用了可靠消息最终一致性方案来实现分布式事务。这个方案的主要思路是,在发送消息时,将消息和事务绑定,然后将消息先存储在Broker节点上,等到事务提交成功后再真正发送消息。如果事务提交失败,就会回滚消息,保证消息的一致性。这个方案相对来说较为简单,但是需要保证消息的可靠性和幂等性。 当然,在使用RocketMQ时,也需要考虑具体的业务需求、时间、成本以及开发团队的实力。分布式还有很多其他的坑,具体要根据情况来决定是否使用分布式架构。 希望以上信息对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [这三年被分布式坑惨了,曝光十大坑](https://blog.csdn.net/jackson0714/article/details/108775573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [RocketMQ事务消息学习及刨坑过程](https://blog.csdn.net/huangying2124/article/details/102634761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值