dubbo
Apache Dubbo™ 是一款高性能Java RPC框架, 官网的说明。
dubbo是什么
随着互联网的发展,单一应用无法满足企业的要求,因而出现了系统的垂直拆分,用以保证系统的扩展性,这种依据模块进行拆分的方式,会导致一些多处使用的部分重复部署,因而将前端模块拆出,将服务模块共享的分布式服务架构出现了,方便了不同模块之间的互调,但随着服务越来越多,服务之间的关系越来越乱,就急需一种服务的治理框架,这个框架就是dubbo。
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。
RPC
RPC【Remote ProcedureCall】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
dubbo就是基于RPC的,而另一个微服务架构springcloud 是基于http协议的 restful api
RPC两个核心模块:通讯,序列化。 所以一个RPC框架好不好主要看他的通讯协议快不快,还有序列化效率高不高。
dubbo核心概念
Apache Dubbo (incubating) ˈdʌbəʊ 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
Ø 调用关系说明
l 服务容器负责启动,加载,运行服务提供者。
l 服务提供者在启动时,向注册中心注册自己提供的服务。
l 服务消费者在启动时,向注册中心订阅自己所需的服务。
l 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
l 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
l 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
dubbo环境搭建
服务提供方将服务注册到注册中心,然后被服务调用方发现并进行消费,因而首先你得有个注册中心。
dubbo的注册中心,官方推荐zookeeper, so 使用zookeeper。
zookeeper官网:https://zookeeper.apache.org/
安装zookeeper
下载zookeeper
自己选择版本进行下载,这里我们下载3.4.11.
并上传到服务器进行解压。上传目录为 /opt/
解压命令没忘吧 tar -zxvf zookeeper-3.4.11.tar.gz
得到加压后的文件夹,OK。 移动到 /usr/local/
mv /opt/zookeeper-3.4.11 /usr/local/zookeeper-3.4.11
进入文件夹目录中的conf文件夹,修改配置文件,zoo_sample.cfg复制一份命名问zoo.cfg
打开zoo.cfg,并修改数据保存位置,记住端口号为2181
进入bin目录
执行启动命令,启动成功。再查看一下启动状态,没毛病。
OK,zookeeper安装并启动成功了。
安装dubbo-admin管理控制台
这个是一个通过图形化页面的形式来让我们直观的监控服务的项目。dubbo已经写好了,我们只需要拿过来跑起来就能对服务进行监控了。
github上搜 dubbo-admin,下载。
看了一下,最新的admin,是前后端分离的项目,从最早的war,到jar包,再到现在的前后端分离boot+vue。
技术飞速发展啊,不学就要挨打。
下载好后解压,红框的分别是后台和前端
启动dubbo-admin前端
进入dubbo-admin-ui目录,在目录上输入cmd进入命令行
前端加载依赖 npm install。需要安装node.js。不懂得自己去看vue
引入完后 执行 npm run dev
看到这个表示页面启动成功,浏览器输入地址,可以看到dubbo-admin的管理页面了。当然是没有数据的,因为后台根本就没有启动。感觉还是喜欢老版的啊。
启动dubbo-admin后台
进入dubbo-admin-server,修改配置文件,填写你的zookeeper地址
然后进入命令行
输入 mvn clean package 使用maven进行打包。没有安装maven自己去安装。
这里需要注意一下,新版的dubbo需要java1.8
打包完成后进入target目录,启动jar包
好了,现在后台已经与zookeeper连接上了,然后前端通过异步请求从后台获取数据。
现在前端没什么反应是因为并没有服务被发布。
springboot+dubbo服务端
开始提供服务。因为dubbo的服务提供方和消费方都会用到服务接口和实体类,我们将都会用到的提取到一个模块中,以便于重用。
创建maven项目,写个服务接口,写个实体类。OK。
在创建服务提供方,依赖interface模块,和dubbo所需依赖。
<dependency> <groupId>com.pansky</groupId> <artifactId>dubbo-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.3</version> <type>pom</type> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
2、配置application.properties
提供者配置:
dubbo.application.name=gmall-user dubbo.registry.protocol=zookeeper dubbo.registry.address=192.168.67.159:2181 dubbo.scan.base-package=com.atguigu.gmall dubbo.protocol.name=dubbo
application.name就是服务名,不能跟别的dubbo提供端重复
registry.protocol 是指定注册中心协议
registry.address 是注册中心的地址加端口号
protocol.name 是分布式固定是dubbo,不要改。
base-package 注解方式要扫描的包
消费者配置:
dubbo.application.name=gmall-order-web dubbo.registry.protocol=zookeeper dubbo.registry.address=192.168.67.159:2181 dubbo.scan.base-package=com.atguigu.gmall dubbo.protocol.name=dubbo
springboot+dubbo消费方
…
dubbo配置说明
###
文档信息
- 本文作者:chayedankase
- 本文链接:https://chayedankase.github.io/2019/09/17/Dubbo/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)