Atitit.atiRI 与 远程调用的理论and 设计

Atitit.atiRI  与 远程调用的理论and 设计

 

 

1. 怎么做到透明化远程服务调用?1

2. 2  怎么对消息进行编码和解码1

2.1.  确定消息数据结构dsl1

2.1.1. 消息里为什么要带有requestID?2

2.2. 序列化与反序列化 json2

3. 通信  http2

4. 发布自己的服务2

 

 

 

1. 怎么做到透明化远程服务调用?

 

怎么封装通信细节才能让用户像以本地调用方式调用远程服务呢?对java来说就是使用代理!java代理有两种方式:1) jdk 动态代理;

 

2. 2  怎么对消息进行编码和解码

作者::  ★(attilax)>>>   绰号:老哇的爪子  全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊  汉字名:艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

 

2.1.  确定消息数据结构dsl

 

接口名称(class).method(param)   参数类型&参数值

要是只一个method,可以反射参数型...贝儿,就要手动指定型..

 

4)超时时间

5)requestID,标识唯一请求id,在下面一节会详细描述requestID的用处。

同理服务端返回的消息结构一般包括以下内容。

1)返回值

2)状态code

3)requestID

 

2.1.1. 消息里为什么要带有requestID?

为异步处理

2.2. 序列化与反序列化 json

 

3. 通信  http

 

4. 发布自己的服务

 

有没有一种方法能实现自动告知,即机器的增添、剔除对调用方透明,调用者不再需要写死服务提供方地址?当然可以,现如今zookeeper被广泛用于实现服务自动注册与发现功能!

简单来讲,zookeeper可以充当一个服务注册表(Service Registry),让多个服务提供者形成一个集群,让服务消费者通过服务注册表获取具体的服务访问地址(ip+端口)去访问具体的服务提供者。如下图所示:

 

 

 

 

 

参考

 

你应该知道的 RPC 原理 - 文章 - 伯乐在线.html

你可能感兴趣的:(Atitit.atiRI 与 远程调用的理论and 设计)