為了提高服務的高可用性,減少時延帶來的詬病,採取減少平均時延策略, 可用方式有哪些?如何將此策略與現在流行的微服務框架結合,給出你熟悉微服 務框架的融合的設計方案。
服務呼叫(通訊)可以分為以下幾個層級
在設計微服務呼叫時,盡量使用上面層級的,而不是下面層級的:
可以進 程內呼叫的,不要跨程序;
可以主機內呼叫,不要跨主機;
可以機架內呼叫的, 不要跨機架;
可以機房內呼叫的,不要跨機房;
可以區域內呼叫的,不要跨區域。
在設計上運用了以上思想的有如下中介軟體:
1. dubbo
a) 本地呼叫。
使用了 injvm 協議,是乙個偽協議,它不開啟埠,不發 起遠端呼叫,只在 jvm 內直接關聯,但執行 dubbo 的 filter 鏈。
從 dubbo2.2.0 開始,每個服務預設都會在本地暴露;
在引用服務的時候,預設優先引用本地服務;
如果希望引用遠端服務可以使用一下配置強制引用遠端服務。不用跨網路,可以消除網路開銷(injvm)。
b) 跨網路呼叫。
對dubbo 來說,所有的跨網路服務都是對等的,不區分跨中心、跨區域,因此做不到同機房->同城->跨城這樣的優先順序。
2. spring cloud。
spring cloud 有 region(地區)和 zone(中心)的概念,這兩個概念源自於 eureka。通過不同的呼叫優先順序,可以減少網路開銷:
a) 乙個呼叫發起時優先呼叫同乙個 zone 下的服務(inzone)。
b) 呼叫失敗則再次呼叫同乙個 region 下的不同 zone 下的服務(inregion)。
c) 如果再次失敗,則呼叫不同 region 下的服務(global)。
3. kubernetes。
kubernetes 網路有以下 4 中模式。 使用不同的網路模式,可以減少網路開銷:
a) 無網模式。單機應用。內部調(injvm)。
b) host 模式。共用宿主機。同乙個pod下的呼叫,如service和sidecar之間的通訊,本地網路通訊(instack)。
c) bridge 模式。同乙個物理機,不同 pod 之間的通訊,會用到 docker bridge0。物理層面的通訊,正常的機房內網路通訊(inzone)。
d) sdn (software defined network)。軟體層面的網路路由。
如何減少IP語音網路傳輸時延
網路傳輸時延表示通過ip網路的單向時延。如果經過internet,很多因素可以影響資料流而且不受控制,這些因素包括語音資料報傳輸過程中必經路由器的流量狀況 每個路由器的處理能力 連線路由器線路的頻寬 網路進入點和輸出點之間路由器的數目等。isp可能會提供端到端的服務等級協議 sla 保證,但不管有沒...
頻寬時延乘積的含義
頻寬時延乘積指的是鏈路的頻寬 單位位元每秒 與來回通訊延遲 rtt,單位秒 的乘積。結果為位元的資料量,表示在特定時間該網路上的最大資料量 已傳送但尚未確認的資料。頻寬時延乘積對網路效能的影響 舉乙個好理解的例子,開了100mb的電信寬頻,但由於中間一些路由器以及鏈路的瓶頸,導致ping對端主機的r...
頻寬時延乘積的含義
頻寬時延乘積指的是鏈路的頻寬 單位位元每秒 與來回通訊延遲 rtt,單位秒 的乘積。結果為位元的資料量,表示在特定時間該網路上的最大資料量 已傳送但尚未確認的資料。頻寬時延乘積對網路效能的影響 舉乙個好理解的例子,開了100mb的電信寬頻,但由於中間一些路由器以及鏈路的瓶頸,導致ping對端主機的r...