1.dubbo-admin管理平台
- dubbo-admin管理平台,是图形化的服务管理界面
- 从注册中心获取到所有的提供者/消费者进行配置管理
- 路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等管理功能
- dubbo-admin是一个前后端分离的项目。前端使用vue,后端使用springboot
- 安装dubbo-admin其实就是部署该项目
下载链接
安装:
- 进入dubbo-admin-server中的application.properties中修改zookeeper地址
- 进入项目根目录打开cmd运行指令mvn clean package
(容易踩得坑:安装一半ctrl+c退出后,再次执行mvn clean package命令时如果遇到哪个压缩包报错毫不犹豫删除。) - 打包成功后进入distribution的target文件夹下找到打包好的jar包执行。(java -jar)
- 进入ui使用npm run dev执行
- 访问
2.常用高级配置
2.1序列化
两个机器传输数据,传输java对象时必须对该类实现Serializable,从而使对象通过管道进行流传输。
2.2地址缓存
dubbo服务消费者在第一次调用时,会将服务提供方地址缓存到本地,以后再调用不会访问注册中心。
2.3超时与重试
- 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
- 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
- dubbo利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
timeout:超时时间单位毫秒
retries:重启次数


如果Reference和Service都配置都生效。
建议配置在Service上面
- 如果仅仅有超时还不行,如果出现网络抖动这一次请求就会失败。所以需要通过retries属性来设置重发次数(默认两次)
2.4 多版本
利用version属性
reference(version=”1.0”)
Service(version=”1.0”)
从而调用同一个服务的不同版本。
2.5负载均衡
2.5.1负载均衡的策略:(4种)

- Random: 按权重随机,默认值。按权重设置随机概率。
通过给同一个服务的权重设置不同的值:
Service(weight=100)
控制器当中注入服务的注解Reference中添加属性loadbalance,属性值有:
- ConsistentHashLoadBalance:consistentcash:一致性的Hash,相同参数值的请求总是发给统一提供者
- LeastActiveLoadBalance:leastactive:按最少活跃调用数,相同活跃数的随机。
- RandomLoadBalance:random:按权重随机
- RoundRobinLoadBalance:roundrobin:按权重轮询
2.6集群容错
防止某个服务宕机会按照策略方式访问别的方式访问别的服务
控制器当中注入服务的注解Reference中添加属性cluster
Failover Cluster(默认):
失败自动切换,当出现失败,重试其它服务器 [1]。通常用于读操作,但重试会带来更长延迟。可通过 retries=”2” 来设置重试次数(不含第一次)。Failfast Cluster:
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。哪一条失败,立刻停。Failsafe Cluster:
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。(不重要的操作)Failback Cluster:
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。(强制调用关系)Forking Cluster:
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks=”2” 来设置最大并行数。(广撒网)Broadcast Cluster:
广播调用所有提供者,逐个调用,任意一台报错则报错 [2]。通常用于通知所有提供者更新缓存或日志等本地资源信息。(逐个调用)
注:我理解的集群容错应当是在负载均衡基础上的,负载均衡首先选择了某个服务不得行,之后集群容错发挥作用。
2.7服务降级
服务降级方式:
在资源紧缺的场景中,如果某些服务不常用,我们可以对其降级。
在Reference注解中添加mock属性,其值可选:
- force:return null 不再远程调用该服务直接返回null值。用来屏蔽不重要服务不可用时对调用方的影响。
- fail:return null 失败后返回null不会报错。用来容忍不重要服务不稳定时对调用方的影响。