配色: 字号:
Dubbo+Zookeeper
2020-12-26 | 阅:  转:  |  分享 
  
Dubbo+Zookeeper2020-12-25演讲人01分布式系统分布式系统由一组通过网络通信,为了完成共同的任务而协调工作的计算机节点
组成的系统021、什么是Dubbo1、什么是DubboApacheDubbo是一款高性能、轻量级的开源javaRPC网络通
信框架(就是一个jar包),帮助java程序连接到zookeeper提供了三大核心能力1、什么是DubboApacheDub
bo是一款高性能、轻量级的开源javaRPC网络通信框架(就是一个jar包),帮助java程序连接到zookeeperhttp
://dubbo.apache.org/img/architecture.pngApacheDubbo是一款高性能、轻量级的开源
javaRPC网络通信框架(就是一个jar包),帮助java程序连接到zookeeperhttp://dubbo.apache
.org/img/architecture.png1、什么是Dubbo提供了三大核心能力面向接口的远程方法调用智能容错和负载均衡
服务自动注册和发现提供了三大核心能力面向接口的远程方法调用提供了三大核心能力智能容错和负载均衡服务自动注册和发现由Zookeepe
r实现默认端口号:2181032、Dubbo-admin安装2、Dubbo-admin安装Dubbo-admin可视化监控管理程序
Dubbo-admin是一个SpringBoot项目,下载下来后直接打成jar,启动运行即可提供服务localhost:7001
默认用户名密码都为root04Zookeeper安装与启动Zookeeper安装与启动直接解压安装包bin目录下启动zkSer
ver.cmd启动出现出现闪退,打开zkServer.cmd文件,在endlocal前添加pause语句,便可查看报错情况err
or提示找不到conf下的zoo.cfg文件,此时将zoo_sample.cfg文件复制一份,改名为zoo.cfg即可05实战实战
新建提供者服务01启动Zookeeper注册中心02cmd页面启动dubbo-admin.jar03启动卖票服务04Zookeep
er和dubbo-admin的启动doc窗口多点点回车键05Zookeeper和dubbo-admin的启动doc窗口多点点回车键
06实战启动消费者服务新建消费者服务12实战新建提供者服务卖票服务提供者添加依赖Dubbo依赖<!--dubbo-spr
ing-boot-starter--><dependency><groupId>org.apach
e.dubbo</groupId><artifactId>dubbo-spring-boot-starte
r</artifactId><version>2.7.5</version></depe
ndency>添加依赖Zookeeper客户端<!--zkclient客户端--><dependen
cy><groupId>com.github.sgroschupf</groupId><art
ifactId>zkclient</artifactId><version>0.1</vers
ion></dependency>添加依赖zookeeper服务端添加配置application.propert
ites#服务端口server.port=8001#注册应用名字dubbo.application.name=provi
der-server#注册中心地址dubbo.registry.address=zookeeper://127.0.0.1:
2181#哪个包内的服务要被注册dubbo.scan.base-packages=com.kk.service卖票服务提
供者在服务的类上加上org.springframework.stereotype.Service包下的@Service注解卖票服
务提供者在主启动类上加上@EnableDubbo注解实战启动Zookeeper注册中心管理员身份启动zkServer.cmd实战如
出现端口被占用的情况cmd页面启动dubbo-admin.jar访问localhost:7001BA如出现端口被占用的情况A终止该
进程,重启netstat-ano|findstr\"7001\",查看到pidB实战启动卖票服务dubbo-admin页面查
看服务(一启动就自动将服务注册进Zookeeper中)实战新建消费者服务买票服务消费者买票服务消费者12买票服务消费者添加依赖Du
bbo依赖Zookeeper客户端zookeeper服务端添加配置application.propertitesserver.po
rt=8002#消费者去哪里拿服务,需要暴露自己的名字dubbo.application.name=consumer-serv
er#注册中心地址,可以在任何一台电脑上dubbo.registry.address=zookeeper://127.0.0.
1:2181远程引用(指定哪一个服务)利用pom坐标定义路径相同的接口名@ReferenceTicketServic
eticketService;买票服务消费者添加依赖Dubbo依赖Zookeeper客户端zookeeper服务端添加配置app
lication.propertitesserver.port=8002#消费者去哪里拿服务,需要暴露自己的名字dubbo.a
pplication.name=consumer-server#注册中心地址,可以在任何一台电脑上dubbo.registry
.address=zookeeper://127.0.0.1:2181远程引用(指定哪一个服务)利用pom坐标直接在consu
mer中引入provider的依赖定义路径相同的接口名利用@Reference注解,远程引入提供者接口对象,调用提供者的接口方法
在主启动类上加上@EnableDubbo注解买票服务消费者买票服务消费者测试买票服务消费者添加依赖0102Dubbo依赖Zooke
eper客户端0304zookeeper服务端提供者的依赖(pom坐标)添加配置application.propertitesse
rver.port=8002#消费者去哪里拿服务,需要暴露自己的名字dubbo.application.name=consum
er-server#注册中心地址,可以在任何一台电脑上dubbo.registry.address=zookeeper://1
27.0.0.1:2181远程引用(指定哪一个服务)利用pom坐标直接在consumer中引入provider的依赖定义路径相
同的接口名利用@Reference注解,远程引入提供者接口对象,调用提供者的接口方法06Dubbo提供的特性Dubbo提供的特性
启动检查(check)http://dubbo.apache.org/zh-cn/docs/user/demos/prefligh
t-check.html超时(timeout)配置的覆盖关系JVM的启动参数>application.properti
tes(同xml文件)>dubbo.propertites(优先级:方法级优先,接口级次之,全局配置再次之)http:/
/dubbo.apache.org/zh-cn/docs/user/configuration/xml.htmlhttp://du
bbo.apache.org/zh-cn/docs/user/references/xml/dubbo-consumer.html
Dubbo提供的特性重试次数(retries)Dubbo提供的特性多版本(version)http://dubbo.apache.
org/zh-cn/docs/user/demos/multi-versions.htmlDubbo提供的特性本地存根http:/
/dubbo.apache.org/zh-cn/docs/user/demos/local-stub.html07SpringBo
ot整合Dubbo的三种方式SpringBoot整合Dubbo的三种方式P3P2配置类P1配置文件注解SpringBoot整合Du
bbo的三种方式注解导入Dubbo-starter,在application.propertites中配置属性,使用@Servic
e暴露服务,使用@Reference远程调用服务记得开启@EnableDubbo(或者配置Dubbo.scan.base.pac
kages)注解导入Dubbo-starter,在application.propertites中配置属性,使用@Service暴
露服务,使用@Reference远程调用服务记得开启@EnableDubbo(或者配置Dubbo.scan.base.packa
ges)SpringBoot整合Dubbo的三种方式配置文件保留dubbo.xml配置文件,在主启动类上利用@ImportReso
urce(Locations=XXX)注解引入该配置文件配置文件保留dubbo.xml配置文件,在主启动类上利用@ImportRe
source(Locations=XXX)注解引入该配置文件SpringBoot整合Dubbo的三种方式配置类写配置类@Confi
guration写配置类@Configuration手动创建组件,@Bean放到容器中主启动类@EnableDubbo(ScanB
asePackage=XXX)08dubbo直连dubbo直连没有注册中心也可调用服务在@Reference注解里添加url属性,
指定所调服务的ip和端口,例如:@Reference(url=\"127.0.0.1:20880\")09高可用高可用Zookee
per的健壮性负载均衡服务降级集群容错1234高可用Zookeeper的健壮性现象原因现象zookeeper注册中心宕机,还可以
消费dubbo暴露服务原因231数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务注册中心对等集群,任意一台宕掉
后,将自动切换到另一台监控中心宕掉不影响使用,只是丢失部分采样设计564服务提供者无状态,任意一台宕掉后,不影响使用服务提供者全部
宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯高可
用负载均衡http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions
.htmlhttp://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions
.html随机:RandomLoadBalance可在可视化管理界面调整权重轮询:RoundRobinLoadBalan
ce最少活跃调用数:LeastActiveLoadBalance一致性Hash:ConsistentHashLoad
Balance高可用服务降级12当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理,或换种简单的
方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作两种屏蔽方式强制返回nullmoke=force:return+nu
ll在dubbo-header可视化界面,直接点击屏蔽掉消费者的服务调用请求调用失败后返回nullmoke=fail:return
+null点击可视化界面中消费者列表的容错,进行服务屏蔽,它会调用,失败便返回null0102提供者和消费者都导入Hystrix框
架支持主启动类上添加@EnableHystrix高可用集群容错0304提供方的方法上加上@HystrixCommand注解,声明
该方法被Hystrix代理,Hystrix可对该方法进行容错处理在消费者对提供者方法进行调用的方法上,也添加@HystrixCom
mand注解(添加fallbackMethod属性,可定义调用失败后的回调函数)提供者和消费者都导入Hystrix框架支持<
dependency><groupId>org.springframework.cloud</groupI
d><artifactId>spring-cloud-starter-netflix-hystrix</a
rtifactId></dependency>10Dubbo原理相关Dubbo原理dubbo原理Dubbo原理相
关0102RPC原理netty通信原理相关RPC原理一次完整的RPC调用(U型环):RPC就是将2-8步进行封装1、服务消费方(
client)以本地方式调用服务(即接口)2、clientstub(服务代理)接收到调用后将方法,参数等组装成能够进行网络传输
的消息体(如序列化)3、clientstub找到服务地址,并将消息发送到服务端4、serverstub接收到消息体后进行解
码5、serverstub根据解码结果调用本地的服务6、本地服务执行并将结果返回给serverstub7、servers
tub将返回结果打包成消息并发送至消费方8、clientstub接收到消息,并进行解码9、服务消费方得到最终结果netty通信原理Netty是一个基于NIO(Non-BlockingIO)的客户、服务器端编程框架,使用Netty可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程BIO和NIO的区别https://mp.weixin.qq.com/s/EVequWGVMWV5Ki2llFzdHgDubbo原理dubbo原理0102框架设计启动解析,加载配置信息050304服务暴露服务引用服务调用框架设计dubbo原理http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions.html启动解析,加载配置信息服务暴露服务引用服务调用感谢聆听
献花(0)
+1
(本文系职场细细品原创)