<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>

                ![](https://img.kancloud.cn/14/cb/14cb1154899af8372d6ee10d45a325e9_1086x428.png) ## 什么是 Sentinel >隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。 Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。 ## Sentinel 的特征 * **豐富的應用場景**:**Sentinel承接了阿里巴巴近 10 年的**雙十一大促流量**的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、實時熔斷下游不可用應用等。 * **完備的實時監控**:**Sentinel 同時提供實時的監控功能。您可以在控制臺中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集群的匯總運行情況。 * **廣泛的開源生態**:Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。 * **完善的 SPI 擴展點**:Sentinel 提供簡單易用、完善的 SPI 擴展點。您可以通過實現擴展點,快速的定制邏輯。例如定制規則管理、適配數據源等。 ![](https://img.kancloud.cn/5a/bd/5abdbe6ca1b50640c798670742b506d1_1365x634.png) ## Sentinel 的開源生態 ![](https://img.kancloud.cn/de/a3/dea3c4a2fe8731e0af0cdc9ca00ef082_1447x783.png) ## Sentinel與Hystrix > Hystrix 已經停止開發。Hystrix 不再維護可能也是 Sentinel 能快速進入大家眼球的原因之一。Hystrix 雖然不再維護,但依然開源,且 Hystrix 已經很穩定,不會因為不維護就不可用,只是不會再有更新。相比 Hystrix,Sentinel 更易于上手,Sentinel 是國內開源的項目,官方有提供中文文檔,對國內的開發者較為友好,并且文檔介紹得也很全面。 ![](https://img.kancloud.cn/f9/9a/f99a7290af1d64bb4a38e343a06b246a_858x629.png) ## Sentinel使用方式 * 手動使用代碼配置 * sentinel控制臺動態配置 * 默認情況下sentinel不對數據持久化,需要自己持久化。 ## sentinel控制臺 -> Sentinel dashboard 使用 ![](https://img.kancloud.cn/97/5e/975e60e4bac56c71213a0cedb0f8c7e4_1183x652.png) ## 啟動sentinel-dashboard ![](https://img.kancloud.cn/19/3c/193cf6fecdf75123346d9ecacb444a40_1610x876.png) ## 訪問sentinel-dashboard ### [http://127.0.0.1:8989/](http://127.0.0.1:8989/) ### sentinel/sentinel ### 登錄頁面 ![](https://img.kancloud.cn/93/e5/93e59cc065413ce08a30a26c17ec005c_1920x606.png) ### 登錄成功 ![](https://img.kancloud.cn/96/17/96174ff06e1225ace15f6b0245179426_1901x662.png) ### 限流算法 假設1s內可以處理3000個事務。 * **固定窗口**:維護一個計數器,如果在窗口時間單元內且不超過3000,則允許請求。存在的問題可能是流量高峰集中在第一秒內的最后10ms內,第二秒的最初10ms內,這樣有可能在20ms中要處理6000個事務。 * **滑動窗口**:細分時間單元,劃分多個小窗口,基于時間滑動,在總窗口內的請求總數不能超過3000,可以解決固定窗口的問題。但是缺點是無法解決小窗口內的請求集中的問題,如果10ms內涌入3000,可能造成服務被流量壓垮。 窗口劃分太細容易導致正常的請求被誤限流,窗口太粗,導致限流無法起到很好的作用。所以一般的平滑策略是多層次限流,設置多條限流策略使用滑動窗口限制請求速率,使用細粒度固定窗口防止請求集中的問題。為了優化窗口算法的問題,出現了漏桶算法和令牌桶算法。 * **令牌桶算法**:有一個固定容量的桶,桶里存放著令牌(token)。桶一開始是空的,token以一個固定的速率r往桶里填充(本次和上次請求時間戳計算),直到達到桶的容量,多余的令牌將會被丟棄。每當一個請求過來時,就會嘗試從桶里移除一個令牌,如果沒有令牌的話,請求無法通過,優點是對突發的流量可以有適當的彈性,但是要注意令牌桶的總量不能超過服務的處理能力。 * **漏桶算法**:有一個固定容量的桶,有水流進來,也有水流出去。對于流進來的水來說,我們無法預計一共有多少水會流進來,也無法預計水流的速度。但是對于流出去的水來說,這個桶可以固定水流出的速率(本次和上次請求時間戳計算)。而且,當桶滿了之后,多余的水將會溢出,優點是即便突發流量來臨,也會保持一定的速率去處理,大量的流量不會壓垮服務。 ### 限流規則 * 時間粒度:時間窗口的大小、令牌的投放速率、漏桶的消費速率。對于突發流量高的,時間粒度要小一點,對于突發流量少的,時間窗口大一點。 * 接口粒度:集群訪問粒度、服務訪問粒度、服務接口訪問粒度。 * 最大限流值:不大于壓測的TPS并且不小于業務的預期流量,針對監控數據做一些適當調整。
                  <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>

                              哎呀哎呀视频在线观看