数据通信(RESTFul、RPC、消息队列),分布式节点之间的通信
RESTFul
Representational State Transfer(表现层状态转化)
RPC
RPC(Remote Process Call) - 远程过程调用,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了 传输层和应用层.RPC使得开发分布式程序就像开发本地程序一样.
RPC采用C/S模式,都运行在自己的JVM中,客户端只需要引入要使用的接口,接口的实现和运行都在服务器端.
RPC主要依赖的技术包括 序列化,反序列化和数据传输协议 ,这是一种定义与实现相分离的设计.
常见的RPC框架
- RMI(JDK自带):JDK自带的RPC
- Dubbo:Alibaba开源的高性能优秀的服务框架.
- HEssian:轻量级的remotingonhttp工具,使用简单方法提供 RMI 功能.相比于WebService,Hessian更简单,快捷.采用二进制协议.
- Thrift:Fackebook开源的跨语言的RPC通信框架.
消息中间件
消息中间件,也可以叫做消息队列,通常用于解决服务之间的 异步调用 问题.
请求服务方把请求队列放到队列中即可返回,然后等待服务服务提供方从队列中获取请求进行处理,之后通过回调机制吧结果返回给请求服务方.
- 解耦
- 最终一致性:两个系统的状态保持一直,可以有一定的延迟,只要达到最终一致性.
- 广播: 消息队列最基本的功能. 生产者负责生产消息,订阅者接收消息
- 错峰和流控
常见的消息队列
- ActiveMQ
- RabbitMQ
- RocketMQ
- Kafka:分布式的,可分区的,可复制的,基于发布/定义的消息系统.Kafka主要用于 大数据领域 .