什么是 RPC? Remote Procedure Call,遠(yuǎn)程過程調(diào)用。
RPC 有什么作用?RPC 步驟
為什么需要序列化?零拷貝什么是零拷貝?
為什么需要零拷貝?網(wǎng)卡 等操作,只能通過內(nèi)核操作 ,應(yīng)用程序 要發(fā)送網(wǎng)絡(luò)數(shù)據(jù),需要將數(shù)據(jù)復(fù)制到內(nèi)核 。
如何實(shí)現(xiàn)零拷貝?虛擬內(nèi)存 Netty 的零拷貝有何不同?一個(gè)請(qǐng)求,可能拆分成多個(gè)數(shù)據(jù)包 數(shù)據(jù)包的組合在用戶空間,解決用戶空間內(nèi)存的拷貝處理問題,CompositeByteBuf 也包括用戶空間、內(nèi)核空間的數(shù)據(jù)拷貝:Direct Buffers
動(dòng)態(tài)代理實(shí)現(xiàn)HTTP/2 特性為什么需要服務(wù)發(fā)現(xiàn)?公共的“通訊錄” 為什么不用 DNS?定時(shí)任務(wù) & 時(shí)間輪定時(shí)任務(wù)的問題?時(shí)間輪的應(yīng)用時(shí)鐘輪本質(zhì)減少額外的掃描操作
時(shí)間輪在 RPC 的應(yīng)用調(diào)用端請(qǐng)求的超時(shí)處理,節(jié)省CPU 時(shí)間輪實(shí)現(xiàn)Netty的 TimeWheel 如何注冊(cè)和發(fā)現(xiàn)服務(wù)?RPC Server 提供服務(wù),向 Registry 注冊(cè)自身
RPC Client 調(diào)用服務(wù),從 Registry 拉取服務(wù)列表
Server 節(jié)點(diǎn)變更時(shí),同步變更,Client 感知刷新本地的「服務(wù)節(jié)點(diǎn)列表」

實(shí)現(xiàn): 如何實(shí)現(xiàn) RPC 遠(yuǎn)程調(diào)用?客戶端、服務(wù)端如何建立網(wǎng)絡(luò)連接:HTTP、Socket 服務(wù)端如何處理請(qǐng)求:NIO(使用 Netty ) 數(shù)據(jù)傳輸采用什么協(xié)議 數(shù)據(jù)如何序列化、反序列化:JSON,PB,Thrift
如何追蹤微服務(wù)?核心理念:調(diào)用鏈,全局唯一的 ID 將同一請(qǐng)求串聯(lián)起來,從而還原調(diào)用關(guān)系,統(tǒng)計(jì)系統(tǒng)指標(biāo)。 
注冊(cè)中心選型開源 RPC 框架限定語言Dubbo:Java,阿里 Motan:Java,微博 Tars:C++,騰訊(已支持多語言) Spring Cloud:Java 網(wǎng)關(guān) Zuul 注冊(cè)中心 Eureka 服務(wù)超時(shí)熔斷 Hystrix 調(diào)用鏈監(jiān)控 Sleuth 日志分析 ELK
跨語言 RPC 框架Spring Cloud 微服務(wù)架構(gòu)

|