dubbo
Dubbo
架构图
Dubbo能解决什么样的问题?
Dubbo有什么特点?
说明:
- Provider: 提供者;编写持久层,业务层和事务代码
- Container 容器(spring容器),dubbo完全基于spring实现的
- Registty 注册中心。放置所有Provider对外提供的信息,包括Provider的IP,访问端口,访问遵守的协议,对外提供的接口,借口中有哪些方法等信息。
- Consumer 消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,可以编写service和controller(还可以包括页面),调用XXXXXserviceImpl中的方法
- Monitor 监控中心,监控Provider的压力情况等,每隔两分钟Consumer和Provider会把调用次数发送给Monitor,由Monitor进行统计
@EnableDubbo注解:
可在启动测试类中使用,开启dubbo,会自动访问zk,查询可用的服务信息(providers),通过查询到的providers可用服务信息,创建接口的代理对象。
@DubboReference注解:
在consumer中的service中使用。说明当前的属性需要dubbo来初始化,代表需要根据当前类型访问zk,查询可使用的服务信息,并创建代理对象,注入。
集群
一个内容,部署多次,形成的整体称为集群,集群中每个个体应该部署到不同的服务器上。
dubbo的application.name 和接口相同,便会自动搭建集群,但不能同ip和端口。
伪集群:集群中内容部署到同一台服务器上,通过不同端口区分不同个体
负载均衡
负载均衡是在集群前提下,当访问整个集群时,集群中每个节点被访问次数或频率的规则。
Dubbo内置了四种负载均衡策略,默认为Random。
Random
随机访问集群中节点。访问概率和权重有关。
RoundRobin
访问频率和权重有关。
权重(weight):占有比例,集群中每个项目部署的服务器的性能可能是不同的,性能好的服务器权重应该高一些
LeastActive
活跃数相同的随机,不同的活跃数高的放前面
ConsisitentHash
一致性Hash。相同参数请求总是发到一个提供者。
共三种配置方法:1:provider中注解Service(loadbalance=“策略”)中配置
2:consumer中注解Reference(loadbalance=”策略“)中配置
3:yml配置文件中配置consumer/provider:loadbalance:策略
resources目录必须一级一级创建
常见异常处理
异常信息: zookeeper not connected
异常场景: spring boot + dubbo 启动时,连接zk出现问题
解决方案:
1、 检查zk所在机的防火墙。 systemctl stop firewalld | service firewalld stop
2、 检查zk所在机的ip和yml配置中的ip是否对应
3、 检查zk是否成功启动。 $zk_home/bin/zkServer.sh status -> standalone
4、 在yml配置文件中增加新的配置,提高连接zk的访问超时时间。(有可能是虚拟机网络不稳定造成连接zk的时候,出现超时)。dubbo中的默认超时配置是3秒。
dubbo:
config-center:
timeout: 10000 # 单位是毫秒。
5、 在启动类型上增加新的注解, @EnableDubboConfig。 人为强制要求dubbo-spring-boot-starter扫描配置并加载。 dubbo是自动扫描配置并加载的。
6、 修改版本。降低spring-boot和dubbo-spring-boot-starter版本。(版本问题是win10操作系统对权限管理加强后,导致的结果。)
6.1、 先降低dubbo-spring-boot-starter 到 2.7.3 -> 2.7.0
6.2、 再考虑降低spring-boot版本 到 2.2.0 -> 2.1.10 -> 2.0.2
虚拟机网络稳定性:
1、 关闭不必要的网卡
2、 关闭所有的热点软件
3、 关闭windows防火墙
- 本文标题:dubbo
- 本文作者:Ptmapo
- 本文链接:https://1997888.xyz
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!