借点钱避免微观服务耦合问题,实现金融级数据
来源:Sfnews作者:YWYF日期:2020-10-17 浏览:140

3.分布式交易

即时开通借款,避免微服务耦合的弊端,在2019-03-31

打开APP阅读全文

借点钱规避微服务耦合毛病,实现金融级数据服务

一般来说,MQ是Internet架构中常用的解耦工具。在这三年中,借钱APP技术团队一直在微服务中使用MQ,为金融客户提供优质的数据服务。虽然MQ不是唯一的解决方案,但在这个阶段它是一个非常好的解决方案。

编辑:cnhan

3.用户在借款APP平台支付订购业务时,需要涉及支付服务、账户服务、优惠券服务、积分服务。然而,在单一模式下,这种业务非常容易实现,可以通过交易完成。在微服务的情况下,原来简单的交易变得非常复杂。如果引入两阶段提交(2PC)或补偿事务(TCC)方案,系统的复杂性将增加。

APP技术团队借钱的做法是通过本地交易MQ消息来解决问题。虽然RocketMQ也支持交易报文,但其他主流MQ没有这一功能,所以借钱APP的方式是在报文上游额外建一个TC_MESSAGE表,记录报文投递状态。消息表和业务数据位于同一数据库中,并在事务中提交,然后通过MQ将消息发送给消息的使用者。如果失败,将重新发送消息。启动计时任务以扫描消息中间的TC_MESSAGE表。如果状态在设定的时间内没有改变,消息将再次发送到MQ。如果重试次数达到上限,则会发起告警操作。在消息下游,您需要处理消息并完成业务逻辑。此时,如果本地事务处理成功,则表示处理完成,需要发起业务回调通知业务端。

虽然该方案的复杂度增加了,但在写TC_MESSAGE表、发送MQ,等业务操作中需要考虑状态超时没有改变的补发机制和告警处理机制。但是,分布式的东西都是以最小的成本来实现最终的数据一致性,而且解决方案本身非常灵活,任何环节都可以人工控制。