微信搶紅包服務器出租,牛不??戳藞D就知道;我們出租的服務器是離微信服務器機房最近的路由。歡迎大家考評!
內容分享:基于分布式的搶紅包服務器
搶紅包服務器是我的一個課程設計,我在做的時候查了很多資料,但是有部分資料是很久之前的,我在這里將我的設計寫一下,供大家參考,如果有寫的不好的地方請留言指教,謝謝大家。
首先,我拿到題目的時候是,搶紅包服務器(分布式鎖),搶紅包其實是類似于秒殺場景,而題目又提示分布式鎖,到網上一查,嘿,很多關于redis秒殺場景的分布式鎖。而且redis官方文檔關于鎖著部分的翻譯也可以查到,我的工程中選擇的是樂觀鎖,樂觀鎖容易實現并且吞吐量好一些,這里關于redis樂觀鎖的實現不再贅述,網上有很多,一查就可以查到。
然后,我要考慮服務器的負載量和延遲的問題,老師的要求要盡可能的降低延遲,并且提高負載量。
這時候我們正好講到關于分布式的實現原理,負載均衡嘛,好了,負載問題的解決就用這個了。這里就要啰嗦幾句了,關于負載均衡的設計我是這么做的,首先有服務器也有一個過濾器,過濾器的作用是連接服務器并且為連進來的客戶選擇合適的服務器進行連接。過濾器首先要和服務器保持連接,過濾器和服務器之間保持通信,我這里用了一個小的心跳實現通信,服務器要不斷的將自己的負載信息傳遞給過濾器,然后過濾器等待用戶連接,用戶來連接的時候,統一先連接過濾器,從過濾器那里獲得合適的服務器的IP和端口號,然后再找服務器連接,這樣就能將一臺服務器的壓力轉移到其他服務器上面。
從圖片可以看出還有一個數據庫服務器,沒錯,這個數據庫服務器是存放數據資源的。數據庫服務器保存客戶消息,紅包資源信息等。
首先先開啟數據庫服務器,然后服務器與數據庫服務器開始連接,數據庫服務器通過redis的發布訂閱功能將客戶信息統一初始化發布給各個服務器,每個服務器都配置自己的redis,當接受完畢這些客戶消息后將客戶消息保存到自己的redis中,這樣,如果一個用戶存在,當他選擇登錄時,直接到服務器的redis就可以找到他的用戶消息,并且給于反饋,很快,也很方便,如果一個用戶不存在,他在登錄的時候就要去數據庫服務器去注冊,然后數據庫服務器再將用戶消息動態同步到各個服務器。
大體的流程圖就是上面圖中敘述的。
還有就是分配紅包的算法,這個是在服務器中的,這個算法比較簡單,在網上查資料也能查到,盡量符合正態分布就比較ok。
通信我是用TCP/IP實現的,還有可以改進的地方,比如將通信改成NIO的模式,用Netty框架,我是因為馬上就要答辯沒來得及改,有繼續做這個工程的可以改來試試,講道理效率性能都會有提高,在并發量,延遲等都會有改善。
IDCsped 提供最新的IT互聯網資訊,本著分享、傳播的宗旨,我們希望能幫助更多人了解需要的信息!
部分文章轉載自互聯網、部分是IDCsped原創文章,如果轉載,請注明出處:www.aadmxx.cn !