废弃的会员开通系统

花了半个月实现实现的会员开通系统,最近需求更改导致这个系统报废........ , 心里几万匹羊驼在咆哮。在这里留个存档,表明俺也奋斗过。

系统用了陈硕的muduo网络库,被我们这边同事改进,增加了UDP支持以适配公司的内部协议。

整个系统有3个模块,接收用户付账信息模块、订单处理模块和用户会员信息存储模块。各模块通讯通过protobuf编码的UDP协议。接收用户付账信息模块和订单处理模块中间有几个用redis list组织的队列进行异步处理。

1.先来介绍第一个模块接收用户付账信息模块

用户开通月会员和年会员的信息都会通过计费系统发送给我方一个流水日志,采用TCP连接。流水需要快速处理返回给计费服务器,所以这个模块对数据进行简单的验证然后压入到队列。在此只画个示意图,秀秀我的window画图软件的熟练程度:

[img]http://dl2.iteye.com/upload/attachment/0102/9256/f4a74363-1cd8-3afb-9849-c4133b4bb153.png[/img]

2.订单处理模块,多实例部署在多台机子上,每个实例采用线程池的方式,从close队列和open队列取出订单进行处理。如果订单处理正确则发送protobuf到用户会员信息存储模块,使其对应的缓存失效,下次拉去到数据库中拉去用户信息;如果订单处理错误,则将订单压入error队列供error订单处理模块处理,如果error订单处理模块也处理错误,则调用报警模块通知开发者---也就是我。

[img]http://dl2.iteye.com/upload/attachment/0102/9258/f2c0a5b0-7f9e-3d75-91ab-baead8664c87.png[/img]


3.用户会员信息存储模块,存储用户的开通时间、经验等信息,内部有个hashmap用于缓存用户(包括未开通会员的用户)的信息在内存中,防止每次请求会访问数据库。
模块会提供2个接口。一个是供PHP接入层使用的getUserInfo;一个是供订单处理模块使用的用户缓存失效接口realseUserInfo,用于把用户从hashmap中remove掉,下次访问走数据库并更新缓存


[img]http://dl2.iteye.com/upload/attachment/0102/9260/3252472c-22b3-30a3-817f-f9cf6ad1dc63.png[/img]

粗略的介绍完了 反正不舒服。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值