面試筆記9 22 面試官 聊聊你對RPC的理解

2021-10-09 17:02:58 字數 1746 閱讀 5567

rpc

說明:單體架構到分布式架構的演進,必不可少的會使用到rps,rpc是遠端呼叫協議,隨著系統體諒主鍵增大,各個系統部署在不同的機器上,

致使服務間的呼叫需要依賴到網路通訊,使用rpc服務,消費方每次呼叫遠端服務,客戶端不用關心底層網路的互動問題,

大大提高了系統的可靠性。

rpc的架構包含四個核心元件

1、客戶端(client):服務呼叫方(服務消費者)

2、客戶端存根(client stub):存放服務端位址資訊,將客戶端的請求引數資料資訊打包成網路訊息,再通過網路傳輸傳送給服務端

3、服務端存根(server stub):接收客戶端傳送過來的請求訊息並進行解包,然後再呼叫本地服務進行處理

4、服務端(server):服務的真正提供者

rpc呼叫過程

1、服務消費者(client客戶端)通過本地呼叫的方式呼叫服務

2、客戶端存根(client stub)接收到呼叫請求後負責將方法、入參等資訊序列化(組裝)成能夠進行網路傳輸的訊息體

3、客戶端存根(client stub)找到遠端的服務位址,並且將訊息通過網路傳送給服務端

4、服務端存根(server stub)收到訊息後進行解碼(反序列化操作)

5、服務端存根(server stub)根據解碼結果呼叫本地的服務進行相關處理

6、本地服務執行具體業務邏輯並將處理結果返回給服務端存根(server stub)

7、服務端存根(server stub)將返回結果重新打包成訊息(序列化)並通過網路傳送至消費方

8、客戶端存根(client stub)接收到訊息,並進行解碼(反序列化)

9、服務消費方得到最終結果

rpc用到的關鍵技術點

動態**

通過rpc呼叫服務,如果要實現類似於調本地service的效果,需要基於介面獲取動態**,就是在介面的本地存在這個**,

**會找到服務對應機器位址,高併發還需要考慮負載均衡問題

均衡的策略

隨機權重

一致性雜湊

輪詢序列化,反序列化

nio通訊

服務註冊中心

如何設計乙個rpc框架

rpc互動協議

請求頭header

請求體body

服務註冊與發現的流程

1:服務提供方繫結指定埠並啟動服務,連線服務註冊中心,將本機ip,埠,應用資訊傳送到過去並儲存,

狀態變更時會推送到註冊中心,再由註冊中心推送給消費者

2:消費者連線註冊中心,傳送應用資訊請求服務資訊到註冊中心,註冊中心根據訊息內容匹配相應的服務列表傳送到消費者應用快取,

消費者基於列表選擇並發起呼叫

微服務帶來哪些問題

客戶端的呼叫會受到網路問題的影響

註冊中心網路異常需要服務治理

redis

為什麼redis單執行緒模型效率卻很高

基於純記憶體的操作

非阻塞的io多路復用機制

避免多執行緒頻繁切換上下文的額外消耗

redis執行緒模型

io 多路復用程式

檔案事件處理器

檔案事件分派器

多個 socket

快取與資料庫一致性問題

幻讀:寫入沒成功,但被其他執行緒讀到

高併發讀,並有少量更新

解決辦法

1:先讀快取,不存在則請求資料庫,取出後存入快取,並響應資料

2:更新時,先刪除快取,在更新資料庫

3:高併發時使用非同步序列化方案,通過佇列實現

面試你的面試官

大多數面試都是面試官從簡歷,學歷,經歷,技術,為人上對你 乙個求職者 一番拷問,以確定是否是他們想要的人。而這些對找到適合你的工作的確沒什麼用。某公司某職位需要你,而某公司某職位不一定是你想要的!如果你想找到適合你的公司 如果你想找到適合你的職位 記得面試你的面試官,沒錯!做出很重要的職業決定前,面...

面試官!讓我們聊聊正則

正規表示式是處理字串的利器,並提高工作效率,乙個好的正則能夠幫我們省去幾十甚至上百行 在工作中,也許你會見到在 現很多正則處理字串,也可能見到 中毫無正則,原因在於會正則的人往往處理字串首先想到用正則去處理,不會的那必然用很多api處理。並且在面試的時候很多同學往往掛在正則這裡,所以對於前端正則是乙...

面試官的心得筆記

趁國慶放假,整理了一下這兩三年當技術面試官的一些心得筆記 被我面試過的求職者估計將近 100位 我一般是分六個環節來依次詢問。時間控制在半小時至 1小時內,為了節省時間,對於求職者前面部分的環節考核不通過的則後面的環節可以省略。一 第一印象 這部分對於技術面試是最重要的,有六成以上可以判定這個人是否...