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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
网络型负载均衡 NLB,每月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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
打赏
0
0
0
0
263
分享
相关文章
|
2月前
|
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
214 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
178 81
工厂人员定位管理系统架构设计:构建一个高效、可扩展的人员精确定位
本文将深入探讨工厂人员定位管理系统的架构设计,详细解析前端展示层、后端服务层、数据库设计、通信协议选择等关键环节,并探讨如何通过微服务架构实现系统的可扩展性和稳定性。
68 10
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
如何基于服务网格构建高可用架构
分享如何利用服务网格构建更强更全面的高可用架构
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
212 5
构建高效微服务架构:策略与实践####
在数字化转型的浪潮中,微服务架构凭借其高度解耦、灵活扩展和易于维护的特点,成为现代企业应用开发的首选。本文深入探讨了构建高效微服务架构的关键策略与实战经验,从服务拆分的艺术到通信机制的选择,再到容器化部署与持续集成/持续部署(CI/CD)的实践,旨在为开发者提供一套全面的微服务设计与实现指南。通过具体案例分析,揭示如何避免常见陷阱,优化系统性能,确保系统的高可用性与可扩展性,助力企业在复杂多变的市场环境中保持竞争力。 ####
64 2
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
构建高效微服务架构:最佳实践与挑战
在现代软件开发中,微服务架构因其高度的可扩展性、灵活性和敏捷性而受到青睐。本文深入探讨了构建高效微服务架构的关键策略,包括服务的划分、通信机制、数据管理、部署与监控等方面的最佳实践。同时,文章也分析了在实施过程中可能遇到的挑战,如服务间的依赖管理、数据一致性问题、安全考量及性能优化等,并提出了相应的解决方案。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们在构建微服务系统时能够有效规避风险,提升系统的健壮性和用户体验。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等