1、最初 單體架構
如圖所示,瀏覽器先通過DNS獲取域名對應的外網IP地址,然后通過外網ip訪問對應的web-server

缺點: 子系統受到單機性能影響,不能高可用,不能擴展
2、優化方案(在反向代理產品出現之前)
單體架構---》DNS輪詢
dns輪詢是一個非常容易想到的方案,可用通過dns輪詢解決擴展性問題。配置多個A記錄,在解析域名時,dns會輪詢的返回不同的IP

缺點:
* 系統仍然是非高可用的,dns-server只負責域名解析ip,這個ip對應的服務是否可用,dns-server不可知(也就是說如果站點層的節點掛了)dns-server是不知曉的,部分流量會受到影響
* 擴容不是實時的,因為dns的解析有一個生效周期
* 暴露了太多的外網IP,安全性會受到影響
3、升級優化方案(有了反向代理)
DNS輪詢---》反向代理

好處:
* 只暴露一個外網IP,屏蔽內網服務的ip地址
* 高可用得到保證
* 擴容實時
缺點:
* 時延增加了,由于中間加了proxy
* 架構更復雜
* 反向代理成了單點
4、進一步升級架構
反向代理---》高可用反向代理

當代理的nginx服務掛掉后,keepalived會探測到,并將流量自動遷移到另外一臺nginx服務上,由于使用同一個虛擬VIP,對調用方來說,是透明的
缺點: 資源利用率是50%,只有一臺服務器提供服務,另外一臺處于備用狀態
問題: 如果整個站點的吞吐量超過nginx的提供的,那么該怎么辦?
5、進一步升級架構
高可用反向代理---》多層高可用反向代理

缺點: LVS和F5還是有性能上線
6、進一步架構升級
多層高可用反向代理----》DNS輪詢

水平擴展,DNS輪詢解決擴展性問題,擴展入口性能
DNS輪詢: 解決性能擴展問題
VIP+Keepalived: 解決高可用問題