1 、nacos集群部署注册和配置中心

官方文档:

https://github.com/alibaba/nacos

https://nacos.io/zh-cn/docs/quick-start.html

部署环境

  • MySQL 5.6
  • Java  1.8
  • linux 7.0

1  nacos 集群

  • 修改cluster.conf.example,去掉example,配置三台机器的地址和端口号,默认端口号是8848
#example
192.168.31.250:8848
192.168.31.251:8848
192.168.31.252:8848
  • MySQL数据库,执行nacos-mysql.sql初始化数据库

 mysql -uroot -proot -Dnacos <   nacos-mysql.sql

  • 修改application.properties文件,里面修改数据库配置

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.31.187:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user.0=root
db.password.0=root

  • 启动:./bin/startup.sh

           bin目录,执行startup.sh,检查logs目录下的start.out启动日志。
           任何一个节点的8848端口的/nacos地址,进入nacos控制台,nacos集群的具体情况 。 http://192.168.31.250:8848/nacos/index.html

1 、nacos集群部署注册和配置中心_第1张图片


2  Nacos Discovery Starter 完成 Spring Cloud 应用的配置中心

Nacos 添加user 信息 ( dataId 为 nacos-config-example.properties ,group 为 DEFAULT_GROUP)
user.id=1
user.name=james
user.age=17    

1 依赖

 
     org.springframework.cloud
     spring-cloud-starter-alibaba-nacos-config
 

 
2 修改application.properties

server.port=18084   #可选
spring.application.name=nacos-config-example  #可选
spring.cloud.nacos.config.server-addr=ip:8848 #nacos IP 地址
management.endpoints.web.exposure.include=*   # 应用启动


3 配置

@RefreshScope //打开动态刷新功能
class SampleController {
     @Value("${user.name}")
     String userName;
     @Value("${user.age}")
     int age;
 }

4 访问    http://localhost:18084/user

1.Nacos Config 数据结构 ( dataId, group     :调用的接口 ConfigService.getConfig(String dataId, String group, long timeoutMs

  • Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置.
  • Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)。

2.Spring Cloud 应用获取数据 ( dataId     可以通过配置项 spring.cloud.nacos.config.file-extension来配置

在 Nacos Config Starter 中,dataId 的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension}

  •     prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  •     spring.profiles.active 即为当前环境对应的 profile
  •     file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

group

  •     group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

3.自动注入  (@Value 注解)

  • Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。
  • 在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。

4.动态刷新(给类添加 @RefreshScope@ConfigurationProperties注解

  • Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。
  • 如果需要对 Bean 进行动态刷新,给类添加 @RefreshScope 或 @ConfigurationProperties注解。

5.Endpoint 信息查看

  • Springboot支持这一点,Nacos Config也同时可以使用Endpoint来暴露信息。
  • 在maven 中添加 spring-boot-starter-actuator依赖,并在配置中允许 Endpoints 的访问。
  1.  Spring Boot 1.x 中添加配置 management.security.enabled=false
  2.  Spring Boot 2.x 中添加配置 management.endpoints.web.exposure.include=*
  3. Spring Boot 1.x 可以通过访问 http://127.0.0.1:18084/nacos_config 来查看 Nacos Endpoint 的信息。
  4. Spring Boot 2.x 可以通过访问 http://127.0.0.1:18084/actuator/nacos-config 来访问。

3 Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现。

1 添加依赖


     org.springframework.cloud
     spring-cloud-starter-alibaba-nacos-discovery

2 修改application.properties配置

spring.cloud.nacos.discovery.server-addr=192.168.31.250:8848
spring.application.name=service-provider  #可选
server.port=18082   #可选

3 服务注册和发现:   注解 @EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }  
}

4查询服务
http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=service-provider

1 、nacos集群部署注册和配置中心_第2张图片

你可能感兴趣的:(分布式)