面试题82:Dubbo是如何完成服务引入和导出的?

2023-05-10 09:40:19 浏览数 (2)

【Dubbo是如何完成服务引入的?】

  • 当程序使用@Reference注解来引入一个服务时,Dubbo会将注解和服务的信息解析出来,得到当前所引用的服务名、服务接口是什么。
  • 然后从注册中心进行查询服务信息,得到服务的提供者信息,并存在消费端的服务目录中,绑定监听器用来监听动态配置中心的变更。
  • 根据查询得到的服务提供者信息生成一个服务接口的代理对象,并放入Spring容器中作为Bean。

【Dubbo是如何完成服务导出的?】

  • 首先,Dubbo会将程序所使用的@DubboService注解或@Service注解进行解析,得到程序所定义的服务参数,包括:定义的服务名、服务接口、服务超时时间、服务协议等等,得到一个ServiceBean。
  • 然后,调用ServiceBean的export方法进行服务导出。
  • 将服务信息注册到注册中心,如果有多个协议,多个注册中心,那就将服务按单个协议,单个注册中心进行注册。
  • 之后,还会绑定一些监听器,监听动态配置中心的变更。
  • 还会根据服务协议启动对应的Web服务器或网络框架,比如:Tomcat、Netty等。

0 人点赞