vlambda博客
学习文章列表

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

dubbo能解决什么问题


1. 透明化的RPC远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。



3. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。


4. 使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。


5. 分布式架构可以承受更大规模的并发流量。


我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

dubbo原理图


dubbo架构图如下所示: 

 

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


 节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。

调用关系说明:

0 服务容器负责启动,加载,运行服务提供者。

1 服务提供者在启动时,向注册中心注册自己提供的服务。

2 服务消费者在启动时,向注册中心订阅自己所需的服务。

5 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。



我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

具体使用流程


1:安装zookeeper

在另外一个文档中有详细的说明,

注意:zookeeper服务启动之后就不能停掉了,而且要在服务的提供者和消费者之前就启动好注册中心


2:管理控制台

在另外一个文档,dubbo-admin

 

3:准备项目

新建一个简单的maven项目进行管理:

在自己的workspace中新建一个项目,当前项目就是一个总管理中心在这个项目中不会写任何的代码,所有的代码都是写在provider中和consumer中。


所以一般情况下,这个项目只需要是一个简单的maven项目即可,

我们也会将当前项目中的src目录进行删除。只会保留最基本的项目架构。

Provider是服务的提供者, 

Consumer是消息的消费者 


注意:在启动provider和consumer之前,必须要启动注册中心,这样启动的服务才会在注册中心被注册和发现。


创建公共模块

将一些提供者和消费都需要使用的内容我们可以存放在公共模块中,比如pojo相关内容和对外暴露的service接口,以及一些工具类的相关内容等。

这些信息在provider中需要,在consumer中同样是需要的,如果隐藏的话,那么在这些模块中都需要编写,比较麻烦,

所以直接将这些内容放在公共模块中,这样需要的话直接引入即可。


创建provider

Provider 是服务的提供者,可以理解为mvc开发模式中的M, 就是从service以后的所有的内容都写在这个项目下。

模块直接使用springboot的模板创建,因为是一个提供者,所以需要将mybatis相关的内容和数据库相关的内容也一起勾上。

注意:虽然是provider模块,但是web相关的内容也还是要勾上的。


创建consumer

和构建提供者provider一样的方式去构建调用者consumer,

在选择模板的时候,因为只需要和客户端的浏览器进行交互,我们只需要选择一个web即可。

因为我们的数据都是来源于provider,所以不需要连接数据库的相关内容。


最后的项目架构如图:

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


4:代码实现


编写公共模块

这里还是以我们熟悉的user为例,在公共模块下新建User类,包名为com.sky.pojo.

注意:pojo类必须要实现序列化接口

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


common工程中的java文件夹下的com.sky.service包下构建接口UserService,内容如下

 

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


 

编写配置provider

pom中我们需要引入公共模块的内容,dubbo和zookeeper相关的依赖都需要添加进来,将下面的内容添加到pom的依赖中:

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


具体代码实现:

provider下新建一个service包和mapper包,service包中的UserServiceImpl需要实现公共模块的UserService接口,在mapper包下新建UserMapper接口

并且在resources下新建mapperxml文件夹,在该文件夹下新建UserMapper.xml

内容其实和以前是一样的。

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


配置provider

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

把之前的mybatis的配置文件引入进来即可。

到这里我们的provider已经配置编写好了

此时,可以启动我们的provider,然后在dubbo-admin中进行查看该服务释放以及注册到了zookeeper中。


编写配置consumer


consumer中其实就是写之前的controller的相关内容。在编写代码之前,需要在consumer的POM中引入公共的模块,同时还要引入dubbo和zookeeper相关的依赖。

consumer项目下新建com.sky.controller.UserController, 并且在里面完成对应方法的编写和映射。

因为后面我们得服务器主要都是提供数据的,所以直接使用restController注解即可。

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧




5:测试


1:启动zookeeper服务端

注意:启动的时候是有顺序的

第一件事就是先启动我们的注册中心

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

出现下图则说明成功了,黑窗口不能关闭!!!!!切记:不能关闭

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

2:启动dubbo-admin

进入到dubbo-admin的源码目录,在target目录下有之前生成好的一个jar文件,

通过 java -jar jarName的方式可以启动dubbo-admin服务,然后访问localhost:7001即可实现登录查看我们的服务

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

3:启动服务的提供者

服务的提供者就是我们之前写的provider,启动方式就是通过主启动的方式启动

注意:必须要先启动provider

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

启动后通过dubbo-admin可以在提供者的列表中查看到当前的服务

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


4:启动消费者consumer

消费者的启动和提供者的启动方式是一样的,其实就是启动应用!注意端口号的修改,启动完成之后我们就可以看到有2个服务在启动了。

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


完成后,打开dubbo-admin

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧


5:打开浏览器获取postman进行测试

此时我们需要访问服务的消费者中提供的请求映射,有数据返回,说明我们的微服务架构搭建已经完成了。

我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧

到这里我们就实现了配置文件的dubbo微服务架构了。


下一章将会讲解注解版实现方式


感谢那些无私把文章传递出去的人,你们是最可爱的人,赠人玫瑰,手留余香

(长按二维码可自动识别哦!!)


我是老孙

About Me

本号用于美文欣赏,创业投资,技术交流,信息传递,娱乐八卦和传递正能量,欢迎大家关注