Hi!请登陆

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

2021-1-17 42 1/17

上篇文章,我们已经运行过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服务的,那么怎么理解这个泛化调用的?代码是怎么处理的呢?留着这个疑问,后面咱们继续。

相关推荐