RPC的实现需要解决的问题,以及如何解决
1.如何表示数据
序列化和反序列化
由于网络协议是基于二进制的,传输数据的时候需要将数据转为二进制(序列化),接受数据需要将二进制数据进行转化(反序列化)。
2.如何传输数据
准确地说,是指如何通过网络,在两个服务的 Endpoint 之间相互操作、交换数据。这里“交换数据”通常指的是应用层协议,实际传输一般是基于标准的 TCP、UDP 等标准的传输层协议来完成的。两个服务交互不是只扔个序列化数据流来表示参数和结果就行的,许多在此之外信息,譬如异常、超时、安全、认证、授权、事务,等等. (dubbo协议)
3.如何确定方法
如何确定被调用方的地址,端口,以及执行的方法。
通过注册中心获取(duubo)
怎么保证一个事物提交成功后才会执行方法里的逻辑:
TransactionSynchronizationManager
分布式事物的运用:
目前公司都是采用的最终一致性(rocektMq事物消息)