ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微服务:nacos

2022-03-02 02:31:06  阅读:195  来源: 互联网

标签:服务 nacos 实例 集群 userservice cloud


使用Nacos代替eureka,步骤与eureka类似

  • 引入父工程依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
  • 引入子项目的依赖,并去除eureka的依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 配置springboot文件
 spring:
     cloud:
            nacos:
              server-addr: localhost:8848

Nacos服务分级存储模型

启动:

startup.cmd -m standalone

服务-集群-实例。

在服务调用时,尽可能访问本地集群,跨集群调用延迟很高。本地集群不可访问时,再去访问其他集群。

如何配置集群:

  • 在springboot配置文件中增加集群配置
cloud:
    nacos:
        server-addr: localhost:8848
            discovery:
                cluster-name: Bocai

如希望负载均衡的策略为优先调用本地集群的实例,则需要修改策略

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

NacosRule特点:

  • 优先访问本地集群

  • 本地集群内的多个服务采用随机方式

  • 如果本地集群中的所有服务都无法访问,则会跨集群访问。

A cross-cluster call occurs,name = userservice # 一次跨集群的访问发生了

环境隔离

namespace——命名空间

一个命名空间中的服务可以互相调用,但是不同的namespace中的不能调用。

java.lang.IllegalStateException: No instances available for userservice
//找不到userservice可用的实例
  • 设置一个开发环境
cloud:
    nacos:
        server-addr: localhost:8848
            discovery:
            	namespace: c043e4a4-9940-470a-a313-a438392f8d7a # 命名空间

eureka与nacos

  • nacos将实例分为临时实例和非临时实例。临时实例的心跳检测与eureka类似,每隔一定时间进行一次检测,将坏掉的服务剔除。非临时实例,则nacos主动发送请求来查看服务状态,即使服务挂掉也不会主动剔除。
  • 都说服务的提供者将自身注册到eureka/nacos,然后服务的消费者定时进行拉取。nacos如果发现有服务坏掉,则会立即推送消息给消费者(push)
ephemeral: false #非临时实例

Nacos统一配置管理

在Nacos-配置管理中新建一个配置

一般明明规范为:xx(哪一个服务)-xx(哪一个环境).yaml,如:userService-dev.yaml

将核心配置填写在配置内容中,一般为一些可能会发生变化的配置,在开发环境中怎么样,项目上线了怎么样。

一般流程:

  • 项目启动
  • 读取本地配置文件application.yml
  • 创建spring容器
  • 加载bean

现在需要先读取nacos配置文件在读取本地文件,但是nacos的地址写在本地文件中,因此引入优先级更高的bootstrap.yml配置文件

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev #开发环境,这里是dev
  cloud:
    nacos:
      server-addr: localhost:8848 # Nacos地址
      config:
        file-extension: yaml # 文件后缀名

标签:服务,nacos,实例,集群,userservice,cloud
来源: https://www.cnblogs.com/Boerk/p/15953331.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有