微信红包架构

架构图

发红包

1.为了减轻服务器端压力,在客户端对红包金额数值进行拆分

2.用算法为每个红包加一个唯一标识id。此处我采用的是uuid(雪花算法)+ip+时间戳

3.请求通过nginx分发到各个服务器。

4.服务器把数据双写到数据库中。

5.服务器同时也把数据双写写入redis中。

 

抢红包

1.抢红包请求通过nginx分发到各个服务器。

2.双写到同一个消息队列中一个个处理。

3.将数据双写入同一个redis中(此时,便已经会返回你抢到了多少钱,但是真正多少钱此时还没有同步到数据库中)

4.每过一段时间便会把redis中的数据同步到数据库中。

5.返回发红包时客户端拆分成的一份金额。

 

如果没有同步到数据库那我查看到的金额是怎么呢?

1.如果并发不高会很快同步到数据库

2.如果并发高的情况下,会先在客户端同步假数据显示,但是这个金额依旧可以操作,客户端会帮你进行相应的处理。

 

为什么使用nginx?

nginx用C++写的,apache用java写,会慢一点

 

为什么使用redis?

1.redis的抗并发能力比数据库好很多倍。

2.存redis相当于存缓存,增删改查都很快。

 

为什么双写?

有备份。如果有一个崩溃,另外一个可以继续使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值