基于 Zookeeper、Dubbo 构建互联网分布式基础架构(4)|学习笔记

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习基于 Zookeeper、Dubbo 构建互联网分布式基础架构(4)


开发者学堂课程【基于 Zookeeper、Dubbo 构建互联网分布式基础架构基于 Zookeeper、Dubbo 构建互联网分布式基础架构(4) 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/635/detail/10165


基于 Zookeeper、Dubbo 构建互联网分布式基础架构(4)

 

目录:

一.XML 配置

二.启动时检查

三.集群容错

四.集群容错模式

五.负载均衡策略

六.配置

七.zookeeper 注册中心

八.解决问题

一. XML 配置

<?xml version-"1.0"encoding-"UTF-8"?>

<beans xmIns-"http://www.springframework.org/schema/beans"

xmlns:xsi-"http://www.org/2001/XMLSchema instance"

xmlns:dubbo-"http://code.alibabatech.com/schema/dubbo"

xsl:schemaLocation-"http://www.springfranework.org/schema/beans http://www.springfranework.org/<dubbo:application name-"hello-world-app"

<dubbo:registry address-"nulticast://224.5.6.7:1234":
<dubbo:protocol name-"dubbo"port-"20880>
<dubbo:service interface-"com.alibaba,dubbo,demo.DemoService"ref- "demo Service Local">
<dubbo:reference id-"demoServiceRemote"interface-"com.alibaba.dubbo.demo.Demo Service"
</beans>

2.启动时检查(默认值是 check)
通过spring配置文件
关闭某个服务的启动时检查(没有提供者时报错):
dubbo:reference interfacew"com.foo.Barservice"eck-Ifalse"/)
关闭所有服务的启动时检查(没有提供者时报错):
dubbo:consumer check-"false"/
关闭注册中心启动时检查(注册订阅失败时报错):
dubbo:registry check-"false"/)

3.集群容错

Failfast Cluster
快速失败,只发起-次调用,失败立即报错。通常用于非幕等性的写操作,比如新增记录。

Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks=*2来设置最大并行数。

Broadcast Cluster
广播调用所有提供者,逐个调用,任意-台报错则报错,通常用于通知所有提供者更新缓存或日声等本地资源信息。

4.集群容错模式
可以自行扩展集群容错策略,参见:集群扩展
Failover Cluster
失败自动切换,当出现失败,重试其它服务器.通常用于读操作,但重试会带来更长延迟。可通过retriese"2"来设置重试次数(不含第一次)。

重试次数配置如下:
<dubbo:service retriese"2"/>

<dubbo:reference retries-"2">

5.负载均衡策略
Random LoadBalance
●随机,按权重设置随机概率。
●在一个截面上碰撞的概丰高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

RoundRobin LoadBalance
●轮循,按公约后的权重设置轮循比率。
●存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
LeastActive LoadBalance
●最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
●使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

6.配置
服务端服务级别
<dubbo:service interface="..."loadbalance-"roundrobin"/>
客户端服务级别
<dubbo:reference interfacee"..."londbalance"roundrobin"/>
服务端方法级别.
xdubbo:service interface-..."》
<dubbo:method nane-...loadbalance" roundrobin"/>

</dubbo:service>
客户端方法级别.
</dubbo:reference interface-...>
dubbo:method name-"..."loadbalance-”roundrobin"/>

</dubbo:reference>

7.zookeeper 注册中心
在 provider 和 consumer 中增加 zookeeper 客户端 jar 包依赖
<dependency>
<groupId>org.apache zookeeper</groupId>

<artifactId>zookeeper</artifactld>
<version>3.3.3k/version>
</dependencyh

(1)Zookeeper 单机配置
<dubbo:registry address-"zookeeper://10.20.153.10:2181" 1>
<dubbo:registry protocol-"zookeeper"address-"10.20.153.10:21811>

(2)Zookeeper 集群配置
<dubbo:registry address-" zookeeper://10.20. 153.10:21817backup-10.20.153.11:2181,10.20.153.12:2181"

o:registry protocol-" zookeeper" address-"10.20.153. 10:2181 ,10.20.153.11:2181,10.20.153.12:21811>

(3)同一 Zookeeper,分成多组注册中心:
<dubbo:registry id-"chinaRegistry" protocol- zookeeper" address-"10.20.153.10:2181" groug-"china"

<dubbo:registry id-"intlRegistry" protocol-" zookeeper" address-"1e. 20.153.10:2181" group-"intl*/

8.解决问题

(1)远程调用需要协议

在 testweb 与 service 之间要想通讯必须需要网络,所以要手动写网络请求稍有麻烦,相互通讯时需要写框架,这时就可以用已经写好的框架,遵循里面的协议。

(2)web 和 service 不在一个局域网

将一个服务发布到阿里云,正常情况下应该是可以演示的,特殊情况下,正常的工作电脑是在局域网里面,而正常服务器都是独立的公网IP,路由器访问的是路由器,有时候到不了电脑,所以说最终可能会连不上上传的服务,如果想做的话,必须在路由器内做dubbo映射。

(3)netty 在 dubbo 里的作用

Netty主要是用于发起网络协议,通过 double 在内部分装协议,发起网络请求。

大约原理为首先访问 dubbo,dubbo 打开网络连接去访问 zookeeper,发送zookeeper 协议所需要的数据,zookeeper 返回数据之后 dubboo 进行解析,网络通信需要流,而netty就是起一个流的作用。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
1月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
52 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
26天前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
18 4
|
1月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
84 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
2月前
|
负载均衡 监控 Dubbo
分布式框架-dubbo
分布式框架-dubbo
|
2月前
|
Dubbo Java 应用服务中间件
分布式-dubbo的入门
分布式-dubbo的入门
|
1月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
47 0
|
2月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
2月前
|
负载均衡 监控 Dubbo
分布式-Dubbo-dubbo能解决什么问题
分布式-Dubbo-dubbo能解决什么问题
下一篇
无影云桌面