2.1.1 基於ip位址的呼叫
2.1.2 網域名稱系統
網域名稱系統的優點很明顯,乙個是名字有意義好記憶,而是,就算更換機器,也只需要更換網域名稱對應的ip即可。
呼叫鏈:使用者訪問網域名稱 -》 根據dns協議解析ip位址 -》根據ip位址訪問服務。
乙個網路協議主要包含兩部分:
**協議包頭:**儲存協議的元資訊,包括協議型別、報體長度、協議格式等;有固定大小,或者明確邊界。
**協議包體:**具體的協議內容。
一般會採用狀態機來做協議資料的接收:
乙個協議,有多個字段,而不同的字段有不同的型別,該如何解析呢?常見手段:
使用json或者xml這樣的資料結構,容易看明白,但是會容易被破解,且資料較大。
使用二進位制協議,tvl格式(type - length - value),但是可視性較差,容易出錯。
google的protocol buffer(pb):具體如下:
優點:1、使用proto格式(dsl(domain-specific language)檔案)來定義協議,文中描述了協議的具體格式,每個欄位的型別,欄位是可選字段還是必選字段,客服端和伺服器通過這個檔案來進行協議的溝通和交流,而不是具體的技術細節。
2、pb能通過proto檔案生成各種語言對應的序列化反序列化**,利於跨語言呼叫。
3、pb能對特定型別的資料進行壓縮,減少資料大小。
隨著越來越豐富的業務,單機伺服器負載不了,肯定要多加伺服器的。
2.3.1 在dns解析的時候處理
在dns解析的時候,將網域名稱與多個位址進行繫結。
缺點:1、如何監控例項的情況,做到發現問題的時候增刪例項位址?
2、把這些服務暴露給外網,是否安全?
3、dns增刪服務並不是實時的,可能會影響到業務。
2.3.2 閘道器接入層
反向**閘道器,提供功能:
負載均衡:把所有的請求盡可能平均的分配到伺服器上;
提供管理功能:管理服務例項;
因為可以決定服務請求流量的走向,所以還可以做灰度引流,安全防攻擊等。
常見的負載均衡軟體有兩種,四層和七層。
四層:lvs (用於tcp協議)
七層:nginx(用於http協議)
(1)、四層負載均衡:lvs
終端網際網路使用者從外部訪問公司的外部負載均衡伺服器,終端使用者的web請求會傳送給lvs排程器,排程器根據自己預設的演算法決定將該請求傳送給後端的某台web伺服器。
(2)、七層負載均衡:nginx
系統內部要訪問外網的時候,統一通過乙個**伺服器把請求發出去,**伺服器實現的就是正向**。
如果有外部請求進入系統的時候,**伺服器把這些請求集中**到某台伺服器上,此時,**伺服器實現的就是反向**。
所以,正向**就是**伺服器代替系統內部向外發起請求的過程,而反向**是外部請求通過**伺服器**到內部伺服器的過程。
反向**的好處:
a.將請求均衡的傳送給web伺服器。
b.只用將反向**伺服器的位址暴露出去,做到限流、安全等。
c.統一接入客戶端的請求,可以在反向**的接入層做更多的控制,比如灰度流量發布、權重控制等。
提供給外網的服務一般以網域名稱的方式提供出去即可,對於服務內部之間的相互呼叫,只有網域名稱系統往往不夠。所以需要乙個「服務發現」類的系統,主要包括:
(1)、服務發現系統:用於提供服務的定址,註冊能力,以及統計服務狀態,根據服務情況更改服務的呼叫情況等;
(2)、一套與服務發現系統配合使用的rpc庫;
rpc庫提供的功能:
(1)、服務提供方:使用rpc庫註冊自己的服務到服務發現系統,上報自己的服務情況;
(2)、服務呼叫方:使用rpc庫進行定址服務,實時從服務發現系統獲取最新的服務排程策略;
(3)、提供協議的序列化、反序列化功能,負載均衡的呼叫策略、熔斷限流等安全訪問策略;
優點:1、業務邏輯無需關注服務位址、協議解析、服務排程、自身服務情況上報等工作,只需關注業務邏輯即可;
2、可以通過管理後台介面,對服務的策略進行修改和檢視等;
3、服務監控系統對服務質量一目了然;
3、服務的健康狀態的檢查自動化,在不好的時候對服務進行降級處理,實現智慧型化和自動化。
加入服務發現系統,架構呼叫如下:
service mesh可以解決的問題:支援多語言,解決庫公升級的麻煩。
在服務mesh之前,呼叫方例項通過自己內部的rpc與服務方例項進行通訊,
在服務mesh之後,呼叫方例項通過service mesh proxy**層與服務方例項進行通訊;
Quartz呼叫大全
quartz呼叫大全 1.quartz應用範圍廣泛,可單獨執行也可在spring中嵌入執行。類似的定時任務在linux下可以用crontab執行 2.實現 quartztest 主要執行類 quartzlistener 可設定在jobdetail trigger,scheduler三個層次 主要對j...
Intent呼叫大全
呼叫瀏覽器 uri uri uri.parse intent it new intent intent.action view,uri startactivity it 顯示某個座標在地圖上 uri uri uri.parse geo 38.899533,77.036476 intent it ne...
Android Intent呼叫大全
呼叫瀏覽器 uri uri uri.parse intent it new intent intent.action view,uri startactivity it 顯示某個座標在地圖上 uri uri uri.parse geo 38.899533,77.036476 intent it ne...