淘点点

也谈淘点点60s短信订单的架构设计

早过忘川 提交于 2020-04-12 17:55:57
1. 前言## 看到了这个 http://www.oschina.net/question/926166_2137672 然后有人写了博客还分析设计了一下 http://my.oschina.net/u/926166/blog/522227 本人最近对架构设计较感兴趣,下面是我的设计,可以做到极大化性能和水平扩展,所有的性能issue都在网络IO。redis存储方面轻松支持同时上亿个订单。 2. 基于redis的详细设计## 使用一个高可用的时间序列发生器服务器。timeserver。 订单server产生了订单之后立即往redis的订单号服务器写一条记录,key为timeserver的nanosecond,存储类型为sorted set。把订单的详细信息写入另一个redis的详单服务器集群(用订单号hash写入)。 订单服务器有一个定时器线程,60s运行一次,时间到了发送一条消息(包含time server的当前nanosecond)给短信发送server。 短信发送server收到nanosecond的消息后,去redis订单号服务器取出所有小于该nanosecond的订单号,开启多个协程用订单号去redis详单服务器集群拿到详单数据,发送短信。 redis配置成高可用。订单业务server和短信server都是无状态的,可以横向水平扩展。 3. 性能估计数据量估计##