《分布式服务框架原理与实践》阅读笔记2
序列化与反序列化
序列化和反序列化是RPC框架的基础组成部分,设计的好坏对服务化框架的性能、可扩展性和可靠性影响都很大。尽管业界存在多款序列化框架,但是我们在设计时需要从功能丰富度、跨语言支持、兼容性、性能,甚至社区活跃度等多个角度去综合考量,从中择优。
Serializable, xml, json, MessagePack, fastjson, Protocol Buffer, Thrift, Avro.
协议栈
对接异构第三方服务时,通常会选择HTTP/RESTFUL等公有协议;对于内部不模块的服务调用,往往会选择性能较高的二进制私有协议。
链路创建,由调用方发起创建,双方握手后创建。链路关闭,发生异常后或者接收到关闭信号后关闭链路。
服务路由
分布式服务框架.上线运行时都是集群组网,这意味着集群中存分布式服务框架.上线运行时都是集群组网,这意味着集群中存务提供者进行调用,这就涉及到服务路由。分布式服务框架要能够满足用户灵活的路由需求。
基于服务注册中心的订阅发布;消费者缓存提供者地址;
负载均衡(随机、轮循、调用时延、一致性哈希、粘滞连接(会话保持));
路由策略,本地路由优先,条件规则路由,脚本路由规则。
集群容错
容错策略:失败切换(failover),失败通知(failback),失败缓存(failcache), 快速失败(failfast),扩展。
集群容错从功能.上看很简单,设计也并不复杂,但是该特性却非常重要,相比于传统的RPC框架,分布式服务框架让用户开发变得更简单,体验也更好。从功能上看,服务框架需要提供更丰富、更细粒度的功能和扩展点,这就是它相比于传统RPC框架最大的优势。