Dubbo的服务导出
2024-01-18 16:17:25 0 举报
Dubbo的服务导出是一种面向服务架构(SOA)的实现,它允许将服务提供者(Provider)的服务通过RPC(远程过程调用)的方式发布给服务消费者(Consumer)。在Dubbo中,服务导出的核心是ServiceConfig类和Provider模型。ServiceConfig类用于配置服务的属性,如服务名、服务接口、服务实现类和服务参数等。Provider模型则用于表示服务提供者的信息。 服务导出的流程如下: 1. 创建ServiceConfig实例,设置服务的属性。 2. 实现服务接口,并实例化服务实现类。 3. 通过ServiceConfig的export方法将服务实现类发布到注册中心(Registry)。 4. 注册中心将服务提供者的信息保存到内存中,并向服务消费者提供服务目录。 Dubbo的服务导出文件通常是XML格式,包含了服务的详细配置信息,如服务名、服务接口、服务实现类和服务参数等。这个文件通常位于类路径(Classpath)的META-INF目录下,文件名通常为dubbo-service.xml。
作者其他创作
大纲/内容
应用级注册
消费者调用某个应用的Dubbo服务及配置信息,就可以知道了
对应接口元数据信息
保存映射关系
找到应用的ip:port可以调用请求了
封装成ServiceConfig对象,并调用export()导出
Mapping
生成urltri://192.168.65.221:20880/org.apache.dubbo.springboot.demo.DemoService?application=dubbo-springboot-demo-provider&timeout=3000
如果没有使用元数据服务,那么就将MetadataInfo存入元数据中心
接口名和应用的关系,保存在dubbo/mapping目录下面
找到对应的应用名
注册中心元数据服务存储内容
实例1
dubbo.application.register-mode
从哪里获取呢?
将应用名+ip+port存入元数据中心
endPoints
1、应用的名字2、获取应用元数据方式3、当前实例ip+port4、当前协议支持的ip+port+protocol
不会暴露元数据服务
消费者如何找到应用呢?
如果有配置,那么配置中心会将yml配置文件覆盖掉
endPoint1
启动过程中暴露一个元数据服务
一个实例上可能支持多个协议以及多个端口,那如何确定实例的ip和端口呢
应用名:ip:port
内容
应用级注册原理
判断是都启用元数据服务,如果启用,那么暴露元数据服务,使用Dubbo协议
确定服务最终参数配置
消费者
注册
在暴露完服务之后,那么在注册实例中心之前会把MetadataInfo存到元数据中心
服务提供者
导出所有服务后,完成所有引入后
自启动应用元数据服务
local
导出服务URL存到MetadataInfo中
如何知道对应的协议及配置文件呢?
通过映射找到应用名
确定服务配置 yml配置
remote
扫描
元数据中心
获取MetadataInfo对象中保存的所有服务URL,优先取dubbo协议对应ip和port,没有dubbo协议则所有服务URL中的第一个URL的ip和port。
配置中心
@DubboService
元数据在哪里获取?
实例2
消费者从元数据服务中获取内容
存在Zookeeper/接口名/providers的下面
启动服务
本地和远程注册
instance:应用级interface:接口级all:应用级和接口级
存在services/应用名
收藏
0 条评论
下一页
为你推荐
查看更多