經過Nginx的反向代理將請求分發到tomcat中,若是tomcat支持100併發,Nginx支持50000併發,理論上nginx把請求發送到500個tomcat就能夠了。nginx
Tomcat和數據庫均可以水平擴展以後,單機的Nginx會成爲瓶頸。數據庫
LVS和H5解決網絡四層負載均衡,性能高於七層的Nginx,單機LVS可支持幾十萬併發請求轉發,F5是硬件負載均衡,性能比LVS高,可是價格昂貴。tomcat
爲解決LVS服務高可用,能夠採用主備方式解決可用性,使用keepalived模擬虛擬IP,而後把虛擬IO綁定到多個LVS機器上,訪問虛擬IP時,請求會被路由到真實到LVS服務器上,當主LVS宕機時,keepalived會自動更新路由策略,把虛擬IP重定向到另外一臺正常到LVS服務器上,達到LVS服務高可用。服務器
通常幾個Nginx下面是一部分tomcat,Nginx之間經過keepalived實現高可用。網絡
LVS是單機的,當併發數增長到幾十萬時,LVS服務器變成了瓶頸,用於用戶較多,請求分佈在不一樣地區,致使訪問同一個機房存在跨地域延遲。併發
DNS服務配置一個域名對應多個IP地址,每一個IP對應不一樣機房虛擬IP,經過DNS實現了機房間的負載均衡,實現了機房級別的水平擴展。負載均衡
按照業務拆分代碼,使單個應用指責清晰,能夠獨立升級迭代,同時因爲不一樣應用之間存在共用模塊,致使升級迭代過程不自由。微服務
因而抽象出通用業務中臺,用戶,訂單,支付,鑑權等做爲單獨服務進行治理,服務之間經過http,rpc進行通訊,服務之間須要作服務治理,限流,熔斷,降級等工做,提升系統穩定性和可用性。性能