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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
服务治理 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月前
|
监控 NoSQL Java
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
|
3月前
|
NoSQL Dubbo 应用服务中间件
Dubbo Zookeeper(一)Zookeeper初识
Dubbo Zookeeper(一)Zookeeper初识
|
29天前
|
边缘计算 安全 物联网
未来互联网架构的演变
【8月更文挑战第16天】随着科技的不断进步,互联网作为现代社会不可或缺的基础设施,其架构也在不断地发展与演变。本文将探讨未来互联网架构可能的变化方向,包括边缘计算、软件定义网络(SDN)、网络功能虚拟化(NFV)等技术趋势,以及这些技术如何影响互联网的稳定性、安全性和效率。同时,文章还将讨论这些变革对用户隐私保护和数据治理的潜在影响,并展望互联网架构的未来发展趋势。
|
29天前
|
设计模式 安全 网络安全
|
2月前
|
算法 前端开发
|
2月前
|
NoSQL 前端开发 算法
Redis问题之Redis分布式锁与Zookeeper分布式锁有何不同
Redis问题之Redis分布式锁与Zookeeper分布式锁有何不同
|
3月前
|
Shell 虚拟化
分布式系统详解--框架(Zookeeper-基本shell命令)
分布式系统详解--框架(Zookeeper-基本shell命令)
39 1
|
2月前
|
安全 Java
使用Zookeeper实现分布式锁的最佳实践
使用Zookeeper实现分布式锁的最佳实践
|
3月前
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
|
3月前
|
缓存 NoSQL 数据库
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
83 0