不同服务再性能上适用不同协议进行传输。比如:对接异构第三方服务时,通常会选择HTTP/Restful等公有协议;对于内部不同模块之间的服务调用,往往会选择性能较高的二进制私有协议。
一.关键技术点分析
1.是否必须支持多协议
不是。分布式服务框架和ESB最大差异是其不负责异构系统的对接,这就意味着所有适用分布式服务框架的业务都需要遵循服务化规范,包括通信协议,服务配置等。
2.公有协议还是私有协议
大部分分布式服务框架/RPC框架内部都采用私有协议进行通信。
公有协议:扩展性强,兼容型好,支持异构系统,实现不同系统之间的服务调用。
私有协议:性能更好。当内部服务跨进程通信,吞吐率、时延等性能指标称为关键。
二.功能设计
公有协议栈往往采用集成开源方案,集成起来比较简单,只需要做简单Facade即可。对于自研的私有协议栈:
1.通信模型

服务提供者和消费这之间采用单链路,长连接的方式进行网络通信
2.可靠性设计
- 客户端连接超时
- 客户端重连机制
- 客户端重复握手保护
- 消息缓存重发
-心跳机制
3.安全性设计
为了保证真个集群环境的安全,内部长连接采用给予IP地址的安全认证机制,服务端对握手请求消息的IP地址进行合法性校验。
如果需要将服务开放给第三方非信认的消费者,则需要采用更加严格的安全认证机制,比如:基于秘钥和AES加密的用户名+密码认证机制,也可以采用SSL/TSL安全传输。

网友评论