当前位置: 首页 > 科技观察

高效开发Dubbo?用SpringBoot做大事!

时间:2023-03-19 19:47:17 科技观察

不仅简化了Dubbo基于xml的配置,还提升了日常开发效率,甚至提升了工作幸福感。为了节省各位读者的时间,请按照以下2条小贴士阅读本文,提高阅读效率。如果您只有简单的Java基础和Maven经验,对Dubbo还不熟悉,本文档将帮助您从零开始使用SpringBoot开发Dubbo服务,并使用EDAS服务注册中心实现服务注册和发现。如果熟悉Dubbo,可以选择性阅读相关章节。为什么使用SpringBoot开发Dubbo应用SpringBoot可以通过一些极简配置快速构建基于Spring的应用,提高日常开发效率。因此,如果使用SpringBoot开发基于Dubbo的应用,可以简化Bubbo基于XML的配置,提高日常开发效率,提高工作幸福感。为什么要使用EDAS服务注册中心?EDAS服务注册中心实现了Dubbo提供的SPI标准注册中心扩展,可以全面支持Dubbo服务注册、路由规则、配置规则。EDAS服务注册中心可以完全替代ZooKeeper和Redis作为你Dubbo服务的注册中心。同时,与ZooKeeper和Redis相比,它还有以下优势:EDAS服务注册中心是一个共享组件,为ZooKeeper等组件的运维和部署节省了您的机器成本。EDAS服务注册中心在通信过程中增加了鉴权和加密功能,加强了您服务注册环节的安全性。EDAS服务注册中心与EDAS的其他组件紧密集成,为您提供一整套微服务解决方案。本地开发准备下载、启动、配置轻量级配置中心。为了方便本地开发,EDAS提供了一个轻量级的配置中心,包含了EDAS服务注册中心的基本功能。基于轻量级配置中心开发的应用,无需修改任何代码和配置,即可部署到云端EDAS。请参考配置轻量级配置中心进行下载、启动和配置。推荐***版本。下载Maven并设置环境变量(本地安装可跳过)。创建服务提供者1.创建一个SpringBoot项目,名称为spring-boot-dubbo-provider这里我们以SpringBoot2.0.6.RELEASE为例,在pom.xml文件中添加如下内容。org.springframework.bootspring-boot-dependencies2.0.6.RELEASEpom导入org.springframework.bootspring-boot-starter-网络org.springframework.bootspring-boot-actuatorcom.alibaba.启动dubbo-spring-boot-starter0.2.0com.alibaba.edasedas-dubbo-extension1.0.0-SNAPSHOT如果需要选择使用SpringBoot1.x版本,请使用SpringBoot1.5.x版本,对应com.alibaba.boot:dubbo-spring-boot-starterversionis0.1.0说明:SpringBoot1.x版本生命周期将于2019年8月结束,建议使用新版本开发应用。2.Dubbo服务提供者开发2.1Dubbo中的服务以接口的形式提供。所以需要开发一个接口,比如这里的IHelloService,接口里面有几个方法可以调用,比如这里的SayHello方法。packagecom.alibaba.edas.boot;publicinterfaceIHelloService{StringsayHello(Stringstr);}2.2在服务提供者侧,需要实现所有以接口形式暴露的服务接口。比如这里实现IHelloService接口的类是HelloServiceImpl。packagecom.alibaba.edas.boot;importcom.alibaba.dubbo.config.annotation.Service;@ServicepublicclassHelloServiceImplimplementsIHelloService{publicStringsayHello(Stringname){return"Hello,"+name+"(fromDubbowithSpringBoot)";}}```*描述:**这里的Service注解是Dubbo提供的一个注解类。该类的全称是:**com.alibaba.dubbo.config.annotation.Service**。2.3配置Dubbo服务。在application.properties/application.yaml配置文件中添加如下配置:provider-demodubbo.registry.address=edas://127.0.0.1:8080```**说明:***以上三个配置没有默认值,必须给出具体配置。*dubbo.scan.basePackages的值为开发代码中包含com.alibaba.dubbo.config.annotation.Service和com.alibaba.dubbo.config.annotation.Reference注解的包。用逗号分隔多个包。*dubbo.registry.address的值前缀必须以**edas://**开头,后面的ip地址和端口指的是轻量级配置中心3.开发启动SpringBoot入口类```javapackagecom。alibaba.edas.boot;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassDubboProvider{publicstaticvoidmain(String[]args){SpringApplication.run(DubboProvider.class,args);}}4.登录轻量版配置中心控制台http://127.0.0.1:8080,点击左侧导航栏服务列表,查看提供商列表。可以看到服务提供者中已经包含了com.alibaba.edas.IHelloService,可以查询该服务的服务组和提供者IP。创建服务消费者1.创建一个名为spring-boot-dubbo-consumer的SpringBoot项目。这里我们以SpringBoot2.0.6.RELEASE为例,在pom.xml文件中添加如下内容。org.springframework.bootspring-boot-dependencies2.0.6.RELEASEpom导入org.springframework.bootspring-boot-starter-网络org.springframework.bootspring-boot-actuatorcom.alibaba.启动dubbo-spring-boot-starter0.2.0com.alibaba.edasedas-dubbo-extension1.0.0-SNAPSHOT如果需要选择使用SpringBoot1.x版本,请使用SpringBoot1.5.x版本,对应com.alibaba.boot:dubbo-spring-boot-starterversionis0.1.0说明:SpringBoot1.x版本生命周期将于2019年8月结束,建议使用新版本开发应用。2.开发Dubbo消费者2.1在服务消费者端,需要引入所有以接口形式暴露的服务接口。例如这里的IHelloService接口。packagecom.alibaba.edas.boot;publicinterfaceIHelloService{StringsayHello(Stringstr);}```2.2Dubbo服务调用。比如需要在Controller中调用远程Dubbo服务,开发代码如下:```javapackagecom.alibaba.edas.boot;importcom.alibaba.dubbo.config.annotation.Reference;importorg.springframework。web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassDemoConsumerController{@ReferenceprivateIHelloServicedemoService;@RequestMapping("/sayHello/{name}")publicStringsayHello(@PathVariableString){returndemoService.sayHello(name);}}注意:这里的Reference注解是com.alibaba.dubbo.config.annotation.Reference。2.3配置Dubbo服务。在application.properties/application.yaml配置文件中添加如下配置:dubbo.application.name=dubbo-consumer-demodubbo.registry.address=edas://127.0.0.1:8080```**说明:***以上两个配置没有默认值,必须给出具体的配置。*dubbo.registry.address的值前缀必须以**edas://**开头,后面的ip地址和端口指的是轻量级配置中心3.开发启动SpringBoot入口类```javapackagecom。alibaba.edas.boot;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassDubboConsumer{publicstaticvoidmain(String[]args){SpringApplication.run(DubboConsumer.class,args);}}登录4.轻量版配置中心控制台http://127.0.0.1:8080,点击左侧导航栏中的服务列表,然后在服务列表页面选择来电列表,可以看到包含了com.alibaba.edas.IHelloService,可以查看该服务的服务组和调用方IP。结果验证本地结果验证curlhttp://localhost:17080/sayHello/EDASHello,EDAS(fromDubbowithSpringBoot)EDAS部署结果验证curlhttp://localhost:8080/sayHello/EDASHello,EDAS(fromDubbowithSpringBoot)