夭折的会员开通系统

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

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

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

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

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

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

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



夭折的会员开通系统_第3张图片




粗略的介绍完了  反正不舒服。






你可能感兴趣的:(c)