技术分享实习架构模式+架构思想(微内核架构,等架构)

SET化架构与RabbitMQ基础组件封装

2019-12-06  本文已影响0人  小波同学

互联网单元化架构设计衍变之路

随着大型互联网公司业务的多元化发展,就拿滴滴、美团等大厂来讲,如滴滴打车、单车、外卖、酒店、旅行、金融等业务持续高速增长,单个大型分布式体系的集群,通过加机器+集群内部拆分(kv、mq、Mysql等),虽然具备了一定的可扩展性。但是,随着业务量的进一步增长,这个集群规模琢渐变的巨大,从而一定会在某个点达到性能瓶颈,无法满足扩展性需要,并且大集群内核服务出现问题,会影响全网所有用户。

以滴滴打车、美团外卖举例来说:

1、容灾问题
2、资源扩展性问题
3、大集群拆分问

容灾问题

资源扩展问题

大集群拆分问题

SET单元化架构方案

同城 "双活" 架构介绍
目前很多大型互联网公司的业务架构可以理解为同城"双活"架构,注意这里的“双活"是加引号的,具体可以这样理解:

两地三中心架构介绍
使用灾备的思想,在同城“双活”的基础上,在异地部署一套灾备数据中心,每个中心都具有完备的数据处理能力,只有当主节点故障需要容灾时才会紧急启动备用数据中心;

image.png

SET化方案目标:
业务:解决业务遇到的扩展性和容灾等需求,支撑业务的高速方案
通用性:架构侧形成统一通用的解决方案,方面各业务线接入使用

SET化架构设计:

SET化架构设计

SET化架构策略

流量路由:

中心集群:

单元化集群:

中间件(RPC、KV、MQ等):

数据同步:

异地容灾:

高效的本地化服务:

集装箱扩展:

SET化架构图

C不是很重要,所以放到中心集群,需要的时候去中心集群调用,及时调用超时或失败,也不影响主流程

SET化架构流转图

SET化架构落地原则

对业务透明原则:

RabbitMQ-SET化架构实现

使用RabbitMQ异步消息通信插件 Federation(节点和节点、集群和集群之间通信) 安装与配置:

rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management

SET化配置规则:

也就是说可以实现消息的转发,接下来也可以在Upstream添加具体的队列去进行消费Federation Exchanges里的消息,我们一条消息分别发送到2个RabbitMQ集群并且消费,这样我们可以实现SET化的关键要素,就是集群间的消息同步了。

RabbitMQ-基础组件封装

MQ组件实现思路和架构设计方案

image.png

MQ组件需要实现功能点

迅速消息发送

确认消息发送

image.png

批量消息发送

延迟消息发送

比如你在电商平台买到商品签收后,不点击确定支付,那么系统自动会在7天(一定时间)去进行支付操作。
还要一些自动超时作废场景,你的优惠券/红包有使用时间限制,也可以用延迟消息机制。

顺序消息发送

1、发送的顺序消息,必须保障消息投递到同一个队列,且这个消费者只能有一个(独占模式)
2、然后需要统一提交(可能合并成一个大消息,也可能拆分成多个消息),并且所有消息的会话ID一致。
3、添加消息属性:顺序标记的序号、和本次顺序消息的SIZE属性,进行落库操作。
4、并行进行发送给自身的延迟消息(注意带上关键属性:会话ID、SIZE)进行后续处理消费(接收到第一个消息后,创建延迟消息队列,等几分钟后,所有的顺序消息都落库后)
5、当收到延迟消息后,根据会话ID、SIZE抽取数据库数据进行处理即可。
6、定时轮询补偿机制,对于异常情况
备注:比如生产端消息没有完全投递成功,或者消费端落库异常导致消费端落库缺少消息条目的情况

image.png

事务消息发送

我们采用类似可靠性投递的机制,也就是补偿机制。
但是我们的数据源必须是同一个,也就是业务操作DB1数据和消息记录BD2数据库必须使用同一个数据源
然后利用重写Spring DatasourceTransactionManage,在本地事务提交的时候进行发送消息,但是也有可能事务提交成功但是消息发送失败,这个时候就需要进行补偿了。

消息幂等性保障-消息路由规则架构设计

消息幂等性的重要性

1、可靠性消息投递机制(消息失败时多次发送)
2、MQ Broker服务与消费端传输消息过程中出现网络抖动
3、消费端的故障或异常
以上这些问题都会导致消费端重复消息问题。


image.png

参考:
https://www.jianshu.com/p/4dc45fc5936c

https://blog.csdn.net/love905661433/article/details/85452115

https://www.jianshu.com/p/a1bb3e1eba87

http://www.talkwithtrend.com/Article/245299

http://blog.itpub.net/26736162/viewspace-2216584/

上一篇 下一篇

猜你喜欢

热点阅读