一、服务发现
服务发现的过程发生在Consumer端,服务发现的过程也就是寻址的过程,Consumer端如果要发起RPC调用,则需要先知道自己想要调用的应用服务有哪些服务提供者,也就是需要知道这些服务提供者的地址和端口。服务发现的方式有两种,分别是直连式和注册中心式,对应 的是Provider端的两种服务暴露方式。
- 直连式:服务消费者可以根据服务暴露的地址和端口直接连接远程服务,但是每次服务提供者的地址和端口变更后,服务消费者都需要随之变更配置的地址和端口。这种方式不建议在生产环境中使用,更多被用来做服务测试。而且直连式不适合服务治理。如果Provider端的应用服务仅仅暴露在本地,则Consumer端只能通过直连式来做服务发现
- 注册中心式:服务消费者通过注册中心进行服务发现。也就是服务提供者的地址和端口从注册中心获取。当服务提供者变化时,注册中心能够通知服务消费者有关服务提供者的变化。如果Provider端采用暴露到远程的方式暴露服务,则Consumer端可以选择直连式和注册中心式进行服务发现。
二、服务引用
服务引用的过程发生在服务发现之后,当Consumer端通过服务发现获取所有服务提供者的地址后,通过负载均衡策略选择其中一个服务提供者的节点进行服务引用。服务引用的过程就是与某一个服务节点建立连接,以及在Consumer 端创建接口的代理的过程。其中建立连接也就是两端的RPCRumtime建立连接的过程。还是以之前的例子为例,两国的领导人与翻译员都在各自的国家,他们只能通过电话交谈,翻译员需要通过电话来传达领导人的谈话,而拨打电话就是RPCRuntime建立连接的过程。