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

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习基于 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月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
1月前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
1月前
|
存储 安全 API
单元化架构,分布式系统的新王!
【10月更文挑战第9天】
126 0
单元化架构,分布式系统的新王!
|
1月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
45 2
|
1月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
48 1
|
1月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
49 0
|
2月前
|
Java
分布式-Zookeeper-分布式锁
分布式-Zookeeper-分布式锁
|
13天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
下一篇
无影云桌面