前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nacos服务注册和配置中心

Nacos服务注册和配置中心

作者头像
CBeann
发布2023-12-25 17:49:38
1990
发布2023-12-25 17:49:38
举报
文章被收录于专栏:CBeann的博客CBeann的博客

Nacos简介

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos=Eureka+config+bus

Naco是服务注册中心和服务配置中心

Nacos安装(单机&集群)

前提

JDK1.8+(包括1.8)

下面的项目是 SpringBoot2.2.2 + springcloud-alibaba 2.1.0

window安装Nacos

https://github.com/alibaba/nacos/tagshttps://github.com/alibaba/nacos/releases/tag/1.1.4)上选择版本然后下载 nacos-server-1.1.4.zip

解压后进入nacos-server-1.1.4\nacos\bin 目录下 启动nacos-server

启动成功后访问 http://localhost:8848/nacos 如下图所示,账号密码都为 nacos

Linux安装单机版Nacos

步骤

https://github.com/alibaba/nacos/tagshttps://github.com/alibaba/nacos/releases/tag/1.1.4)上选择版本然后下载 nacos-server-1.1.4.tar.gz

解压压缩包

代码语言:javascript
复制
tar -zxvf nacos-server-1.1.4.tar.gz

在解压后的bin 目录下运作 startup.sh ,并且添加单机版参数

代码语言:javascript
复制
./startup.sh -m standalone
遇到的问题

如果不添加参数 -m standalone,如下面代码所示

代码语言:javascript
复制
./startup.sh

系统会启动会遇到异常,所以运行成功后你可以查看一下 日志 /logs/start.out

Linux安装Nacos集群(伪集群)

此标题下 修改 startup.sh脚本 亲测可用, 后面的启动集群测试没有通过,勿看

通过修改startup.sh脚本,使其能配置端口,从而在一台服务器上开多个Nacos节点,然后在通过nginx进行代理转发。

左图是修改前,右图是修改后

下面中上图是修改前,下图是修改后

测试nacos启动脚本是否正确,指定端口为3344的单机版nacos

代码语言:javascript
复制
./startup.sh -p 3344 -m standalone

后面的启动集群测试没有通过,勿看,勿看,勿看

在startup.sh无误的情况下

在解压后的conf目录下的cluster.conf.example 复制一份并且重命名 为cluster.conf

修改cluster.conf,添加3台机器的IP和Nacos端口

启动三个节点进行测试

代码语言:javascript
复制
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555

Nacos持久化

如果启动多个默认的Nacos节点,那么节点可能存在不一致的情况,因为每一个Nacos节点是使用内嵌的derby数据库。为了解决这个问题,Nacos采用集中式存储的方式来支持集群化部署,目前只支持MySQL(原来自己存自己的,现在大家用一个数据库保持一致性)

持久化配置

在解压后的 conf下有一个nacos-mysql.sql 数据库文件

在MySQL创建名称为nacos_config的数据库并执行此文件

修改conf下的application.properties,添加下面的配置

代码语言:javascript
复制
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

在解压后的bin 目录下运作 startup.sh ,(如果是单机版添加单机版参数)

服务提供者案例

代码下载 https://github.com/cbeann/share/tree/master/springcloud-Nacos-demo

在springboot+web的基础之上进行如下操作

添加依赖

代码语言:javascript
复制
<!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

修改yml文件

代码语言:javascript
复制
server:
  port: 8001
spring:
  application:
    name: provider
  cloud:
    ###nocos注册中心
    nacos: 
      discovery:
        server-addr: localhost:8848   
management:
  endpoints:
    web:
      exposure:
        include: "*"

修改主启动类

代码语言:javascript
复制
@EnableDiscoveryClient

添加一个controller

代码语言:javascript
复制
@RestController
public class HelloController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/provider/get/{id}")
    public String getPayment(@PathVariable("id") Integer id) {
        return "nacos registry, serverPort: " + serverPort + "\t id" + id;
    }

}

测试本服务

http://localhost:8001/provider/get/1

可以正常请求并且Nacos注册中心有此服务

服务消费者案例

代码下载 https://github.com/cbeann/share/tree/master/springcloud-Nacos-demo

在springboot+web的基础之上进行如下操作

添加依赖

代码语言:javascript
复制
<!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

修改yml文件

代码语言:javascript
复制
server:
  port: 80
spring:
  application:
    name: consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

修改主启动类

代码语言:javascript
复制
@EnableDiscoveryClient

添加一个controller

代码语言:javascript
复制
@RestController
public class HelloController {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }


    @Autowired
    private RestTemplate restTemplate;

    //请求的服务名称
    private String serverURL = "http://provider";

    @GetMapping("/consumer/get/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL + "/provider/get/" + id, String.class);
    }

}

测试本服务

http://localhost/consumer/get/1

可以正常请求并且Nacos注册中心有此服务

Nacos服务配置中心案例(注意文中yml和yaml)

在springboot+web的基础之上进行如下操作

添加依赖

代码语言:javascript
复制
<!--   nacos config     -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

修改bootstrap.yml文件(☆☆☆☆☆)

注意:下面的配置中 file-extension的值yaml

代码语言:javascript
复制
server:
  port: 3377
spring:
  application:
    name: config-nacos-client
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848   #Nacos服务配置中心地址
        file-extension: yaml  #指定yml格式的配置

# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# config-nacos-clientt-dev.yaml

修改启动类

代码语言:javascript
复制
@EnableDiscoveryClient

添加业务逻辑controller

其中注解@RefreshScope很重要

代码语言:javascript
复制
@RestController
@RefreshScope//支持Nacos的动态刷新
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
    
}

在Nacos可视化界面中添加配置

其中命名规则为bootstrap.yml中值得拼接

代码语言:javascript
复制
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# config-nacos-clientt-dev.yaml

测试 http://localhost:3377/config/info

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nacos简介
  • Nacos安装(单机&集群)
    • 前提
      • window安装Nacos
        • Linux安装单机版Nacos
          • 步骤
          • 遇到的问题
        • Linux安装Nacos集群(伪集群)
          • 持久化配置
      • Nacos持久化
      • 服务提供者案例
      • 服务消费者案例
      • Nacos服务配置中心案例(注意文中yml和yaml)
      相关产品与服务
      腾讯云服务器利旧
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档