解決socket負載均衡集群方案和代碼實現


有一段時間,在考慮下socket 之間集群 可以在Nginx 下可以 但是不同服務器之間怎么通訊呢 后來自己也想可不可以用什么東西或者中間件來通訊 ,后來在百度之下 發現果然就是按照我所想的 ,在網上看了一個方案,架構如下:

 

說一下這個方案他們之間的作用

redis : 存取用戶和服務器的關系,如果A想發一條數據,是發給B ,這時A發起一個mq訂閱模式推送的數據 ,然后B收到數據處理好 ,在推送給用戶就ok 

mq : 是了橋接A和B 的之間的通訊

這樣A和B之間通訊就沒有問題了

以下是搭建過程

首先配置好nginx ,可以百度下載和安裝 ,我的路徑是如下 打開配置nginx.conf   vim nginx.conf 配置如下

 

 

 map $http_upgrade $connection_upgrade {

      default upgrade;

      '' close;

    }

 

    upstream ws_name {

      server 127.0.0.1:12345 weight=1; ## weight 權重越大越大獲取鏈接機會就越大

      server 127.0.0.1:12346 weight=1;

    }

    server {

        listen       9999;

        server_name  localhost;

        location / {

            proxy_pass   http://ws_name/;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection "Upgrade";

           ### 以下配置是為了解決在nginx 下 socket 短時間的斷開 ,即使你配置長鏈接也沒用 必須有如下的配置

            proxy_connect_timeout 4s;

            proxy_read_timeout 600s; #這個配置連接保持多長時間 這配置十分鍾 ,然后可以自己心跳來保證長鏈接

            proxy_send_timeout 12s;

 

 

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

以上是nginx的配置 然后啟動就ok 啟動 命令 :./nginx 

查看是否啟動 命令  ps -ef |grep nginx

 然后 mq 我的mq是 activemq  這個可以百度看看怎么安裝 ,因為這個安裝比較簡單所以就不說太多了 

接下來是代碼的實現了 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM