1.dubbo是什么?
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
主要核心部件
1) Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
2) RPC: 远程过程调用,支持负载均衡、容灾和集群功能
3) Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
2.dubbo工作原理(服务治理)
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
调用关系说明:
1)服务容器负责启动,加载,运行服务提供者。
2)服务提供者在启动时,向注册中心注册自己提供的服务。
3)服务消费者在启动时,向注册中心订阅自己所需的服务。
4)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
SpringCloud 与 Dubbo区别?
1.Spring 、 阿里巴巴
2.品牌机、 组装机
3.基于Http的REST方式、 RPC
4.持续更新、 停更5年,2017恢复
5.涵盖服务治理的方方面面、服务治理
3.安装配置dubbo监控中心和注册中心
注意安装顺序,先注册中心,再监控中心!!!
注意安装顺序,先注册中心,再监控中心!!!
注意安装顺序,先注册中心,再监控中心!!!
3.1 注册中心Zookeeper(Linux安装)
3.1.1 下载zookeeper(https://apache.org)
zookeeper-3.4.12.tar.gz
3.1.2 上传zookeeper-3.4.12.tar.ga到Linux服务器
3.1.3 解压zookeeper-3.4.12.tar.gz
tar -zxf zookeeper-3.4.12.tar.gz
3.1.4 创建目录
cd /zking/zookeeper-3.4.12/ #进入目录
mkdir log #日志文件存放路径
mkdir data #数据文件存放路径
3.1.5 配置zookeeper的zoo.cfg文件
cp /目录/conf/zoo_sample.cfg /目录/conf/zoo.cfg
3.1.6 修改zoo.cfg配置
vim /lky/zookeeper-3.4.12/conf/zoo.cfg
添加以下内容:
#数据文件存放路径
dataDir=/lky/zookeeper-3.4.12/data
#日志文件存放路径
dataLogDir=/lky/zookeeper-3.4.12/log
3.1.7 将2181端口加入到防火墙中
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload
3.1.8 zookeeper配置成系统服务
cd /usr/lib/systemd/system(zookeeper.service上传路径地址)
vi zookeeper.service
systemctl enable zookeeper
systemctl daemon-reload
systemctl start zookeeper
systemctl stop zookeeper
systemctl status zookeeper
3.2 监控中心(windows安装)
3.2.1 下载Dubbo Admin监控中心
https://github.com/apache/incubator-dubbo-ops/tree/master
3.2.2 解压并打开执行命令窗口
1)进入incubator-dubbo-ops-master\dubbo-admin目录执行:
按住shift键+右键,选择“在此处打开Powershell窗口”
2)执行命令:mvn clean package(编译打包,注:必须先安装Maven)
注:执行完成后在dubbo-admin目录下会多出target目录,进入目录后发现编译生成了dubbo-admin-0.0.1-SNAPSHOT.jar。
3.2.3 修改zookeeper注册中心IP地址
使用压缩包方式打开dubbo-admin-0.0.1-SNAPSHOT.jar,进入\BOOT-INF\classes中找到application.porperties文件即可修改相关配置信息。如下:
server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest
dubbo.registry.address=zookeeper://注册中心IP地址:2181
3.2.4 启动并访问Dubbo监控中心
1)java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
2)打开浏览器输入:http://localhost:7001/,输入账号密码:
4.springboot+dubbo整合
4.1 服务提供方
4.1.1 创建SpringBoot项目
File-->New-->Project...
Spring Initializr
Maven Project
Web
Web
Core
Lombok
Aspects
DevTools
SQL
mybatis+jdbc+mysql
4.1.2 引入依赖
druid-spring-boot-starter(1.1.10)
dubbo-spring-boot-starter(0.2.0)
org.apache.zookeeper(3.4.12)
pagehelper-spring-boot-starter(1.2.3)
4.1.3 创建util/model/mapper/service
1)导入PageBean.java、PageAspect.java到util目录;
2)使用Mybatis-generator生成model/mapper层代码;
3)配置service层的实现类,并定义dubbo暴露服务;
关键代码:
//Spring的Service层注解标识
@Service
//通过dubbo的注解暴露该类提供服务
@com.alibaba.dubbo.config.annotation.Service
public class BookServiceImpl implements IBookService{
...
}
4.1.4 配置applicaiton.yml
#dubbo 服务提供方配置
dubbo:
#dubbo服务端口,我们无需知道dubbo服务运行在哪个端口,故也将其设为随机端口
protocol:
port: -1
#dubbo服务名称 Provider[服务提供方] Consumer[服务消费方]
application:
name: dubbo-provider
#dubbo服务所在包路径
scan:
basePackages: 暴露服务全路径名
#注册中心地址
registry:
address: zookeeper://Zookeeper注册中心IP:2181
4.1.5 配置启动类
@MapperScan("com.sixstar.dubbo.mapper")
@EnableAspectJAutoProxy
@EnableTransactionManagement
4.1.6 选中pom.xml,编译打包(jar)
右键 -> Run Maven -> New Goal... 最后输入命令:clean package
4.1.7 执行jar包
执行命令:java -jar jar包包名
4.2 服务消费方
4.2.1 创建SpringBoot项目
File-->New-->Project...
Spring Initializr
Maven Project
Web
Web
Core
Lombok
4.2.2 引入依赖
dubbo-spring-boot-starter(0.2.0)
org.apache.zookeeper(3.4.12)
4.2.3 创建util/model/service/controller
1)导入PageBean.java到util目录;
2)导入Book.java实体类到model,用于接收dubbo服务方返回的数据类型;
3)导入IBookService.java接口类,实际上就是服务提供方的暴露服务接口;
4)新建Controller,访问dubbo服务提供方的暴露服务接口;
关键代码:
@Controller
public class BookController{
//通过dubbo的Reference注解调用服务提供方的暴露接口服务
@com.alibaba.dubbo.config.annotation.Reference
private IBookService bookService;
@RequestMapping("/bookLst")
@ResponseBody
public List
Book book=new Book();
PageBean pageBean=new PageBean();
List
return lst;
}
}
4.2.4 配置application.yml
#dubbo 服务消费方配置
dubbo:
#消费者名称
application:
name: dubbo-consumer
#注册中心地址
registry:
address: zookeeper://Zookeeper注册中心IP:2181
#需要使用到提供者服务的包路径
scan:
base-packages: com.zking.spbootdubbo.controller.XxxxController
4.2.5 直接启动SpringBoot项目
启动服务消费方的SpringBoot项目,通过浏览器访问具体的服务接口。
注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!
注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!
注:服务启动顺序分别是zookeeper注册中心、dubbo-admin、dubbo-provider、dubbo-consumer!重要!重要!!重要!!