微信聊天tcp設計 tcp負載均衡模型


 

1:單體

1.1:點對點

兩邊公網ip:

缺點:

1.多少個好友就多少個公網tcp連接,手機資源消耗大

2.公網ip端口被封,即使wifi環境用nat也不是很好的方案

 

1.2:專門搞台服務器,暴露公網ip和端口

 

A、B登陸,保存channel    <uid, channel>

A發送B消息,服務器取得B的channel,write

 

1.3:聊天室

 <roomid, List<uid>>

<uid, channel>

 

https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247484883&idx=1&sn=1a448b21d9fecd9fa4eeff2c51eed9b9&chksm=fa497a62cd3ef37480bd3d003d83d15b0ed6e6166f33c7d5d8484646299eb0979a6bc45cc7ef&mpshare=1&scene=1&srcid=08114vLIYxhRKmYoyf4U0bhP&key=ce0fa4dcd93707bbaaf8db0e48719082b0c76c1bf79933fb217690f7593ce2afd2f3b364b514cb98cb80d2a2578cfa09f064e9f60a87d16086fee24c846ee58ba299f62b78cc9b94cbdf944b5aba337c&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=PxWaGEWWe0eNv4G2j4iXpikni7NYO3V%2FsH0QQT%2FdQT2iUGUsChVqp%2BppkOxUDJNX

 

 

2:負載均衡

2.1:初始化

(1)配置后端服務器列表

(2)心跳

 

2.2: 實現

硬件:F5

軟件:lvs   nginx

 

2.3:映射

 

 A、B登陸,保存 (lbs)<uid, Front channel>,(lbs)<uid, Back channel>,(redis)<uid, back server ip>,

A發送消息B,lbs從uid取得后端Back channel,發送到服務器1,服務器1先取得B的serverid:3 和ip,轉發,server3接收,發還給lbs,lbs再發到B客戶端Front channel

 

 

2.5 另一個負載均衡模型

2中的模型我覺得有點問題,負載均衡仍然會有大量連接,壓力較大,未起到負載分散連接的作用,以下模型可以,而且更簡潔:

 

client 與后端之間同樣要建立心跳,之所以由proxy發起到后端的tcp連接而不是反過來,是因為保持后端的獨立性

參考:https://blog.csdn.net/admin1973/article/details/71424160?utm_source=itdadao&utm_medium=referral

實踐位於:https://www.cnblogs.com/silyvin/articles/9803778.html

 

https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247484897&idx=1&sn=d1ebc9b4a46b15fb36732c7dba52d0a4&chksm=fa497a50cd3ef3460ba31e4c9e417dbd65d55fb3f9f9dfdbdd6943f9517fa096a8cd7af5e8c0&mpshare=1&scene=1&srcid=0812X16OOa3VbM3l3zove0pR&key=c76d92981ae751ea44818f34e9cba4717a846e53faa721f1a7bfd90a8ffacf5b30da581f9c51f9f29cefb4dadb70e1b34a78d0a005688923d0662ceefedbd98c87a145d21b2d6c94149a30c790069973&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=%2FbM7bjJct0cezZRCQGhjHoLNI%2F6kzz3pGwSOHQb0%2Bdd7hBMSHdRUm0qA%2BNc5bGeA

 

 

 

3 實踐

3.1 重啟

 

3.2 瞬間gc

輪詢round robin,然后等待死鏈接平衡服務器

 

https://mp.weixin.qq.com/s?__biz=MzIwMzY1OTU1NQ==&mid=2247484608&idx=1&sn=dbdaa7a20f09a15e252cbef02bba20c1&chksm=96cd448ca1bacd9a127fc517d167e4210c8bc575417a50b23a782fc57ed210f92342fd4903cc&mpshare=1&scene=1&srcid=0927UEIblgcHUwUKBRJPenLI&key=ef42a6c1e4fdfbc6eb68e2ff391e4093d4cbb9e8ed1bac5f901262e1de5eef5198e8ebafc382cee35db594748d59a8fdd79312297f7483bc6aba154f7c6a7afc66ba23c9e2fb6415bd880b64abc0ae85&ascene=0&uin=MTA2NzUxMDAyNQ%3D%3D&devicetype=iMac+MacBookAir6%2C2+OSX+OSX+10.10.5+build(14F2511)&version=11020012&lang=zh_CN&pass_ticket=3sXqr7c2oEvhreALgBwX%2FGLK0mOv%2BqBK9kOHRAlS3NHnD19yGGWL0GX1fFKdJ7eU


免責聲明!

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



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