本系列文章記錄項(xiàng)目的一些實(shí)戰(zhàn)經(jīng)驗(yàn)政冻,從基本使用到底層原理窥淆、源碼分析等蛮拔。
1、簡(jiǎn)單的HTTP服務(wù)器,HttpServerCodec:HTTP SERVER 編碼解碼器带饱。封裝了HttpServerRequestDecoder和HttpServerResponseEncoder
2、簡(jiǎn)單的WebSocket:
? ? ? ? server端:HttpServerCodec +?ChunkedWriteHandler+HttpObjectAggregator+WebSocketServerProtocolHandler
? ? ? ? client端:JS實(shí)現(xiàn)見程序示例横媚;或者Java實(shí)現(xiàn):HttpClientCodec+ChunkedWriteHandler+HttpObjectAggregator+WebSocketClientProtocolHandler
? ? ? ? 另外服務(wù)器和客戶端之間的消息傳輸基于WebSocketFrame消息類型(共六種)
3纠炮、我們了解這些后,最好的學(xué)習(xí)方式是先回過頭來灯蝴,學(xué)習(xí)一下RPC:
? ? 1)protobuf
? ? ? ? Netty提供官方的Handler支援了protobuf恢口,見程序示例。
? ? 2)thrift
? ? ? ? Apache下的一個(gè)知名項(xiàng)目穷躁,Linux下安裝需要安裝好g++耕肩,然后編譯安裝
? ? ? ? 對(duì)于Java的支持:
? ? ? ? ? ? 寫法很像Android的AIDL因妇,RemoteService -> Client
? ? ? ? ? ? server的組成元素:transport、protocol猿诸、server
? ? ? ? ? ? 比較常用的server婚被,THsHaServer:
????????????THsHaServer:1)配置server的transport -- TNonblockingServer的進(jìn)一步封裝,另外TNonblockingServerd的transportFactory必須用TFramedTransport.Factory梳虽。 ?2)配置server的protocol --?TCompactProtocol(壓縮的)或者TBinaryProtocol(二進(jìn)制的)等等址芯。 ?3)自定義的Processor的實(shí)現(xiàn),thrift編譯器自動(dòng)生成窜觉。
? ? ? ? ? ? 需要注意的是client端的protocol和transport需要和server端對(duì)應(yīng)
? ? 3)grpc
? ? ? ? ? ? 努力更新中谷炸。。禀挫。