各位老铁们,大家好,今天由我来为大家分享dubbo对外提供接口,以及dubbo接口与http接口区别的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
dubbo 接口配置
一、dubbo配置之间的关系:
左边是服务提供方的相关配置,右边是服务消费方的相关配置。中间是两方的共享配置。下边是方法和方法参数的相关配置。
ReferenceConfig继承ConsumerConfig,ServiceConfig继承ProviderConfig。如果没有进行Reference和Service的配置,默认是Consumer和Provider的配置。
二、配置覆盖关系:
1、方法级优先,接口级次之,全局配置再次之。(级别小的优先)
2、如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过URL经由注册中心传递给消费方。
(配置的查找顺序,其他retries,loadbalance,actives等类似)
三、标签:
四、举例
1、项目中的配置
dubbo.xml的配置如下:
<!--应用信息,用于计算依赖关系-->
<dubbo:applicationname="basicInfoservice"/>
<!--使用zookeeper注册中心暴露服务地址-->
<dubbo:registryprotocol="zookeeper"address="${dubbo.registry.address}"register="${dubbo.registry.register}"/>
<!--使用dubbo协议,basicInfoservice应用的端口为20881-->
<dubbo:protocolname="dubbo"port="20881"/>
<!--提供方的超时时间为3s-->
<dubbo:providertimeout="3000"/>
<!--消费方的超时时间为3s-->
<dubbo:consumercheck="false"timeout="3000"/>
<!--需要引用的服务-->
<dubbo:referenceid="dictionaryFacade"interface="com.dmsdbj.itoo.singleTableMaintain.facade.DictionaryFacade"/>
<!--需要暴露的服务-->
<dubbo:serviceid="studentFacade"interface="com.dmsdbj.itoo.basicInfo.facade.StudentFacade"/>
<!--studentFacade服务的超时时间为30s,addStudent方法的超时时间为60s-->
<dubbo:serviceid="studentFacade"interface="com.dmsdbj.itoo.basicInfo.facade.StudentFacade"timeout="30000"
loadbalance="roundrobin">
<dubbo:methodname="addStudent"timeout="60000"/>
</dubbo:service>
dubbo-server.properties配置如下:
dubbo.registry.address=zookeeper://192.168.22.156:2181?backup=192.168.22.154:2181,192.168.22.156:2182
dubbo.basicInfo.group=basicInfo
dubbo.basicInfo.version=1.0.0
dubbo.registry.register=false
上述实例,我们的全局的超时时间为3s,负载均衡策略为随机,student服务的超时时间为30s,负载均衡策略为轮询。addStudent的超时时间为60s。
2、
<dubbo:annotationpackage="com.dmsdbj.itoo.basicInfo.facade"/>
这段配置的作用是开启注解扫描。
开启注解之后,就可以使用@Reference和@Service来订阅服务或者暴露服务啦。需要注意的是@Service并不是Spring的注解,而是
dubbo的注解importcom.alibaba.dubbo.config.annotation.Service;
也可以说<dubbo:reference>标签+@Autowired等价于<dubbo:annotationpackage="">+@Reference。
Dubbo框架的开发流程是怎么样的
Dubbo架构介绍
Dubbo经常会和SpringCloud微服务架构作比较,但实际上两者侧重的领域是有很大不同的。Dubbo侧重于服务治理即服务的注册更新、管理服务的生命周期、定制服务的遵从规则,确保服务一致性、服务监控等、服务的调用等。而SpringCloud则侧重于整个微服务生态,除了服务治理以外对服务网关、分布式配置、服务跟踪、消息总线、数据流、批量任务等都有很好的技术规范实现。可以看出来Dubbo可以作为SpringCloud生态的一部分和SpringCloud整合在一起提供服务治理方面的支持。虽然功能没有SpringCloud整个生态完善,但是就服务治理来讲,Dubbo有着诸多优势:
1.支持更多协议,如:rmi、hessian、http、webservice等。
2.效率更高,因为访问方式的不同Dubbo能有更好的表现。
3.服务治理提供粒度更小的管理。
Dubbo核心功能:
1.远程通讯,提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2.集群容错,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3.自动发现,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
Dubbo架构如下图所示:
由上图可知Dubbo的服务调用流程如下:
1.服务提供者将自己发布注册到服务注册中心暴露服务
2.服务消费者从服务注册中心订阅服务
3.服务消费者根据注册中心获取的服务进行进行远程调用
Dubbo本地开发环境搭建
Duoobo服务注册注册中心的搭建,我们将使用Zookeeper作为实际注册中心进行操作演练。
Dubbo项目的搭建
使用eclipse新建一个服务提供者的maven项目。这里新建一个项目名为:dubbo-provider用来提供根据用户名来返回用户信息的简单实例:
1.首先将Dubbo和Zookeeper的依赖架包进行引入。
新建服务提供接口和具体实现类,在eclipse下创建名为:dubbo-provider的maven项目。
1.创建用户信息查询服务接口QueryUserInfoService提供一个根据用户名返回用户信息的接口getUserInfo(Stringname)。
2.创建具体的实现类QueryUserInfoServiceImpl,实现根据用户名返回一个用户信息的字符串。
3.在resources文件夹下创建applicationProvider.xml配置服务类的相关信息,用来注册和暴露服务。
4.创建服务注册类:ServerMain读取配置文件,注册配置文件中的服务,配置完成后启动该类即可完成服务的注册。
配置监控中心。如果我们需要对自己的服务进行监控和查看需要安装Monitor服务。1.在Github上下载dubbo-admin项目后修改目录下的dubbo.properties文件:
1)配置zk地址:
dubbo.registry.address=zookeeper://127.0.0.1:2181
2)配置登录用户root密码:
dubbo.admin.root.password=roo
2.构建项目,在dubbo-admin目录下
使用maven命令打包:mvncleanpackage
3.运行dubbo-admin项目可以用以下两种方式:
1)mvn--projectsdubbo-admin-serverspring-boot:run
2)cddubbo-admin-distribution/targe;java-jardubbo-admin-0.1.jar
4.运行成功后即可通过默认的127.0.0.1:8080访问监控后台页面
新建服务消费者项目实现对服务提供者进行服务消费,在eclipse下创建名为:dubbo-customer的maven项目。
1.引入或创建服务接口QueryUserInfoService类
2.在resources文件夹下创建applicationContext.xml配置注册中心信息,用来获取服务信息。
3.创建一个消费测试类QueryUserInfoService调用服务。
dubbo泛化调用细节是如何实现的
dubbo泛化调用的实现细节是通过反射机制来实现的。1.dubbo泛化调用的实现细节是通过反射机制来实现的。2.泛化调用是dubbo提供的一种动态调用方式,它可以通过任意参数和任意类的接口来调用服务,不需要通过API接口来调用。而反射机制可以动态获取类的信息以及调用类中的方法和属性,可以实现灵活的动态调用,因此dubbo选择使用反射机制来实现泛化调用。3.除了反射机制外,dubbo还提供了其他动态调用方式,例如:URL服务自适应、泛化引用调用等。这些不同的动态调用方式可以根据不同的场景选择使用,从而提供更为灵活和高效的服务调用方式。
dubbo接口如何让消费者依赖
要让消费者依赖Dubbo接口,需要进行以下步骤:
定义接口:首先,在提供者端和消费者端共享的代码库中,定义Dubbo接口。这个接口定义了提供者提供的服务方法。
引入依赖:在消费者端的项目中,需要引入Dubbo的相关依赖。可以通过Maven或Gradle等构建工具,在项目的配置文件中添加Dubbo的依赖项。
配置消费者:在消费者端的配置文件中,需要配置Dubbo的相关信息,包括提供者的地址、端口等。可以使用XML配置文件或注解方式进行配置。
注入依赖:在消费者端的代码中,通过依赖注入的方式,将Dubbo接口注入到需要使用的类中。可以使用Spring的@Autowired注解或Dubbo提供的@Reference注解进行注入。
调用服务:在消费者端的代码中,通过调用Dubbo接口的方法,实现对提供者提供的服务的调用。可以直接调用接口方法,Dubbo会自动进行远程调用。
通过以上步骤,消费者就可以依赖Dubbo接口,并通过Dubbo框架实现与提供者之间的远程通信和服务调用。希望这个回答对你有所帮助!如果还有其他问题,请随时提问。
dubbo暴露接口用到的端口
dubbo暴露接口可以用到ups端口
外部接口如何统一api地址
一个非常好的问题。可以试试如下方法:
1,第三方api,使用nginx代理转发Nginx配置路由转发时,重新拼接路径和参数。
2,自己开发的api,使用url变量,或者在请求参数中增加路由信息1)路径中包含参数,比如url/{name},Java开发时可以使用@PathVariable读取
2)请求体参数中包含路由信息,解析得到后,实现判断逻辑
好了,文章到此结束,希望可以帮助到大家。