搶紅包服務器租用

2017-10-23 17:01:08 tym678

微信搶紅包服務器出租,牛不牛看了圖就知道;我們出租的服務器是離微信服務器機房最近的路由。歡迎大家考評!

QQ圖片20171022132426.png


內(nèi)容分享:基于分布式的搶紅包服務器

搶紅包服務器是我的一個課程設計,我在做的時候查了很多資料,但是有部分資料是很久之前的,我在這里將我的設計寫一下,供大家參考,如果有寫的不好的地方請留言指教,謝謝大家。

首先,我拿到題目的時候是,搶紅包服務器(分布式鎖),搶紅包其實是類似于秒殺場景,而題目又提示分布式鎖,到網(wǎng)上一查,嘿,很多關于redis秒殺場景的分布式鎖。而且redis官方文檔關于鎖著部分的翻譯也可以查到,我的工程中選擇的是樂觀鎖,樂觀鎖容易實現(xiàn)并且吞吐量好一些,這里關于redis樂觀鎖的實現(xiàn)不再贅述,網(wǎng)上有很多,一查就可以查到。

然后,我要考慮服務器的負載量和延遲的問題,老師的要求要盡可能的降低延遲,并且提高負載量。

這時候我們正好講到關于分布式的實現(xiàn)原理,負載均衡嘛,好了,負載問題的解決就用這個了。這里就要啰嗦幾句了,關于負載均衡的設計我是這么做的,首先有服務器也有一個過濾器,過濾器的作用是連接服務器并且為連進來的客戶選擇合適的服務器進行連接。過濾器首先要和服務器保持連接,過濾器和服務器之間保持通信,我這里用了一個小的心跳實現(xiàn)通信,服務器要不斷的將自己的負載信息傳遞給過濾器,然后過濾器等待用戶連接,用戶來連接的時候,統(tǒng)一先連接過濾器,從過濾器那里獲得合適的服務器的IP和端口號,然后再找服務器連接,這樣就能將一臺服務器的壓力轉移到其他服務器上面。

122.png

從圖片可以看出還有一個數(shù)據(jù)庫服務器,沒錯,這個數(shù)據(jù)庫服務器是存放數(shù)據(jù)資源的。數(shù)據(jù)庫服務器保存客戶消息,紅包資源信息等。

首先先開啟數(shù)據(jù)庫服務器,然后服務器與數(shù)據(jù)庫服務器開始連接,數(shù)據(jù)庫服務器通過redis的發(fā)布訂閱功能將客戶信息統(tǒng)一初始化發(fā)布給各個服務器,每個服務器都配置自己的redis,當接受完畢這些客戶消息后將客戶消息保存到自己的redis中,這樣,如果一個用戶存在,當他選擇登錄時,直接到服務器的redis就可以找到他的用戶消息,并且給于反饋,很快,也很方便,如果一個用戶不存在,他在登錄的時候就要去數(shù)據(jù)庫服務器去注冊,然后數(shù)據(jù)庫服務器再將用戶消息動態(tài)同步到各個服務器。

20170708154526422.png

大體的流程圖就是上面圖中敘述的。

還有就是分配紅包的算法,這個是在服務器中的,這個算法比較簡單,在網(wǎng)上查資料也能查到,盡量符合正態(tài)分布就比較ok。

通信我是用TCP/IP實現(xiàn)的,還有可以改進的地方,比如將通信改成NIO的模式,用Netty框架,我是因為馬上就要答辯沒來得及改,有繼續(xù)做這個工程的可以改來試試,講道理效率性能都會有提高,在并發(fā)量,延遲等都會有改善。


主站蜘蛛池模板: 宾阳县| 宁乡县| 黄龙县| 治县。| 宁德市| 科尔| 东兴市| 新巴尔虎右旗| 舟山市| 天峨县| 辛集市| 赣榆县| 民权县| 华容县| 石屏县| 互助| 石楼县| 宝清县| 博爱县| 新邵县| 三门峡市| 尼玛县| 柳州市| 南漳县| 建宁县| 文安县| 曲麻莱县| 渝中区| 贞丰县| 衢州市| 建平县| 汉中市| 广昌县| 镇安县| 西华县| 綦江县| 赣榆县| 长汀县| 衡阳市| 成都市| 彭水|