我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧
Posted 六点半编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧相关的知识,希望对你有一定的参考价值。
dubbo能解决什么问题
1. 透明化的RPC远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
3. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
4. 使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。
5. 分布式架构可以承受更大规模的并发流量。
dubbo原理图
dubbo架构图如下所示:
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
调用关系说明:
0 服务容器负责启动,加载,运行服务提供者。
1 服务提供者在启动时,向注册中心注册自己提供的服务。
2 服务消费者在启动时,向注册中心订阅自己所需的服务。
5 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
具体使用流程
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,所以不需要连接数据库的相关内容。
最后的项目架构如图:
4:代码实现
编写公共模块
这里还是以我们熟悉的user为例,在公共模块下新建User类,包名为com.sky.pojo.
注意:pojo类必须要实现序列化接口
在common工程中的java文件夹下的com.sky.service包下构建接口UserService,内容如下
编写配置provider
在pom中我们需要引入公共模块的内容,dubbo和zookeeper相关的依赖都需要添加进来,将下面的内容添加到pom的依赖中:
具体代码实现:
在provider下新建一个service包和mapper包,service包中的UserServiceImpl需要实现公共模块的UserService接口,在mapper包下新建UserMapper接口
并且在resources下新建mapperxml文件夹,在该文件夹下新建UserMapper.xml
内容其实和以前是一样的。
配置provider
把之前的mybatis的配置文件引入进来即可。
到这里我们的provider已经配置编写好了
此时,可以启动我们的provider,然后在dubbo-admin中进行查看该服务释放以及注册到了zookeeper中。
编写配置consumer
在consumer中其实就是写之前的controller的相关内容。在编写代码之前,需要在consumer的POM中引入公共的模块,同时还要引入dubbo和zookeeper相关的依赖。
在consumer项目下新建com.sky.controller.UserController, 并且在里面完成对应方法的编写和映射。
因为后面我们得服务器主要都是提供数据的,所以直接使用restController注解即可。
5:测试
1:启动zookeeper服务端
注意:启动的时候是有顺序的
第一件事就是先启动我们的注册中心
出现下图则说明成功了,黑窗口不能关闭!!!!!切记:不能关闭
2:启动dubbo-admin
进入到dubbo-admin的源码目录,在target目录下有之前生成好的一个jar文件,
通过 java -jar jarName的方式可以启动dubbo-admin服务,然后访问localhost:7001即可实现登录查看我们的服务
3:启动服务的提供者
服务的提供者就是我们之前写的provider,启动方式就是通过主启动的方式启动
注意:必须要先启动provider
启动后通过dubbo-admin可以在提供者的列表中查看到当前的服务
4:启动消费者consumer
消费者的启动和提供者的启动方式是一样的,其实就是启动应用!注意端口号的修改,启动完成之后我们就可以看到有2个服务在启动了。
完成后,打开dubbo-admin
5:打开浏览器获取postman进行测试
此时我们需要访问服务的消费者中提供的请求映射,有数据返回,说明我们的微服务架构搭建已经完成了。
到这里我们就实现了配置文件的dubbo微服务架构了。
下一章将会讲解注解版实现方式
感谢那些无私把文章传递出去的人,你们是最可爱的人,赠人玫瑰,手留余香
(长按二维码可自动识别哦!!)
我是老孙
About Me
本号用于美文欣赏,创业投资,技术交流,信息传递,娱乐八卦和传递正能量,欢迎大家关注
以上是关于我就敢说它“史上最全的dubbo微服务文档”,不信“看”着瞧的主要内容,如果未能解决你的问题,请参考以下文章