注册中心Eureka-Nacos

1.Eureka

1.1 消费者与提供者

服务提供者:

暴露接口给其他微服务调用

服务消费者:

调用其他微服务提供的接口

在这里插入图片描述

消费者与提供者的关系是相对的,根据业务情况来看,一个服务既可以是消费者也可以是提供者

1.2 服务调用原理分析

服务调用出现的问题

在这里插入图片描述

关于地址信息获取

不能采用硬编码形式,消费者可能要调用多个提供者的地址,用硬编码的话就只能调用其中一个提供者的地址。

Eureka的作用

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

1.3 实践

三个步骤
在这里插入图片描述

搭建EurekaServer

在这里插入图片描述

启动类

在这里插入图片描述

register user-servive and order-service

在这里插入图片描述

多例部署,为了防止端口冲突,需要修改端口设置

在这里插入图片描述

服务发现(消费者拉取服务列表)

在这里插入图片描述

@LoadBalanced 表示负载均衡

小结

在这里插入图片描述

2.Ribbon负载均衡

2.1 负载均衡流程

在这里插入图片描述

分析源码后

在这里插入图片描述

2.2 负载均衡策略

IRule的接口定义了Ribbon的负载均衡策略
在这里插入图片描述

内置的一些负载均衡策略
在这里插入图片描述

如何配置负载均衡策略?
在这里插入图片描述

两种方式的作用范围不同

代码方式作用全体

配置文件方式只针对某个服务而言

2.3 饥饿加载

在这里插入图片描述

如果要对多个服务器进行饥饿加载

在这里插入图片描述

3. Nacos

什么是Nacoshttps://www.jianshu.com/p/39ade28c150d

Nacos既可以作为注册中心,又可以作为配置中心

注册中心

提供一个存储介质,供服务提供者和服务消费者共同连接,而存储的主要信息就是这里的 URL。

一个完整的注册中心需要实现以下功能:

  1. 接收服务端的注册与客户端的引用,即将引用与消费建立关联,并支持多对多。
  2. 当服务端发生变化时,能及时更新状态,通知客户端。
  3. 当注册中心重启时,能自动恢复注册数据,以及订阅请求。

配置中心https://blog.csdn.net/qq_46112274/article/details/122620460

3.1 安装

下载安装包

Nacos下载地址

windows版

将nacos-server-1.x.x.zip包解压到任意非中文目录

bin:启动脚本

conf:配置文件

端口配置

Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。

如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改application.properties配置文件中的端口:

server.port=8848

启动

进入./nacos/bin目录下,打开终端。

通过startup.cmd脚本启动

.\startup.cmd -m standalone

按住ctrl,单击Console中的地址,可以进入控制台

默认的账号密码都是nacos

3.2 Nacos的依赖

父工程:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

客户端:

<!-- nacos客户端依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.3 服务分级存储模型

服务分级存储模型划分三级

第一级:服务

第二级:集群

第三级:实例

在这里插入图片描述

可以发现比Eureka多了一层集群

为什么要有集群?

与机房内的本地调用相比,跨集群调用的延迟较高。为了降低延迟,引入集群的概念,当本地集群不可访问时,再去访问其他集群。
在这里插入图片描述

如何给实例配置集群

在这里插入图片描述

3.4 NacosRule负载均衡

在这里插入图片描述

NacosRule策略

  • 优先选择本地集群的服务实例列表
  • 当本地集群找不到提供者,才会去其他集群寻找,并且会报警告
  • 在本地集群中采用随机负载均衡的方式调用实例

服务实例的权重设置

实例部署中服务器设备的性能有差异,我们希望性能好的机器承担更多的用户请求,为此我们可以对服务实例的权重进行设置。

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。

如何设置实例的权重值?

控制台

在这里插入图片描述

小结

在这里插入图片描述

3.5 环境隔离

我们既然已经将服务实例划分为集群,为什么还要有环境隔离?

集群是地域划分,实际当中我们还有开发环境、生产环境的变化,需要依据这些环境变化来进行环境隔离

Nacos提供了环境隔离功能。

  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见
    在这里插入图片描述

group:将业务相关度比较高的服务放到一个组

创建namespace

默认情况下,所有 service、data、group 都在同一个 namespace,名为 public(保留空间):
在这里插入图片描述

我们可以点击页面新增按钮,添加一个 namespace:
在这里插入图片描述

然后,填写表单:
在这里插入图片描述

就能在页面看到一个新的 namespace:

在这里插入图片描述

配置namespace

给微服务配置 namespace 只能通过修改配置来实现。

例如,修改 order-service 的 application.yml 文件:

spring:
 cloud:
  nacos:
   server-addr: localhost:8848
   discovery:
    cluster-name: HZ
    namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间ID

重启 order-service 后,访问控制台。

public

在这里插入图片描述

dev

在这里插入图片描述

此时访问 order-service,因为 namespace 不同,会导致找不到 userservice,控制台会报错:

在这里插入图片描述

4.Nacos和Eureka对比

  • 服务提供者

    如图,在Nacos中,服务提供者有了临时实例和非临时实例之分。

    对于临时实例,与eureca相同,采用心跳监测方式,服务提供者每隔一段时间向nacosserver发送心跳监测数据,报告健康状况,一旦不健康了,就让它从服务列表消失;

    对于非临时实例,nacos会主动询问它的健康状况,当它不健康了,只要不手动关闭它,并不会将它从列表中剔除,而是等待它恢复健康。

    配置一个服务实例为非临时实例

    spring:
      cloud:
        nacos:
          discovery:
            ephemeral: false # 设置为非临时实例
    
  • 服务消费者

    nacos采取pull与push相结合的方式,当服务提供者发生变更时,会主动推送变更消息,更加快速地更新服务列表缓存,从而提高效率,减少错误。

在这里插入图片描述

在这里插入图片描述

主动询问对NacosServer的压力比较大,所以一般推荐临时实例。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fantasy`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值