微信抢红包服务器出租

2017-10-23 09:30:42 tym678

微信抢红包服务器出租,牛不牛看了图就知道;我们出租的服务器是离微信服务器机房最近的路由。欢迎大家考评!

QQ图片20171022132426.png


内容分享:基于分布式的抢红包服务器

抢红包服务器是我的一个课程设计,我在做的时候查了很多资料,但是有部分资料是很久之前的,我在这里将我的设计写一下,供大家参考,如果有写的不好的地方请留言指教,谢谢大家。

首先,我拿到题目的时候是,抢红包服务器(分布式锁),抢红包其实是类似于秒杀场景,而题目又提示分布式锁,到网上一查,嘿,很多关于redis秒杀场景的分布式锁。而且redis官方文档关于锁着部分的翻译也可以查到,我的工程中选择的是乐观锁,乐观锁容易实现并且吞吐量好一些,这里关于redis乐观锁的实现不再赘述,网上有很多,一查就可以查到。

然后,我要考虑服务器的负载量和延迟的问题,老师的要求要尽可能的降低延迟,并且提高负载量。

这时候我们正好讲到关于分布式的实现原理,负载均衡嘛,好了,负载问题的解决就用这个了。这里就要啰嗦几句了,关于负载均衡的设计我是这么做的,首先有服务器也有一个过滤器,过滤器的作用是连接服务器并且为连进来的客户选择合适的服务器进行连接。过滤器首先要和服务器保持连接,过滤器和服务器之间保持通信,我这里用了一个小的心跳实现通信,服务器要不断的将自己的负载信息传递给过滤器,然后过滤器等待用户连接,用户来连接的时候,统一先连接过滤器,从过滤器那里获得合适的服务器的IP和端口号,然后再找服务器连接,这样就能将一台服务器的压力转移到其他服务器上面。

122.png

从图片可以看出还有一个数据库服务器,没错,这个数据库服务器是存放数据资源的。数据库服务器保存客户消息,红包资源信息等。

首先先开启数据库服务器,然后服务器与数据库服务器开始连接,数据库服务器通过redis的发布订阅功能将客户信息统一初始化发布给各个服务器,每个服务器都配置自己的redis,当接受完毕这些客户消息后将客户消息保存到自己的redis中,这样,如果一个用户存在,当他选择登录时,直接到服务器的redis就可以找到他的用户消息,并且给于反馈,很快,也很方便,如果一个用户不存在,他在登录的时候就要去数据库服务器去注册,然后数据库服务器再将用户消息动态同步到各个服务器。

20170708154526422.png

大体的流程图就是上面图中叙述的。

还有就是分配红包的算法,这个是在服务器中的,这个算法比较简单,在网上查资料也能查到,尽量符合正态分布就比较ok。

通信我是用TCP/IP实现的,还有可以改进的地方,比如将通信改成NIO的模式,用Netty框架,我是因为马上就要答辩没来得及改,有继续做这个工程的可以改来试试,讲道理效率性能都会有提高,在并发量,延迟等都会有改善。


_________________________________________________________________________________

推荐栏目:服务器租用 高防服务器 服务器托管 大带宽机柜 香港服务器

      跨数据中心专线 数据中心 增值服务 解决方案 主机租用 关键词检索

      内容有部分是原创文章,如转载请注明出处!

      业务联系电话:13430280788  微信/QQ:303210272

微信联系

电话
客服
地图
机房