soul源码阅读(三)接入Dubbo应用示例运行

目录

架构介绍

示例代码阅读

示例运行

总结


上篇文章,我们已经运行过soul-examples-http示例,对soul的基本使用有了一个基本的了解,本次我们不妨再来熟悉下比较热门的微服务框架Dubbo如何整合使用。

架构介绍

先来看一下上面的架构图,业务端请求到soul网关,网关会获取读取到soul-admin的注册的配置信息,然后拿到配置信息去dubbo服务中心获取对应的服务,并路由转发请求服务到后台服务器。

而后台dobbo服务启动后将后写入配置和元数据到soul-admin控制台进行管理,并将服务注册到服务中心。

示例代码阅读

打开soul-examples-dubbo的模块,里边有三个子模块,咱们不妨每个子模块打开仔细来瞧瞧里面做了啥。

(1)soul-examples-dubbo-api代码阅读

里边的目录结构是比较简单的,就一个entity包和一个service包,都只做了一个最简单的事情,对象定义和接口的定义。

再来看下pom.xml文件,貌似没引入啥东西,由此可以看出该子模块是为其它两个模块服务而定义的基本对象和接口。

(2)soul-examples-apache-dubbo-service代码阅读

同样打开包看一下,里面是做了api定义的两个接口的实现,通过@SoulDubboClient注解,将会把api接口注册到soul-admin。

再来看下application.yml文件,配置了soul-admin的地址以及端口,并且配置了自己的server端口为8011。

spring-dubbo.xml配置文件里是dubbo的一些基本配置,如服务中心的配置,这里以zookeeper作为服务注册中心,dobbo协议的配置,dobbo服务的配置等。

最后再来瞧一下pom.xml文件,引入了soul-spring-boot-starter-client-apache-dubbo包,业务开发通过使用@SoulDubboClient注解可以将奖配置自动注册到soul-admin,其它相关的依赖包就是基本的一些dubbo配置了。如果对dubbo不熟,不妨可以阅读《芋道 Spring Boot Dubbo 入门》文章,笔者也未在工作中使用过dubbo,也是看了这篇文章有了一些基本了解。

(3)soul-examples-alibaba-dubbo-service代码阅读

基本与第二个模块,使用也一致,两者可以简单认为是版本的不一致,不做过多重复介绍。

示例运行

run TestApacheDubboApplication,运行报错,提示api程序包不存在,报错截图如下所示:

 

再次检查了pom.xml的文件配置,没有问题。最终网上找到处理小技巧如下:

对于 idea 下的 maven 工程,特别是从其他地方导入的新工程,右边 maven 管理工具中 dependencies 若出现红色波浪线。通常用以下方式尝试解决。

(1)检查 repository 和 settings.xml文件中配置的仓库地址,File --> settings 输入maven,检查local repository的配置和settings.xml中配置的仓库地址。

(2)打开项目 pom.xml 文件,右键 maven --> reimport ,等待maven重新加载依赖。

(3)同上面操作一样,可以同时对整个项目的所有pom.xml文件进行reimport。打开编译器右边的maven管理工具,点击reimport all maven projects。

参考链接:https://www.jianshu.com/p/45a609b2049f

解决上述问题后,再次运行,再次报错,报错截图如下:

一看zookeeper没有安装,缺啥补啥,官网下载zookeeper安装包,简单修改下配置,即可起一个单机zookeeper起来,如果是windows可以参考https://www.cnblogs.com/RainAndWind/p/4668427.html

再次run,终于run起来了。

打开soul-admin页面,默认在途中的dubbo插件是关闭状态,编辑打开它,并检查是否配置已正常注册,截图如下,查看到都已正常。

最后一步,打开postman发送请求,请求soul-bootstrap网关,访问dubbo服务成功。

总结

对dubbo服务的接入原理以及使用,我们到此大概也已经有个基本了解了,那么让我们再回到文章开头的那个架构图,soul是泛化调用dubbo服务的,那么怎么理解这个泛化调用的?代码是怎么处理的呢?留着这个疑问,后面咱们继续。

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 如果你想在微服务系统中使用 Dubbo,你需要做以下几步: 1. 将 Dubbo 的依赖添加到你的项目中。这可以通过使用 Maven 或者 Gradle 来实现,具体方法可以参考 Dubbo 的文档。 2. 在你的服务提供者中实现 Dubbo 服务接口。这一步需要你编写 Java 代码来实现 Dubbo 服务接口中定义的方法。 3. 在服务提供者的配置文件中配置 Dubbo 服务。这一步需要你编写一个 XML 文件或者使用注解的方式来配置 Dubbo 服务。 4. 在服务消费者中调用 Dubbo 服务。这一步需要你编写 Java 代码来调用 Dubbo 服务。 希望这些步骤能帮助你接入和调用 Dubbo 服务。 ### 回答2: 在微服务系统中接入Dubbo并进行调用主要分为以下几个步骤: 1. 引入Dubbo依赖:在项目的pom.xml文件中添加Dubbo的依赖,例如: ```xml <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> ``` 2. 配置Dubbo相关信息:在项目的application.properties(或application.yaml)文件中添加Dubbo的配置信息,如注册中心地址、端口号、协议等,例如: ```properties dubbo.application.name=your-application-name dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=20880 ``` 3. 编写服务接口:定义需要暴露给其他服务调用的服务接口,如: ```java public interface UserService { User getUserById(Long id); } ``` 4. 实现服务接口:编写具体的服务实现类,并在类上使用@org.apache.dubbo.config.annotation.Service注解将其暴露为Dubbo服务,例如: ```java @org.apache.dubbo.config.annotation.Service public class UserServiceImpl implements UserService { @Override public User getUserById(Long id) { // 实现具体的业务逻辑 } } ``` 5. 调用Dubbo服务:在需要调用Dubbo服务的地方注入服务接口,通过调用接口方法来实现服务调用,例如: ```java @RestController public class UserController { @Reference private UserService userService; @GetMapping("/user/{id}") public User getUser(@PathVariable Long id) { return userService.getUserById(id); } } ``` 通过以上步骤,我们就可以在微服务系统中接入Dubbo并进行服务的调用。当接入多个服务时,可以通过Dubbo的集群容错、负载均衡等特性来提高系统的稳定性和性能。 ### 回答3: 在微服务系统中接入Dubbo并调用可以按照以下步骤进行: 1. 引入Dubbo依赖:在微服务项目的pom.xml文件中添加Dubbo依赖,如: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.7.12</version> </dependency> ``` 2. 配置Dubbo服务提供者:在需要提供服务的微服务中,通过配置文件或注解配置Dubbo的服务提供者信息,包括服务接口、服务实现和暴露的端口等信息。 ```java @Service public class UserServiceImpl implements UserService { @Override public User getUserById(String userId) { // Service implementation logic here } } // 配置Dubbo服务提供者 <dubbo:service interface="com.example.UserService" ref="userServiceImpl" timeout="5000" retries="3" version="1.0.0"/> ``` 3. 配置Dubbo服务消费者:在需要调用Dubbo服务的微服务中,通过配置文件或注解配置Dubbo的服务消费者信息,包括服务接口、版本号和负载均衡策略等信息。 ```java // 配置Dubbo服务消费者 <dubbo:reference id="userService" interface="com.example.UserService" url="dubbo://localhost:12345" version="1.0.0" loadbalance="roundrobin"/> ``` 4. 调用Dubbo服务:在需要调用Dubbo服务的地方,通过Dubbo的服务引用对象进行调用,如: ```java @Autowired private UserService userService; public void doSomething() { User user = userService.getUserById("123456"); // Handle the user data returned from the Dubbo service } ``` 通过以上步骤,我们就可以在微服务系统中接入Dubbo并调用了。需要注意的是,Dubbo还支持更多的配置和扩展,可以根据具体的需求进行相应的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值