Spring Cloud Alibaba Nacos 实现服务注册和配置中心

1.安装Nacos

  1. 下载Nacos https://github.com/alibaba/nacos/releases/tag/1.3.1
  2. 解压
  3. 进入bin目录,执行 startup.cmd
  4. 访问 localhost:8848/nacos 进入nacos 界面

2.Nacos 作为服务注册中心

  1. 引入nacos jar 包
     <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>

    2.主启动类上加入注解:@EnableDiscoveryClient

         3. application.yml 配置

server:
  port: 9002
spring:
  application:
    name: nacos-provider-payment-service
  cloud:  #nacos 配置
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos server地址
management:  #向外暴露监控接口
  endpoints:
    web:
      exposure:
        include: "*"

 登录 localhost:8848/nacos 可以看到该微服务已经注册入nacos了

 

3.Nacos 作为配置中心

         1.引入 jar 包

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

         2.bootstrap.yml 

server:
  port: 8083
spring:
  application:
    name: consumer-order83
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos 的地址
      config:
        server-addr: localhost:8848 #nacos作为配置中心的地址
        file-extension: yaml #指定配置文件的格式(后缀名)
        group: DEFAULT_GROUP # 指定配置文件在 Nacos 中所在的组名
        namespace: public   # 指定配置文件在 Nacos 中所在的命名空间
#nacos默认配置文件名称组成公式
#${spring.application.name}${spring.profiles.active}-${spring.cloud.nacos.config.file-extension} 
#示例 consumer-order83-dev.yaml
management:
  endpoints:
    web:
      exposure:
        include: "*"

         3.在controller中加入@RefreshScope注解

package com.atguigu.springcloudalibaba.controller;

import com.atguigu.springcloudalibaba.service.OrderFeignService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RefreshScope //加入此注解启动自动刷新配置功能
public class OrderNacosController {
    @Resource
    private OrderFeignService orderFeignService;
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/payment/port/{id}")
    String paymentPortId(@PathVariable(value = "id") int id) {
        return orderFeignService.selectPayment(id);
    }

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

      通过以上的配置可实现NOCAS配置中心与自动刷新功能,在nacos server上修改了配置 nacos 客户端可以及时的被通知

4.Nacos 集群与持久化配置。

   1.持久化配置

      1.首先在mysql 中新建nacos_config数据库,然后执行nacos/conf中的naccos-mysql.sql 脚本进行建表 。

       2.在/nacos/conf/application.properties 文件最后添加 mysql 数据库的配置

spring.datasource.platform=mysql

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

 

  2.集群配置    

   3.复制cluster.conf.example  重命名为cluster.conf,在该配置文件中加入nacos集群节点的IP与端口号。例如

192.168.1.1:3001   #注意IP不能写127.0.0.1 之类,直接写真实IP

192.168.1.1:3002

192.168.1.1:3003   

       4.如果在同一台机器上配置集群环境 则需要修改 startup.sh文件,否则调用startup.sh启动nacos时不知道启动的时哪一个集群节点

该代码在第五十行左右 该代码在文件最后

修改过后调用  ./startup.sh -p 3001  使用 -p 3001 来启动指定端口的集群节点。 

      5.使用nginx 进行nacos负载均衡,配置nginx.conf文件

 

 

5.Nacos 同时支持AP(高可用/分区容错)与CP(数据一致性/分区容错)两种模式,可通过发送POST请求进行配置

配置CP:

NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP

配置AP :

NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=AP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值