前言
前面两篇分别介绍了Dubbo的入门和Dubbo的服务暴露
这篇我们要说的服务引用,服务引用是有两种情况的,也可以看做是两种时机,第一个是在Spring容器调用ReferenceBean的afterPropertiesSet方法时引用服务,第二个就是在ReferenceBean对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的
是不是一说饿汉和懒汉,大家顺便回忆了一波单例模式
默认情况下,Dubbo使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 dubbo:reference 的 init 属性开启。
服务引入的三种方式:
第一种是引用本地 (JVM) 服务,上篇在服务暴露里面也说过了每个服务都会通过走injvm协议然后走本地的暴露,因为存在一个服务端和消费端是同一台机器上的情况,这样就直接走本地调用了,不需要走远程调用了,节省网络开销
第二是通过直连方式引用远程服务,这种在线上基本不会采用这种形式的,一般都是平时我们自己测试用,直接写死服务端的地址来调用
第三是通过注册中心引用远程服务,Consumer 通过注册中心得知 Provider 的相关信息,然后进行服务的引入
不管是哪种引用方式,最后都会得到一个 Invoker 实例。如果有多个注册中心,多个服务提供者,这个时候会得到一组 Invoker 实例,此时需要通过集群管理类 Cluster 将多个 Invo