<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ![](https://img.kancloud.cn/f0/26/f0268fd009ae12095930680674060bd7_636x866.jpg) 常見的互聯網分布式系統架構分為幾層,一般如下: * 客戶端層:比如用戶瀏覽器、APP 端 * 反向代理層:技術選型 Nignx 或者 F5 等 * Web 層:前后端分離場景下, Web 端可以用 NodeJS 、 RN 、Vue * 業務服務層:用 Java 、Go,一般互聯網公司,技術方案選型就是 SC 或者 Spring Boot + Dubbo 服務化 * 數據存儲層:DB 選型 MySQL ,Cache 選型 Redis ,搜索選型 ES 等 一個請求從第 1 層到第 4 層,層層訪問都需要負載均衡。即每個上游調用下游多個業務方的時候,需要均勻調用。這樣整體系統來看,就比較負載均衡 **第 1 層:客戶端層 -> 反向代理層 的負載均衡** 客戶端層 -> 反向代理層的負載均衡如何實現呢? 答案是:DNS 的輪詢。 DNS 可以通過 A (Address,返回域名指向的 IP 地址)設置多個 IP 地址。比如這里訪問[http://bysocket.com](https://link.zhihu.com/?target=http%3A//bysocket.com)的 DNS 配置了 ip1 和 ip2 。為了反向代理層的高可用,至少會有兩條 A 記錄。這樣冗余的兩個 ip 對應的 nginx 服務實例,防止單點故障。 每次請求[http://bysocket.com](https://link.zhihu.com/?target=http%3A//bysocket.com)域名的時候,通過 DNS 輪詢,返回對應的 ip 地址,每個 ip 對應的反向代理層的服務實例,也就是 nginx 的外網ip。這樣可以做到每一個反向代理層實例得到的請求分配是均衡的。 **第 2 層:反向代理層 -> Web 層 的負載均衡** 反向代理層 -> Web 層 的負載均衡如何實現呢? 是通過反向代理層的負載均衡模塊處理。比如 nginx 有多種均衡方法: 1. 請求輪詢。請求按時間順序,逐一分配到 web 層服務,然后周而復始。如果 web 層服務 down 掉,自動剔除 ~~~text upstream web-server { server ip3; server ip4; } ~~~ ip 哈希。按照 ip 的哈希值,確定路由到對應的 web 層。只要是用戶的 ip 是均勻的,那么請求到 Web 層也是均勻的。 1. 還有個好處就是同一個 ip 的請求會分發到相同的 web 層服務。這樣每個用戶固定訪問一個 web 層服務,可以解決 session 的問題。 ~~~text upstream web-server { ip_hash; server ip3; server ip4; } ~~~ 1. weight 權重 、 fair、url\_hash 等 **第 3 層:Web 層 -> 業務服務層 的負載均衡** Web 層 -> 業務服務層 的負載均衡如何實現呢? 比如 Dubbo 是一個服務治理方案,包括服務注冊、服務降級、訪問控制、動態配置路由規則、權重調節、負載均衡。其中一個特性就是智能負載均衡:內置多種負載均衡策略,智能感知下游節點健康狀況,顯著減少調用延遲,提高系統吞吐量。 為了避免避免單點故障和支持服務的橫向擴容,一個服務通常會部署多個實例,即 Dubbo 集群部署。會將多個服務實例成為一個服務提供方,然后根據配置的隨機負載均衡策略,在20個 Provider 中隨機選擇了一個來調用,假設隨機到了第7個 Provider。LoadBalance 組件從提供者地址列表中,使用均衡策略,選擇選一個提供者進行調用,如果調用失敗,再選另一臺調用。 Dubbo內置了4種負載均衡策略: * RandomLoadBalance:隨機負載均衡。隨機的選擇一個。是Dubbo的默認負載均衡策略。 * RoundRobinLoadBalance:輪詢負載均衡。輪詢選擇一個。 * LeastActiveLoadBalance:最少活躍調用數,相同活躍數的隨機。活躍數指調用前后計數差。使慢的 Provider 收到更少請求,因為越慢的 Provider 的調用前后計數差會越大。 * ConsistentHashLoadBalance:一致性哈希負載均衡。相同參數的請求總是落在同一臺機器上。 同樣,因為業務的需要,也可以實現自己的負載均衡策略 **第 4 層:業務服務層 -> 數據存儲層 的負載均衡** 數據存儲層的負載均衡,一般通過 DBProxy 實現。比如 MySQL 分庫分表。 當單庫或者單表訪問太大,數據量太大的情況下,需要進行垂直拆分和水平拆分兩個維度。比如水平切分規則: * Range 、 時間 * hash 取模,訂單根據店鋪ID 等 但伴隨著這塊的負載會出現下面的問題,需要解決: * 分布式事務 * 跨庫 join 等 現狀分庫分表的產品方案很多:當當 sharding-jdbc、阿里的 Cobar 等 ## **五、小結** 對外看來,負載均衡是一個系統或軟件的整體。對內看來,層層上下游調用。只要存在調用,就需要考慮負載均衡這個因素。所以負載均衡(Load Balance)是分布式系統架構設計中必須考慮的因素之一。考慮主要是如何讓下游接收到的請求是均勻分布的: * 第 1 層:客戶端層 -> 反向代理層 的負載均衡。通過 DNS 輪詢 * 第 2 層:反向代理層 -> Web 層 的負載均衡。通過 Nginx 的負載均衡模塊 * 第 3 層:Web 層 -> 業務服務層 的負載均衡。通過服務治理框架的負載均衡模塊 * 第 4 層:業務服務層 -> 數據存儲層 的負載均衡。通過數據的水平分布,數據均勻了,理論上請求也會均勻。比如通過買家ID分片類似
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看