分布式服务架构

本文介绍了Nacos作为服务注册中心的使用,包括支持的服务发现、动态配置和DNS服务。Nacos兼容AP/CP/CAP,不同于Zookeeper的CP和Eureka的AP。文中还详细阐述了服务注册中心的工作原理,如心跳检查和Ribbon的负载均衡。此外,文章讨论了Sentinel服务降级、熔断和分布式锁的实现,并对比了基于数据库、缓存和Zookeeper的分布式锁策略,强调了在选择分布式锁方案时需要考虑的因素和各种实现方式的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。

支持AP/CP/CAP

Zookeeper支持CP,而Eureka支持AP,nacos支持全部。

 

官方网址:http://nacos.io

nacos作为注册中心

1.先在官网上下载nacos中间件 

https://nacos.io/zh-cn/docs/quick-start.html

服务注册中心原理:

心跳检查:每一个实例都会有心跳任务,会不断的发送实例的信息,nacos注册中心有一个健康检查任务,会轮循服务的上一次更新时间,若时间间隔大于15秒,则状态改为false,若间隔时间大于30秒,则删除服务。

Ribbon 做负载均衡:它只支持参数拼接调用,借助 Feign (实现远程调用接口使用就像本地接口一样调用,它本质上就是实现了参数的自动拼接),它底层还是依赖ribbon来实现真正的服务调用。

Ribbon依据服务名称使用动态代理去本地缓存中拉取服务,从而实现了远程接口的本地调用。

服务单会定时把服务放入本地缓存。所以就算注册中心挂掉,服务也能继续使用。图示如下:

 

sentinel服务降级和熔断:

对于订单链路里非核心的服务,若出现异常,使用服务降级类记录日志,并在后续补偿任务中重新补偿而并不终止流程,比如积分服务等。

在Feign的配置中把sentinel enabled打开为true.

执行降级和熔断的服务必须实现被执行降级和熔断的服务,实现其内部方法。

可以配置实现,也可以注解实现

Seat 实现分布式锁:

分布式锁实现的三种方式:

1)基于数据库实现分布式锁; 排他锁。
2)基于缓存(Redis等)实现分布式锁; 
3)基于Zookeeper实现分布式锁;

二、分布式锁应该具备哪些条件

在分析分布式锁的三种实现方式之前,先了解一下分布式锁应该具备哪些条件:

1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行; 
2、高可用的获取锁与释放锁; 
3、高性能的获取锁与释放锁; 
4、具备可重入特性; 
5、具备锁失效机制,防止死锁; 
6、具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。

三、分布式锁的三种实现方

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值