对于服务调用者来说:
- (1)服务框架获得服务调用者提供的服务信息(服务唯一标识:接口全限定名+版本号;方法;调用参数);
- (2)框架根据服务信息通过服务注册查找中心查找到该服务提供者的地址列表;
- (3)可根据(服务、接口、方法、参数)进行路由,确定服务提供者的地址;
- (4)拼装请求参数对象Request,并序列化成二进制流;
- (5)与服务端建立连接,发送序列化二进制结果;
- (6)得到服务端响应,反序列化,得到最终调用结果
对于服务提供者来说:
- (1)发布服务,监听端口;
- (2)服务发布成功后,将服务信息(服务唯一标识:接口全限定名+版本号;服务实现类全限定名)注册到服务注册查找中心;
- (3)接收客户端请求,将请求数据反序列化为Request对象;
- (4)解析Request对象,根据服务标识从服务注册查找中心获取该服务信息,例如服务接口的实现类;
- (5)利用反射创建类实例对象,调用方法(多采用线程池的方式);
- (6)将调用结果序列化成二进制数据;
-(7)发送响应数据到客户端;