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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 看到了这个 http://www.oschina.net/question/926166_2137672 然后有人写了博客还分析设计了一下 http://my.oschina.net/u/926166/blog/522227 本人最近对架构设计较感兴趣,下面是我的设计,可以做到极大化性能和水平扩展,所有的性能issue都在网络IO。

1. 前言

看到了这个 http://www.oschina.net/question/926166_2137672
然后有人写了博客还分析设计了一下 http://my.oschina.net/u/926166/blog/522227

本人最近对架构设计较感兴趣,下面是我的设计,可以做到极大化性能和水平扩展,所有的性能issue都在网络IO。redis存储方面轻松支持同时上亿个订单。

2. 基于redis的详细设计

  1. 使用一个高可用的时间序列发生器服务器。timeserver。
  2. 订单server产生了订单之后立即往redis的订单号服务器写一条记录,key为timeserver的nanosecond,存储类型为sorted set。把订单的详细信息写入另一个redis的详单服务器集群(用订单号hash写入)。
  3. 订单服务器有一个定时器线程,60s运行一次,时间到了发送一条消息(包含time server的当前nanosecond)给短信发送server。
  4. 短信发送server收到nanosecond的消息后,去redis订单号服务器取出所有小于该nanosecond的订单号,开启多个协程用订单号去redis详单服务器集群拿到详单数据,发送短信。
  5. redis配置成高可用。订单业务server和短信server都是无状态的,可以横向水平扩展。

3. 性能估计数据量估计

nanosecond为19个字符,并且nanosecond作为订单号,假设为20字符,那么20byte*100,000,000,一亿个订单的话,redis的订单号服务器需要大约 1.8GB 的内存。而redis的详单服务器可以水平扩展,存储不是问题。

4. 架构点评

  1. 订单server和短信server都是无状态,可水平扩展。
  2. redis存储节点高可用,redis详单服务器集群可水平扩展。
  3. 协程处理拿订单数据和发送短信,简单高效。
  4. 尽量避免了各种可预见的性能问题,例如:什么定时器,每隔1s轮询一次等等,另外也有对redis进行多次请求订单号的,都对性能有一些影响。
  5. 有的人的设计甚至把队列设计到了订单server内,这严重影响了订单server的扩展性,如果一旦订单server挂了呢?呵呵。
  6. 有人想要采用MQ的方式来做,但是如何搞定延时就是个大问题,因为MQ的方式是,Producer发送了之后,Consumer会立即接收到,如果你在Producer这边缓存60s之后在发送,那万一在这段时间该Producer挂了呢?呵呵。这里补充下,有人提到RabbitMQ的延迟队列,的确也是一中更加简单的方案。先发送到队列1,队列1不处理,超过60s队列系统自动发送到队列2,队列2的消费者进行处理。也是简单。呵呵。

5. 总结

  1. 这是一个非常实用的需求。
  2. redis是一个好东西,因为redis的设计和接口足够简单,所以我们没有太多想象,所以我们的设计也足够简单。简单才可能健壮。

文章转载自 开源中国社区[https://www.oschina.net]

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
新零售 供应链 小程序
拼团公排互助商城系统开发|模式方案|详情需求
新零售模式是一种融合线上、线下商业以及物流,打破传统零售业的边界
|
12天前
|
JSON API 数据格式
如何使用Python开发天猫获得淘宝买家秀API接口?
本文介绍了如何使用Python开发天猫和淘宝买家秀API接口,包括注册开放平台账号、创建应用获取API权限、构建请求URL、发送请求获取响应及解析数据等步骤,帮助开发者高效获取和处理商品信息与用户评价数据。
18 0
|
6月前
|
供应链 API UED
逆向海淘代购案例解读:类似Pandabuy淘宝代购集运系统搭建攻略
逆向海淘模式下,Pandabuy式代购集运系统搭建涉及市场定位、供应链管理、平台开发与优化、支付物流及用户体验。系统提供丰富商品选择,集成多平台API,确保数据同步。关键点包括确定目标用户,建立稳定供应链,优化网站与支付流程,合作可靠物流,并提供客服支持以提升用户满意度。通过这样的攻略,可构建一站式跨境购物解决方案。
|
7月前
|
新零售 供应链 数据挖掘
多商户商城入驻系统案例|方案设计|详情版
新零售的最大趋势是线上线下相结合,电商与线下实体商业,应该由原先的独立、冲突,走向混合、融合,通过精准化
|
7月前
|
监控 供应链 搜索推荐
淘宝 1688 京东商品详情数据场景,自营商城上货,价格监控,竞品分析等
淘宝、1688、京东商品详情数据在各自的电商平台上具有广泛的应用场景,自营商城上货、价格监控以及竞品分析则是电商领域的关键环节。这些要素共同构成了电商运营的完整链条,为商家提供了丰富的数据支持和策略选择。
|
7月前
|
小程序 前端开发 数据管理
订水商城实战教程-06店铺信息
订水商城实战教程-06店铺信息
|
安全 API
美团联盟怎么实现用户订单跟单功能
不管是电商cps,还是外卖cps,对接过这么多第三方cps接口,只有美团联盟提供了订单数据回推接口,而且只要订单状态改变,就会回推数据,这为我们自身系统实现用户跟单继而实现分销裂变的功能提供了极大的友好帮助。
414 0
美团联盟怎么实现用户订单跟单功能
|
Android开发 iOS开发
粉丝福利 | 秒 get 支付宝同款扫码组件
源自支付宝的扫码组件,全网免费接入
3346 0
粉丝福利 | 秒 get 支付宝同款扫码组件
直播卖货系统开发买家端与卖家端的不同功能分析
我们都知道,直播卖货系统开发针对不同性质的用户有不同的功能,本文来带大家盘点一下,直播卖货系统开发的卖家端与买家端有哪些不同功能。
直播卖货系统开发买家端与卖家端的不同功能分析
|
小程序
新能力丨客单价提升57%,支付宝会员经营神器上线!
“轻会员”结合了芝麻信用和花呗两大支付宝商业能力,接入“轻会员”后,顾客想要开通会员,可通过芝麻信用或冻结花呗额度,在无需付费的情况下先享受会员权益,再结算会员费。
2007 0
新能力丨客单价提升57%,支付宝会员经营神器上线!