成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

TCP接入層的負載均衡、高可用、擴展性架構

開發 開發工具 網絡管理
今天和大家系統性聊聊TCP的負載均衡,高可用,與擴展性架構。

今天和大家系統性聊聊TCP的負載均衡,高可用,與擴展性架構。

[[348897]]

web-server的負載均衡,高可用,擴展性架構是怎么實施的?

互聯網架構中,web-server接入一般使用nginx來做反向代理,實施負載均衡。整個架構分三層:

  • 上游調用層,一般是browser或者APP;
  • 中間反向代理層,nginx;
  • 下游真實接入集群,web-server,常見web-server的有tomcat,apache;

那整個訪問過程是怎么樣的?

  • browser向daojia.com發起請求;
  • DNS將daojia.com解析為外網IP(1.2.3.4);
  • browser通過外網IP(1.2.3.4)訪問nginx;
  • nginx實施負載均衡策略,常見策略有輪詢,隨機,IP-hash等;
  • nginx將請求轉發給內網IP(192.168.0.1)的web-server;

由于http短連接,以及web應用無狀態的特性,理論上任何一個http請求落在任意一臺web-server都應該得到正常處理。

畫外音:如果必須落在一臺,說明架構可能不合理,難以水平擴展。

問題來了,tcp是有狀態的連接,客戶端和服務端一旦建立連接,一個client發起的請求必須落在同一臺tcp-server上,此時如何做負載均衡,如何保證水平擴展呢?

方案一:單機法tcp-server

單個tcp-server顯然是可以保證請求一致性:

  • client向tcp.daojia.com發起tcp請求;
  • DNS將tcp.daojia.com解析為外網IP(1.2.3.4);
  • client通過外網IP(1.2.3.4)向tcp-server發起請求;

這個方案有什么缺點?

無法保證高可用。

方案二:集群法tcp-server

可以通過搭建tcp-server集群來保證高可用,客戶端來實現負載均衡:

  • client內配置有tcp1/tcp2/tcp3.daojia.com三個tcp-server的外網IP;
  • 客戶端通過“隨機”的方式選擇tcp-server,假設選擇到的是tcp1.daojia.com;
  • 通過DNS解析tcp1.daojia.com;(4)通過外網IP連接真實的tcp-server;

如何保證高可用呢?

如果client發現某個tcp-server連接不上,則選擇另一個。

這個方案有什么缺點?

每次連接前,需要多實施一次DNS訪問:

  • 難以預防DNS劫持;
  • 多一次DNS訪問意味著更長的連接時間,這個不足在手機端更為明顯;

如何解決DNS的問題?

直接將IP配置在客戶端,可以解決上述兩個問題,很多公司也就是這么做的,俗稱“IP直通車”。

“IP直通車”有什么新問題?

將IP寫死在客戶端,在客戶端實施負載均衡,擴展性很差:

  • 如果原有IP發生變化,客戶端得不到實時通知;
  • 如果新增IP,即tcp-sever擴容,客戶端也得不到實時通知;
  • 如果負載均衡策略變化,需要升級客戶端;

方案三:服務端實施負載均衡

只有將復雜的策略下沉到服務端,才能根本上解決擴展性的問題。

增加一個http接口,將客戶端的“IP配置”與“均衡策略”放到服務端是一個不錯的方案:

  • client每次訪問tcp-server前,先調用一個新增的get-tcp-ip接口,對于client而言,這個http接口只返回一個tcp-server的IP;
  • 這個http接口,實現的是原client的IP均衡策略;
  • 拿到tcp-server的IP后,和原來一樣向tcp-server發起TCP長連接;

這樣的話,擴展性問題就解決了:

  • 如果原有IP發生變化,只需要修改get-tcp-ip接口的配置;
  • 如果新增IP,也是修改get-tcp-ip接口的配置;
  • 如果負載均衡策略變化,不需要升級客戶端;

然而,新的問題又產生了,如果所有IP放在客戶端,當有一個IP掛掉的時候,client可以再換一個IP連接,保證可用性,而get-tcp-ip接口只是維護靜態的tcp-server集群IP,對于這些IP對應的tcp-server是否可用,是完全不知情的,怎么辦呢?

方案四:tcp-server狀態上報

get-tcp-ip接口怎么知道tcp-server集群中各臺服務器是否可用呢,tcp-server主動上報是一個潛在方案,如果某一個tcp-server掛了,則會終止上報,對于停止上報狀態的tcp-server,get-tcp-ip接口,將不返回給client相應的tcp-server的外網IP。

該設計的存在的問題?

誠然,狀態上報解決了tcp-server高可用的問題,但這個設計犯了一個“反向依賴”的耦合小錯誤:使得tcp-server要依賴于一個與本身業務無關的web-server。

方案五:tcp-server狀態拉取

更優的方案是:web-server通過“拉”的方式獲取各個tcp-server的狀態,而不是tcp-server通過“推”的方式上報自己的狀態。

這樣的話,每個tcp-server都獨立與解耦,只需專注于資深的tcp業務功能即可。

高可用、負載均衡、擴展性等任務由get-tcp-ip的web-server專注來執行。

多說一句,將負載均衡實現在服務端,還有一個好處,可以實現異構tcp-server的負載均衡,以及過載保護:

  • 靜態實施:web-server下的多個tcp-server的IP可以配置負載權重,根據tcp-server的機器配置分配負載(nginx也有類似的功能);
  • 動態實施:web-server可以根據“拉”回來的tcp-server的狀態,動態分配負載,并在tcp-server性能急劇下降時實施過載保護;

總結

(1) web-server如何實施負載均衡?

利用nginx反向代理來輪詢、隨機、ip-hash。

(2) tcp-server怎么快速保證請求一致性?

單機。

(3) 如何保證高可用?

客戶配置多個tcp-server的域名。

(4) 如何防止DNS劫持,以及加速?

IP直通車,客戶端配置多個tcp-server的IP。

(5) 如何保證擴展性?

服務端提供get-tcp-ip接口,向client屏屏蔽負載均衡策略,并實施便捷擴容。

(6) 如何保證高可用?

tcp-server“推”狀態給get-tcp-ip接口,

or

get-tcp-ip接口“拉”tcp-server狀態。

細節重要,思路比細節更重要。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-05-08 08:44:07

TCP負載均衡擴展性架構

2023-12-20 09:26:20

高可用高吞吐高擴展性

2013-04-09 10:16:28

OpenStackGrizzlyHyper-V

2024-11-11 16:29:54

負載均衡器系統

2013-03-19 10:50:38

2021-09-02 09:42:11

測試軟件可擴展性開發

2014-05-29 10:09:13

甲骨文MySQL Fabri

2010-06-30 17:15:39

向外擴展SQL Ser

2010-07-21 11:21:05

SQL Server

2023-11-07 09:54:27

架構演進

2022-09-05 15:17:34

區塊鏈比特幣可擴展性

2010-07-01 11:38:13

向外擴展 SQL Se

2018-04-10 14:38:10

區塊鏈

2009-09-03 17:18:40

C#擴展性對象模型

2015-05-13 17:15:01

Elasticsear分布式搜索插件

2009-09-03 17:33:08

C#常規擴展性模型

2020-04-14 12:03:49

AI擴展性機器學習

2021-12-03 14:41:00

云存儲可擴展性存儲

2024-10-10 14:01:34

2010-03-18 10:29:11

Hyper-V
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久免费 | 国产香蕉视频 | 美女国内精品自产拍在线播放 | 久久九九免费 | 精品美女 | 九九99精品| 黄视频网站免费观看 | 欧美 日韩 国产 成人 在线 91 | 日韩毛片中文字幕 | 国产高清精品网站 | 精品一区二区三区四区 | 99日韩 | 日日干日日 | 日本h片在线观看 | 91精品国产手机 | 欧美一区二区三区久久精品 | 精品视频久久久久久 | 久久国产精品亚洲 | 日韩二区 | 久久久久国产精品一区 | 欧美日韩综合精品 | 中文字幕1区 | 日日干夜夜操 | 国产农村一级片 | 日本一区二区三区精品视频 | 日日摸日日添日日躁av | 亚洲男人的天堂网站 | 中文字幕日韩欧美一区二区三区 | 国产精品亚洲成在人线 | 欧美日韩在线电影 | 日韩欧美三级在线 | 精品国产乱码久久久久久丨区2区 | 天天干国产 | 99九九视频 | 欧美aaaaaaaa | 日韩在线免费视频 | 伊人手机在线视频 | 日韩日韩日韩日韩日韩日韩日韩 | 国产a一区二区 | 亚洲综合国产 | 精品日韩一区二区 |