(SSM+SE)SSO(3.1 注册和配置中心)

注册中心和配置中心

记录两套配置,一个是Nacos,既是注册中心也是配置中心.二是注册中心Eureka和配置中心config server.

Nacos:

Nacos的主要作用有两个:一是注册中心,二是配置中心.

下载和配置:

下载:
https://github.com/alibaba/nacos/releases
下载并解压后 打开nacos目录下的conf文件夹,比如我得路径是D:\nacos\conf
找到两个重要文件application.properties和nacos-mysql.sql.
首先打开application.properties,像我这样配置:

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=你的mysql用户名
db.password.0=你的mysql密码

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

然后将nacos-mysql.sql导入到你的mysql数据库中:先登录mysql,然后用source命令导入,如:

source d:/nacos-mysql.sql 

将source后面的路径换成你的文件路径就行了,这样一来nacos的相关数据都会存在你的数据库里.
导入了别忘了查看一下对不对.

以上步骤完成后可以尝试运行nacos,来到目录 D:\nacos\bin,进入cmd,然后输入startup.cmd -m standalone
等待nacos启动.
在这里插入图片描述
(可能需要一点时间)
在这里插入图片描述
(这就是成功了)
在chrome中输入localhost:8848/nacos查看.
用户名和密码都是nacos,你想用其他的用户名和密码都可以去数据库修改.(只不过密码要加密存储)
在这里插入图片描述
在这里插入图片描述

在项目中使用Nacos:

首先在common中添加Nacos的相关依赖:

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

然后配置auth和resource的yml文件:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yml  #介个系配置文件的格式啦

然后就可以啦,我们启动两个module测试:
在这里插入图片描述
来服务列表看看有没有注册成功.注册成功后想调用某个服务时就可以直接用服务名来调用了.

为什么要将服务注册到nacos?(为了更好的查找这些服务)
在Nacos中服务提供者是如何向Nacos注册中心(Registry)续约的?(5秒心跳)
对于Nacos服务来讲它是如何判定服务实例的状态?(检测心跳包,15,30)
服务启动时如何找到服务启动注册配置类?(NacosNamingService)
服务消费方是如何调用服务提供方的服务的?(RestTemplate)

然后说说配置中心:
我们可以将一些通用的配置放在nacos上,在项目启动时从nacos获取配置再启动,比如:日志,mysql的配置信息等等,这样维护起来就会容易不少.
首先将application.yml文件改名为bootstrap.yml,bootstrap.yml文件在配置中心的优先级更高,可以在启动时从配置中心获取配置.
在nacos中新建一个配置,注意配置格式要和配置文件的格式相同:
在这里插入图片描述
把原来的yml文件中的datasource部分注释掉
在这里插入图片描述
重新运行项目查看是否正常

这样一来就将配置文件放到了配置中心.
那如果我想要多个服务来调用同一个配置文件怎么操作?
我们再新建一个配置文件:
在这里插入图片描述
修改auth和resource的yml文件:

          #        共享配置
        shared-configs[0]:
          data-id: public-dataresource.yml
          group: Public-Conf
          refresh: true #默认false

重启服务测试.

配置中心一般都会配置什么内容?(可能会经常变化的配置信息,例如连接池,日志、线程池、限流熔断规则)
什么信息一般不会写到配置中心?(服务端口,服务名,服务的注册地址,配置中心)
项目中为什么要定义bootstrap.yml文件?(此文件被读取的优先级比较高,可以在服务启动时读取配置中心的数据)
Nacos配置中心宕机了,我们的服务还可以读取到配置信息吗?(可以从内存,客户端获取了配置中心的配置信息以后,会将配置信息在本地内存中存储一份.)
微服务应用中我们的客户端如何获取配置中心的信息?(为了考虑性能我们的服务一般首先会从内存读取配置信息,同时我们的微服务还可以定时向nacos配置中心发请求拉取(pull)更新的配置信息,但是在一定时间间隔内还可能会出现不一致的配置,所以nacos服务端而言,当配置变化时,会通知客户端然后更新客户端.)
微服务应用中客户端如何感知配置中心数据变化?(当数据发生变化时,nacos找到它维护的客户端,然后通知客户端去获取更新的数据,客户端获取数据以后更新本地内存,并在下次访问资源时,刷新@Value注解描述的属性值,但是需要借助@RefreshScope注解对属性所在的类进行描述)
服务启动后没有从配置中心获取我们的配置数据是什么原因?(依赖,配置文件名字bootstrap.yml,配置中心的dataId名字是否正确,分组是否正确,配置的名字是否正确,缩进关系是否正确,假如是动态发布,类上是否有@RefreshScope注解)
你项目中使用的日志规范是什么?(SLF4J)
你了解项目中的日志级别吗?(debug,info,error,…,可以基于日志级别控制日志的输出)
Nacos配置管理模型的背景?(环境不同配置不同)
Nacos配置中的管理模型是怎样的?(namespace,group,service/data-id)
Nacos客户端(微服务)是否可以读取共享配置?(可以)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值