注册中心Eureka-Nacos

文章目录

  • 1.Eureka
    • 1.1 消费者与提供者
    • 1.2 服务调用原理分析
      • 服务调用出现的问题
      • Eureka的作用
      • 总结
    • 1.3 实践
      • 搭建EurekaServer
      • register user-servive and order-service
      • 服务发现(消费者拉取服务列表)
      • 小结
  • 2.Ribbon负载均衡
    • 2.1 负载均衡流程
    • 2.2 负载均衡策略
    • 2.3 饥饿加载
  • 3. Nacos
    • 3.1 安装
      • 下载安装包
      • 端口配置
      • 启动
    • 3.2 Nacos的依赖
    • 3.3 服务分级存储模型
      • 如何给实例配置集群
    • 3.4 NacosRule负载均衡
      • NacosRule策略
      • 服务实例的权重设置
        • 如何设置实例的权重值?
        • 小结
    • 3.5 环境隔离
      • 创建namespace
      • 配置namespace
  • 4.Nacos和Eureka对比

1.Eureka

1.1 消费者与提供者

服务提供者:

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

服务消费者:

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

在这里插入图片描述

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

1.2 服务调用原理分析

服务调用出现的问题

注册中心Eureka-Nacos_第1张图片

关于地址信息获取

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

Eureka的作用

注册中心Eureka-Nacos_第2张图片
注册中心Eureka-Nacos_第3张图片

总结

注册中心Eureka-Nacos_第4张图片

1.3 实践

三个步骤
注册中心Eureka-Nacos_第5张图片

搭建EurekaServer

注册中心Eureka-Nacos_第6张图片

启动类

注册中心Eureka-Nacos_第7张图片

register user-servive and order-service

注册中心Eureka-Nacos_第8张图片

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

注册中心Eureka-Nacos_第9张图片

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

注册中心Eureka-Nacos_第10张图片

@LoadBalanced 表示负载均衡

小结

注册中心Eureka-Nacos_第11张图片

2.Ribbon负载均衡

2.1 负载均衡流程

注册中心Eureka-Nacos_第12张图片

分析源码后

注册中心Eureka-Nacos_第13张图片

2.2 负载均衡策略

IRule的接口定义了Ribbon的负载均衡策略
注册中心Eureka-Nacos_第14张图片

内置的一些负载均衡策略
注册中心Eureka-Nacos_第15张图片

如何配置负载均衡策略?
注册中心Eureka-Nacos_第16张图片

两种方式的作用范围不同

代码方式作用全体

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

2.3 饥饿加载

注册中心Eureka-Nacos_第17张图片

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

在这里插入图片描述

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.cloudgroupId>
    <artifactId>spring-cloud-alibaba-dependenciesartifactId>
    <version>2.2.5.RELEASEversion>
    <type>pomtype>
    <scope>importscope>
dependency>

客户端:


<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>

3.3 服务分级存储模型

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

第一级:服务

第二级:集群

第三级:实例

注册中心Eureka-Nacos_第18张图片

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

为什么要有集群?

与机房内的本地调用相比,跨集群调用的延迟较高。为了降低延迟,引入集群的概念,当本地集群不可访问时,再去访问其他集群。
注册中心Eureka-Nacos_第19张图片

如何给实例配置集群

注册中心Eureka-Nacos_第20张图片

3.4 NacosRule负载均衡

注册中心Eureka-Nacos_第21张图片

NacosRule策略

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

服务实例的权重设置

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

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

如何设置实例的权重值?

控制台

注册中心Eureka-Nacos_第22张图片

小结

注册中心Eureka-Nacos_第23张图片

3.5 环境隔离

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

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

Nacos提供了环境隔离功能。

  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见
    注册中心Eureka-Nacos_第24张图片

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

创建namespace

默认情况下,所有 service、data、group 都在同一个 namespace,名为 public(保留空间):
注册中心Eureka-Nacos_第25张图片

我们可以点击页面新增按钮,添加一个 namespace:
注册中心Eureka-Nacos_第26张图片

然后,填写表单:
注册中心Eureka-Nacos_第27张图片

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

注册中心Eureka-Nacos_第28张图片

配置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

注册中心Eureka-Nacos_第29张图片

dev

注册中心Eureka-Nacos_第30张图片

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

在这里插入图片描述

4.Nacos和Eureka对比

  • 服务提供者

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

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

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

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

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

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

注册中心Eureka-Nacos_第31张图片

注册中心Eureka-Nacos_第32张图片

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

你可能感兴趣的:(微服务,eureka,spring,cloud,java,微服务,spring)