SpringCloud Alibaba-Nacos

news2024/11/26 9:50:33

SpringCloud Alibaba-Nacos

  • 1. Nacos安装
    • 1.1 Nacos概要
    • 1.2 Nacos架构
    • 1.3 Nacos安装
      • 1.3.1 单机模式 Derby安装
      • 1.3.2 单机模式 MySQL安装
      • 1.3.3 Docker 安装Nacos
  • 2 Nacos功能应用
    • 2.1 Nacos服务注册与发现
    • 2.2 负载均衡
    • 2.3 配置中心
      • 2.3.1 配置管理
      • 2.3.2 多环境切换
      • 2.3.3 共享/扩展 配置
        • 2.3.3.1 共享配置
        • 2.3.3.2 扩展配置
        • 2.3.4 配置刷新
        • 2.3.5 灰度发布
  • 3 Nacos集群
    • 3.1 集群架构
    • 3.2 Nacos集群部署
    • 3.3 客户端接入Nacos集群

1. Nacos安装

1.1 Nacos概要

  • Nacos特性

服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求; Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助用户根据健康状态管理服务的可用性及流量

  • 动态配置服务

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

  • 动态 DNS 服务

Nacos 提供了一些简单的 DNS APIs TODO 帮助用户管理服务的关联域名和可用的 IP:PORT 列表

  • 服务及其元数据管理

Nacos 能让用户从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据

  • Nacos版图
    在这里插入图片描述
  1. 特性大图:从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
  2. 架构大图:通过清晰架构,快速进入使用
  3. 业务大图:利用当前特性可以支持的业务场景,及其最佳实践
  4. 生态大图:系统梳理 Nacos 和主流技术生态的关系
  5. 优势大图:展示 Nacos 核心竞争力
  6. 战略大图:从战略到战术层面讲 Nacos 的宏观优势
  • Nacos 生态图
    在这里插入图片描述
    Nacos 无缝支持一些主流的开源生态: Spring Cloud, Apache Dubbo and Dubbo Mesh, Kubernetes and CNCF

1.2 Nacos架构

在这里插入图片描述
参考官方文档:https://nacos.io/zh-cn/docs/architecture.html

1.3 Nacos安装

关于Nacos安装,可以直接参考 官网安装,以下基于Docker实现Nacos单机安装和基于Docker实现Nacos集群安装, 采用Docker-Compose安装Nacos要更方便

Nacos安装模式有多种:

  • 单机模式 Derby: 这种模式是极简模式,数据没法持久化存储,适合开发环境
  • 单机模式 MySQL: 这种模式支持数据持久化,数据会存储到MySQL中,适合生产环境
  • 集群模式: 这种模式适合生产环境并且服务节点个数较多,不存在单点故障问题

1.3.1 单机模式 Derby安装

  1. 克隆项目
#克隆项目
git clone https://github.com/nacos-group/nacos-docker.git

#进入nacos-docker目录
cd nacos-docker

#查看文件列表
ce example
ll

example中文件列表如下
在这里插入图片描述
可以看出nacos是基于SpringBoot开发的

  1. Nacos Derby安装
    安装Nacos生产环境会结合prometheus和grafana实现对Nacos的监控,这里不做它们的监控操作,需要将docker-compose的配置注释掉,修改example/standalone-derby.yaml,配置如下:
    在这里插入图片描述
    进入到example目录下执行如下命令:
docker-compose -f standalone-derby.yaml up -d

docker-compose命令格式: docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]

Docker Compose 常用命令:参考文章

命令含义
build重新构建服务
-f使用特定的compose模板文件,默认为docker-compose.yml
-d在后台运行服务容器
ps列出容器
up可以自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示正在运行的容器进程
logs查看服务容器的输出
logs查看服务容器的输出
stop/start/restart停止/启动/重启服务

安装完成后,可以直接访问它的控制台 http://192.168.200.200:8848/nacos,账号密码都是nacos,效果如下
在这里插入图片描述

1.3.2 单机模式 MySQL安装

  1. 我们先停掉之前安装的服务,并删掉之前的容器
#停掉容器
docker stop nacos-standalone

#删掉容器
docker rm nacos-standalone

#或者一步到位
docker-compose -f standalone-derby.yaml down
  1. 使用example/standalone-mysql-5.7.yaml
version: "2"
services:
  nacos:
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos-standalone-mysql
    env_file:
      - ../env/nacos-standlone-mysql.env
    volumes:
      - ./standalone-logs/:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    depends_on:
      - mysql
    restart: on-failure
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    env_file:
      - ../env/mysql.env
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"
  1. 在example目录下使用docker-compose命令启动
docker-compose -f standalone-mysql-5.7.yaml up -d

据库脚本在nacos的nacos\config\src\main\resources\META-INF工程中有对应脚本,也可以通过下面的网址获取SQL:
https://github.com/alibaba/nacos/blob/develop/config/src/main/resources/META-INF/nacos-db.sql
注意: 启动的yaml文件要和数据库版本对应上
创建数据库nacos_config,并执行初始化操作,初始化脚本后,数据库数据如下:
在这里插入图片描述

至此结束

1.3.3 Docker 安装Nacos

也可以直接采用Docker的方式安装Nacos,这样安装不要克隆项目也不需要修改配置文件,会更方便

  1. 拉取镜像
docker pull nacos/nacos-server
  1. 创建本地的映射文件目录
mkdir -p /root/nacos/conf /root/nacos/logs
  1. 启动容器
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-p 8858:8848 \
--restart=always \
--name nacos nacos/nacos-server

4)拷贝容器配置目录

docker cp nacos:/home/nacos/conf /root/nacos

5)编辑配置文件

vi /root/nacos/conf/application.properties
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# 默认当前工作目录
server.tomcat.basedir=file:.

#*************** 配置模块相关配置 ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
# spring.datasource.platform=mysql已经被spring.sql.init.platform=mysql替代
spring.sql.init.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://192.168.200.200:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user.0=root
db.password.0=root

### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.enabled=true
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### 当nacos.core.auth.system.type=nacos生效
### 令牌过期(以秒为单位):
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### 默认token 需要自己设置, 有安全隐患
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345676901234567890123456785}
### 打开/关闭认证信息的缓存. 通过打开这个开关, 验证信息的更新将有15秒的延迟
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
# key和value自己设置 有安全隐患
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:wms}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:wms-security}
## spring security config
### 关闭安全
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

6)重新运行容器

# 停止容器
docker stop nacos

# 删除容器
docker rm nacos

# 挂在配置目录重新运行
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-v /root/nacos/conf:/home/nacos/conf \
-v /root/nacos/logs:/home/nacos/logs \
-p 8858:8848 \
--restart=always \
--name nacos nacos/nacos-server

注意:需要提取准备好msyql数据库, 兼容mysql8参考

2 Nacos功能应用

Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
https://github.com/alibaba/spring-cloud-alibaba

2.1 Nacos服务注册与发现

服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于 服务的动态扩缩容。Nacos Discovery Starter 可以帮助您将服务自动注册到 Nacos 服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter 也将服务实例自身的一些元数据信息-例如 host,port,健康检查URL,主页等-注册到 Nacos 。

关于SpringCloud Alibaba和SpringBoot的版本,我们可以通过 https://start.spring.io/actuator/info 查看
wiki 版本说明: github

  1. 在项目中引入如下依赖:
<!--nacos-discovery-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.7.RELEASE</version>
</dependency>
<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.7.RELEASE</version>
</dependency>
  1. 配置bootstrap.yml

bootstrap.yml(bootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等
bootstrap.yml 先于 application.yml加载

添加如下配置:

spring:
  application:
    name: hailtaxi-gateway
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
      config:
        server-addr: 192.168.200.200:8848
  1. 在项目启动类上添加开启服务发现的注解
@SpringBootApplication
@EnableDiscoveryClient 
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class,args);
    }
}

2.2 负载均衡

在这里插入图片描述
如上图,如果此时用户打车成功,会调用订单服务,订单服务会修改司机状态,此时会调用hailtaxi-driver,如果是生产环境,每个节点一定是集群状态,比如有2个hailtaxi-driver节点
服务注册到Nacos中,有一个权重属性,这个权重属性就是Nacos的负载均衡机制,此时需要用到Nacos的负载均衡策略NacosRule,我们可以在程序中先初始化负载均衡算法,再到bootstrap.yml中配置权重

  1. 初始化负载均衡算法
/***
 * Nacos负载均衡算法
 * @return
 */
@Bean
@Scope(value="prototype") //注意不要单例 https://github.com/alibaba/spring-cloud-alibaba/issues/1184
public IRule loadBalanceRule(){
    return new NacosRule();
}

2)在nacos控制台设置服务权重
在这里插入图片描述
注意:如果hailtaxi-order模块通过openfeign调用超时,可以设置它的超时时间
由于openfeign底层默认使用的是ribbon,故可以采用如下配置:

ribbon:
    # 处理请求的超时时间
    ReadTimeout: 5000
    # 连接建立的超时时长
    ConnectTimeout: 5000

如果我们把算法NacosRule注释,默认就是和Ribbon集成,且默认开启,可以通过如下配置实现关闭或开启:

ribbon:
  nacos:
    enabled: true

2.3 配置中心

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,可以在 Nacos Server 集中管理 Spring Cloud 应用的外部属性配置

2.3.1 配置管理

  1. 可以在Nacos控制台配置项目的配置数据,先打开Nacos控制台,在命名空间中点击新建命名空间,如下图:
    在这里插入图片描述
  2. 修改hailtaxi-driver中的bootstrap.yml配置文件,指定命名空间
spring:
  application:
    name: hailtaxi-driver
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
      config:
        server-addr: 192.168.200.200:8848
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
        # 如果将配置信息保存到nacos,指定配置文件扩展名
        file-extension: yaml
        # nacos config dataid name 默认加载 ${spring.application.name}.${file-extension},也可指定
        #name: hailtaxi-driver.yaml

参考:官网

  1. 在nacos中添加配置
    在配置管理>配置列表中添加,如下图:
    在这里插入图片描述
    将程序外的配置全部拿到nacos中进行管理

Data ID:默认加载 s p r i n g . a p p l i c a t i o n . n a m e . {spring.application.name}. spring.application.name.{file-extension}
另外对于web服务的端口server.port 和application.name等不变内容一般留在application.yml中
在这里插入图片描述

2.3.2 多环境切换

spring-cloud-starter-alibaba-nacos-config在加载配置的时候,不仅仅加载以 dataid 为 s p r i n g . a p p l i c a t i o n . n a m e . {spring.application.name}. spring.application.name.{file-extension:properties} 为前缀的基础配置,还加载dataid为 s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name{profile}.${file-extension:properties} 的基础配置

  1. 在nacos中创建hailtaxi-driver-dev.yaml作为开发环节的配置,创建hailtaxi-driver-test.yaml作为测试环境的配置文件,创建如下:
    在这里插入图片描述
    hailtaxi-driver-dev.yaml
    在这里插入图片描述
    这样多出来两份配置信息如下:
    在这里插入图片描述

  2. 在hailtaxi-driver项目的bootstrap.yml中激活配置,如下:
    在这里插入图片描述

2.3.3 共享/扩展 配置

在实际的业务场景中应用和共享配置间的关系可能,Spring Cloud Alibaba Nacos Config 从 0.2.1 版本后,可支持自定义 Data Id 的配置,通过它可以解决配置共享问题

2.3.3.1 共享配置

  1. 创建一个Data ID 为:datasource.yaml 的配置,用于配置数据库连接,如下图:
    在这里插入图片描述

  2. 在bootstrap.yml中引入共享配置需要使用shared-configs属性,配置如下:

spring:
  application:
    name: hailtaxi-driver
  profiles:
    # 激活 dev 配置
    active: dev
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
        weight: 1
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
      config:
        server-addr: 192.168.200.200:8848
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
        # 如果将配置信息保存到nacos,指定配置文件扩展名
        file-extension: yaml
        # nacos config dataid name 默认加载 ${spring.application.name}.${file-extension},当然也可指定
        #name: hailtaxi-driver.yaml
        # 加载共享配置信息
        shared-configs[0]:
          dataId: datasource.yaml
          refresh: true

配置信息的加载由NacosConfigProperties完成
在这里插入图片描述

2.3.3.2 扩展配置

nacos除了支持读取以上所支持的的配置信息外,用户还可以自定义扩展配置

  1. 在nacos中 创建一个Data ID 为:custom.yaml 的配置,配置信息如下图:
    在这里插入图片描述
  2. 在hailtaxi-driver模块的bootstrap.yml中加载该配置,使用extension-configs属性,如下:
spring:
  application:
    name: hailtaxi-driver
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
        weight: 1
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
      config:
        server-addr: 192.168.200.200:8848
        # 指定命名空间的id
        namespace: 1ebba5f6-49da-40cc-950b-f75c8f7d07b3
        # 如果将配置信息保存到nacos,指定配置文件扩展名
        file-extension: yaml
        # nacos config dataid name 默认加载 ${spring.application.name}.${file-extension},当然也可指定
        #name: hailtaxi-driver.yaml
        # 加载共享配置信息 
        # 下述两类配置都是数组,对同种配置,数组元素对应的下标越⼤,优先级越⾼。也就是排在后⾯的相同配置,将覆盖排在前⾯的同名配置
        shared-configs[0]:
          dataId: datasource.yaml
          refresh: true
        shared-configs[1]:
          dataId: datasource1.yaml
          refresh: true
        # 加载扩展配置
        extension-configs:
          - dataId: custom.yaml
  1. 在应用程序中去读该配置,在DriverController中添加如下代码
@Value("${app.version:v0}")
private String version;

@GetMapping("/appinfo")
public String getAppInfo() {
    return version;
}
  • 同为扩展配置,存在如下优先级关系:extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]
  • 同为共享配置,存在如下优先级关系:shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]
  • 不同种类配置之间,优先级按顺序如下:主配置 > 扩展配置(extension-configs) > 共享配置(shared-configs)

2.3.4 配置刷新

配置自动刷新对程序来说非常重要,Nacos支持配置自动刷新,并且提供了多种刷新机制

Environment自动刷新
spring-cloud-starter-alibaba-nacos-config 支持配置的动态更新,Environment能实时更新到最新的配置信息
@Value刷新
程序中如果写了@Value注解,可以采用@RefreshScope实现刷新,只需要在指定类上添加该注解即可

2.3.5 灰度发布

灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。在1.1.0中,Nacos支持了以IP为粒度的灰度配置,具体使用步骤如下:

  1. 将hailtaxi-driver项目打包,上传到服务器,并启动
  2. 本地也启动
    查看nacos中的服务列表
    在这里插入图片描述
    编辑配置,勾选“Beta发布”,在文本框里选择要下发配置配置的IP,多个IP用逗号分隔,操作如下:
    在这里插入图片描述
    修改配置内容,点击“发布Beta”按钮,即可完成灰度配置的发布,点击“发布Beta”后,“发布Beta”按钮变灰,此时可以选择“停止Beta”或者“发布”。“停止Beta”表示取消停止灰度发布,当前灰度发布配置的IP列表和配置内容都会删除,页面回到正常发布的样式。“发布”表示将灰度配置在所有客户端生效,之前的配置也会被覆盖,同时页面回到正常发布的样式:
    在这里插入图片描述

3 Nacos集群

3.1 集群架构

Nacos集群模式有多种,但其实无论哪种都是将3个Nacos服务进行集群发布
集群需要采用数据共享模式进行配置信息共享,也就是要将数据存入到同一个数据库中,我们对每种集群模式进行说明:

  1. 直连模式

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

比如我现在有3个Nacos,每次操作数据的时候,都需要使用IP:端口的模式,这种模式效率极低,并且一旦节点故障无法识别,因此官方不推荐这种模式。

  1. VIP模式

http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

  1. 域名模式

http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,因此官方推荐该模式,该模式的结构图如下:
在这里插入图片描述

3.2 Nacos集群部署

我们搭建Nacos集群环境,集群环境配置如下:

节点IP端口
Nacos1192.168.211.1458848
Nacos2192.168.211.1468848
Nacos3192.168.211.1478848
  1. 服务下载
    在https://github.com/alibaba/nacos/releases/下载需要的服务,当前使用的是1.4.1,版本如下:
    在这里插入图片描述
    解压压缩包后,包结构如下:
    在这里插入图片描述
  2. 配置数据库
    修改conf/application.properties配置数据库,配置如下:
    在这里插入图片描述
  3. 集群配置
    修改conf/cluster.conf配置集群:
192.168.211.145:8848
192.168.211.146:8848
192.168.211.147:8848
  1. 节点同步
    将修改好的服务分别上传到192.168.211.146、192.168.211.147服务:
scp -r nacos 192.168.211.146:/usr/local/server/alibaba/
scp -r nacos 192.168.211.147:/usr/local/server/alibaba/
  1. 启动每个节点
    进入到每个节点nacos/bin目录下,执行启动:
sh startup.sh

访问任何一个单节点,信息如下:
在这里插入图片描述

3.3 客户端接入Nacos集群

客户端接入,不建议写多个节点的IP:Port,建议以域名的方式连接Nacos,因此需要配置Nacos域名,在192.168.211.145节点中配置域名nacos.hailtaxi.com,nginx配置如下:

#负载均衡池配置
upstream hailtaxi-nacos{
    server 192.168.211.145:8848;
    server 192.168.211.146:8848;
    server 192.168.211.147:8848;
}

server {
    listen       80;
    server_name  nacos.hailtaxi.com;

    location / {
        proxy_pass http://hailtaxi-nacos;
    }
}

项目中使用:

方式1:项目中Nacos地址可以把多个地址写到一起,用逗号隔开,如下代码:
在这里插入图片描述
方式2:通过Nginx访问即可,配置如下:

server-addr: nacos.hailtaxi.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark集群部署和启动与关闭

上一篇我们讲了Hadoop集群部署和启动与关闭&#xff0c;今天我们讲一下Spark集群部署和启动与关闭。首先我们先来了解一下Spark集群部署模式&#xff0c;分别有以下三种&#xff1a; Standalone   Standalone&#xff08;独立模式&#xff09;是Spark一种简单的集群部署模式&…

随着用户体验质量的不断追求,性能优化成了Android开发中的重要一方面

在移动互联网时代&#xff0c;Android系统的使用越来越广泛&#xff0c;而随着用户对体验质量的不断追求&#xff0c;性能优化已经成为了Android应用开发中的重要方面。以下是对Android市场对性能优化的需求量及应用广度进行详细分析的几个方面。 1. 用户需求 随着Android系统…

DataLeap的全链路智能监控报警实践(三): 系统实现

系统实现 整体架构 基线 管理模块&#xff1a;负责基线创建、更新、删除等操作&#xff0c;管理基线元信息&#xff0c;包括保障任务&#xff0c;承诺时间&#xff0c;余量及报警配置等&#xff09;&#xff1b; 基线 实例生成&#xff1a;系统每天定时触发生成基线实例&#x…

2023 年最新互联网 Java 面试八股文出炉(附大厂 P5-P8 技术栈)

为什么感觉 Java 面试变难了&#xff1f; 几年前&#xff0c;你只需要简单的 ssm 框架&#xff0c;就能轻松找到一份 Java 的工作&#xff0c;但现在不一样了&#xff0c;随着涌入这个行业的人越来越多&#xff0c;同一个岗位需要筛选掉更多人&#xff0c;要求自然水涨船高&am…

ubuntu 20.04 aarch64 平台交叉编译 opencv 静态库

编译环境 win10 64 位 VMware Workstation Pro 16 虚拟机 虚拟机安装 ubuntu 20.04 opencv 版本&#xff1a; 来自 github 当前最新 4.7 目的 交叉编译 opencv 生成静态库&#xff08;.a&#xff09;&#xff0c;用于 嵌入式 aarch64 平台。 环境配置方法 参考上一篇 u…

基于Java汽车配件销售业绩管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

@vue/cli脚手架

2. vue/cli脚手架 2.1vue/cli 脚手架介绍 目标: webpack自己配置环境很麻烦, 下载vue/cli包,用vue命令创建脚手架项目 vue/cli是Vue官方提供的一个全局模块包(得到vue命令), 此包用于创建脚手架项目脚手架是为了保证各施工过程顺利进行而搭设的工作平台 2.2 vue/cli 目录和代…

Camera | 11.瑞芯微摄像头采集图像颜色偏绿解决笔记

前言 在实际调试基于瑞芯微平台的camera过程中&#xff0c;发现显示的图片发绿&#xff0c; 现在把调试步骤分享给大家&#xff1a; 1、修改iq文件 sdk中位置&#xff1a; external/camera_engine_rkaiq/iqfiles/isp21/ov13850_ZC-OV13850R2A-V1_Largan-50064B31.xml【现在…

EBU5476 Microprocessor System Design 知识点总结_1 Introduction

主要学习自北邮国院物联网工程大三下学期微处理器课程。 Introduction-随便聊 嵌入式系统是什么&#xff1f;专用的计算机系统。为专门功能可能对计算机架构&#xff0c;外设等做出一些取舍。 通常的限制&#xff1a;Cost&#xff08;比如大量部署传感器节点&#xff09;&am…

基础知识学习---牛客网C++面试宝典(二)C/C++基础之C++内存

1、本栏用来记录社招找工作过程中的内容&#xff0c;包括基础知识学习以及面试问题的记录等&#xff0c;以便于后续个人回顾学习&#xff1b; 暂时只有2023年3月份&#xff0c;第一次社招找工作的过程&#xff1b; 2、个人经历&#xff1a; 研究生期间课题是SLAM在无人机上的应…

深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&#…

想了解会计软件吗?来看看Zoho Books的功能和特点

Zoho Books 是一款功能强大的在线会计软件&#xff0c;为企业提供多合一解决方案&#xff0c;该解决方案可定制、可扩展&#xff0c;并使始终保持合规。 轻松生成电子发票 在Zoho Books中&#xff0c;您可以通过包含电子发票架构中提到的所有必填字段来创建电子发票格式的发票。…

css 包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型&#xff0c;这是很多小伙伴耳熟能详的知识&#xff0c;甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块&#xff0c;有的小伙伴就懵圈了&#xff0c;什么是包含块&#xff1f;好像…

【啃】《Java核心卷 一》 | 第一,二章

文章目录 《Java核心技术卷 一》第一章 概述第二章 Java编程环境 图书推荐 《Java核心技术卷 一》 第一章 概述 前言&#xff1a;本书与一些”0基础入门“的书定位感觉是不太一样的&#xff0c;可能就像书名所说&#xff0c;是”核心技术“叭。书中经常将Java语言与 c 进行对比…

无损网络理论和实践

一、为什么需要无损网络&#xff1f; 随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展&#xff0c;集中式存储、分布式存储以及云数据库的普及等原因&#xff0c;业务应用有越来越多的数据需要从网络中获取&#xff0c;这对数据中心网络的交换速度和性能要求…

Linux :: 权限篇:【1】:Linux 下文件访问者身份说明:三人一组!【补充:Linux下用户类型的分类!】

系列文章说明 前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集推荐&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习…

【Flutter】Flutter 如何调用另一个 Page 里的函数

文章目录 一、前言二、状态管理和页面函数调用1. 状态管理简介2. 页面函数调用的需求 三、方法介绍和示例1. Provider 方法2. Global Key 方法3. 回调函数方法 四、总结 一、前言 本文的目标是为 Flutter 初学者解释如何在 Flutter 中调用另一个 Page 里的函数。通过阅读本文&…

碳排放预测模型 | Python实现基于机器学习回归分析的碳排放预测模型——数据清理和准备

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于机器回归分析的碳排放预测模型——数据清理和准备 研究内容 分析国家在设计用于预测和预测二氧化碳排放的机器学习模型方面的特定记录,利用来自全球绝大多数国家的记录。…

探索iOS之Metal编程指南

iOS推出Metal渲染库为了取代OpenGL。Metal有自己的Shader语言&#xff0c;渲染效率比OpenGL高。在这里我们一起探索&#xff1a;Metal使用C限制、预处理定义、动态链接配置、GPU编译配置、设备坐标系、视口坐标系、纹理坐标系、矢量类型、矩阵类型、采样器状态、矩阵相乘。 1、…

如何下载远程maven仓库的jar 手动放到本地仓库?

文章目录 如何下载远程maven仓库的jar 手动放到本地仓库?简单步骤描述:详细步骤描述:案例1:案例2:结语如何下载远程maven仓库的jar 手动放到本地仓库? 在使用Maven构建Java项目时,通常会从中央仓库或其他远程仓库下载所需的依赖库。但是,有时候我们需要手动下载这些依赖库并…