Cool RPC project
- client: 支持客户端发包模块
- server: 支持服务端收包模块
- transport: 提供底层通信能力模块
- codec: 自定义协议的解析、序列化和反序列化模块
- pool: 池技术、支持连接池、对象池等实现;提供客户端连接的复用,对象复用的能力
- log: 提供日志能力模块
- selector: 提供寻址能力、服务发现、负载均衡能力的模块
- stream: 提供客户端和服务端上下文数据透传能力的模块
- protocol: 提供自定义私有协议能力的模块
- plugin: 提供第三方插件化支持能力
- interceptor: 提供框架拦截器能力
- metadata: 提供客户端和服务端参数传递能力
- 客户端链接超时
- 客户端重连机制
- 客户端重复握手保护
- 消息缓存转发
- 心跳机制
- Client automatically manages connections and automatically reconnects to the server on connection errors.
- Client supports response timeouts.
- Client supports RPC batching.
- Client supports async requests' canceling.
- Client prioritizes new requests over old pending requests if server fails to handle the given load.
- Client detects stuck servers and immediately returns error to the caller.
- Client supports fast message passing to the Server, i.e. requests without responses.
- Both Client and Server provide network stats and RPC stats out of the box.
- 服务端超时
- 服务端调用失败
- 失败自动切换
- 失败通知
- 失败缓存
- 快速失败
- Server provides graceful shutdown out of the box.
- Server supports RPC handlers' councurrency throttling out of the box.
- Server may pass client address to RPC handlers.
- Server gracefully handles panic in RPC handlers.
- Dispatcher accepts functions as RPC handlers.
- Dispatcher supports registering multiple receiver objects of the same type under distinct names.
- Dispatcher supports RPC handlers with zero, one (request) or two (client address and request) arguments and zero, one (either response or error) or two (response, error) return values.
- 随机
- 轮询
- 服务调用时延
- 一致性哈希
- 粘滞连接