SpringCloub02-服务配置中心nacos

目录

Nacos简介

一、nacos安装和启动

1.1、上传linux解压安装包

1.2、启动和关闭

1.3、访问

二、nacos注册中心(存放服务)

2.1、服务注册

2.2、服务调用

三、naocs配置中心(存放配置文件)

3.1、在 Nacos 平台中添加配置信息

3.2、项目工程中获取配置

四、配置、服务隔离

五、Nacos集群和持久化

5.1、Ncaos持久化

5.1.1.切换数据库

5.1.2.初始化数据库

5.1.3.测试

5.2、Ncaos集群

5.2.1.部署架构图

5.2.2.集群搭建

5.2.3.配置代理服务

5.2.4.测试

六、nacos开机启动(了解)

        1、编写开机启动文件 

        2、修改nacos的bin目录下的starup.sh

        3、设置开机自起


Nacos简介

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现配置管理服务管理平台。

一、nacos安装和启动

1.1、上传linux解压安装包

[root@localhost ~]# cd /usr/upload
[root@localhost upload]# tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local	

1.2、启动和关闭

启动:

[root@localhost local]# cd nacos/bin/
[root@localhost bin]# ./startup.sh -m standalone #非集群模式启动
... ...
nacos is starting with standalone
nacos is starting,you can check the /usr/java/nacos/logs/start.out

关闭:

[root@localhost bin]# ./shutdown.sh
The nacosServer(3543) is running...
Send shutdown request to nacosServer(3543) OK
[root@localhost bin]

1.3、访问

浏览器访问http://192.168.***.***:8848/nacos,默认用户名/密码为: nacos/nacos

二、nacos注册中心(存放服务)

2.1、服务注册

2.1.0.启动nacos

2.1.1.工程引入依赖

spring-cloud-starter-alibaba-nacos-discovery

pom.xml

        <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2.1.2.配置文件添加nacos配置

配置nacos地址和端口号,设置注册服务名称

application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.209.129:8848 #nacos服务的地址
  application:
    name: nacos-provider #向注册中心注册的名字

2.1.3.Springboot启动类添加注解

@EnableDiscoveryClient //向注册中心注册该服务,并可以获取其他服务的调用地址

@SpringBootApplication
@EnableDiscoveryClient//向注册中心注册该服务,并可以获取其他服务的调用地址
public class ProviderApp {
​
    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class);
    }
}

2.1.4.启动测试

效果:

2.2、服务调用

2.2.1.IOC容器注入RestTemplate

@Configuration
public class ConfigBean {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

2.2.2.controller注入DiscoveryClient

通过DiscoveryClient获取nacos中注册服务信息,调用服务

@RestController
@RequestMapping(value = "/consumer")
public class ConsumerController {
    //访问Rest服务的客户端
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping(value="/getUserById/{id}")
    public User getUserById(@PathVariable Integer id){
        //获取nacos中注册的所有服务信息
        List<String> serviceList = discoveryClient.getServices();
        for (String service : serviceList) {
            System.out.println(service);
        }
        //获取nacos中注册的指定服务信息
        ServiceInstance instance = discoveryClient.getInstances("nacos-provider").get(0);
        String serviceUrl = instance.getHost() + ":" + instance.getPort();
        //调用服务
        String url = "http://" + serviceUrl + "/provider/getUserById/"+id;
        return restTemplate.getForObject(url, User.class);
    }
}

注册中心作用
        ①解决地址硬编码
        ②进行负载均衡
 

三、naocs配置中心(存放配置文件)

3.1、在 Nacos 平台中添加配置信息

配置管理==>配置列表==>新建配置

 示例:

3.2、项目工程中获取配置

3.2.1.工程引入依赖

spring-cloud-starter-alibaba-nacos-config

pom.xml

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

3.2.2.配置文件添加nacos配置

bootstrap.yml

  • 注意:

    • 客户端配置文件的名称必须为bootstrap.yml

  • bootstrap/ application 的应用场景:

    • bootstrap.ymlapplicaton.yml 优先加载,应用于系统级别参数配置,一般不会变动;

    • application.yml应用于SpringBoot项目的自动化配置;

示例:

spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.5.131:8848 #nacos服务的地址
        file-extension: yaml #后缀名,只支持 properties 和 yaml 类型
        prefix: nacos-config #文件名,如果没有配置则默认为 ${spring.appliction.name}

3.2.3.Springboot启动类添加注解

@EnableDiscoveryClient //向注册中心注册该服务,并可以获取其他服务的调用地址

@SpringBootApplication
@EnableDiscoveryClient//向注册中心注册该服务,并可以获取其他服务的调用地址
public class ProviderApp {
​
    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class);
    }
}

 3.2.4.编写配置类读取nacos中的设置的配置信息

@RefreshScope //重新从BeanFactory获取一个新的实例(该实例使用新的配置)

@RestController
@RefreshScope //重新从BeanFactory获取一个新的实例(该实例使用新的配置)
public class ConfigController {
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.type}")
    private String type;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        System.out.println(this);
        String configInfo = driverClassName+"<br>"+url+"<br>"+username+"<br>"
                +password+"<br>"+type;
        return configInfo;
    }
}

配置中心作用:
        ①集中管理配置文件
        ②动态更新配置文件

四、配置、服务隔离

 

获取配置集需要指定:

  1. nacos服务地址,必须指定

  2. namespace,如不指定默认public

  3. group,如不指定默认 DEFAULT_GROUP

  4. dataId,必须指定

五、Nacos集群和持久化

Nacos默认有自带嵌入式数据库derby,但是如果做集群模式的话,就不能使用自己的数据库不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql

5.1、Ncaos持久化

nacos集群的前置准备,作用:统一数据

5.1.1.切换数据库

打开nacos安装目录,修改conf/application.properties文件,增加支持mysql数据源配置

[root@localhost ~]# vim /usr/local/nacos/conf/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://192.168.5.128:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1111

5.1.2.初始化数据库

mysql中创建nacos数据库并导入nacos-mysql.sql

nacos-mysql.sql在nacos安装目录conf文件夹下  

5.1.3.测试

重启nacos测试nacos所有写到嵌入式数据库的数据是否都写到了mysql:

5.2、Ncaos集群

5.2.1.部署架构图

5.2.2.集群搭建

1.找到conf/cluster.conf.example ,将其复制改名为 conf/cluster.conf ,并修改内容如下:

[root@localhost ~]# cd /usr/local/nacos/conf
[root@localhost conf]# cp cluster.conf.example cluster.conf

[root@localhost conf]# vim cluster.conf

单机模拟集群:

        1、复制3份naocs

[root@localhost bin]# cd /usr/local
[root@localhost local]# mkdir nacos_cluster
[root@localhost local]# cp -r nacos nacos_cluster/nacos_8848
[root@localhost local]# cp -r nacos nacos_cluster/nacos_8849
[root@localhost local]# cp -r nacos nacos_cluster/nacos_8850

        2、修改3个节点的ip,端口号

conf/application.properties 中的端口号分别改为
            vim /usr/local/nacos_cluster/nacos_8849/conf/application.properties
                server.port=8849
            vim /usr/local/nacos_cluster/nacos_8850/conf/application.properties
                server.port=8850

        3、启动3个节点 


            cd /usr/local/nacos_cluster/nacos_8848/bin
            ./startup.sh
            ... ...

        4.测试

5.2.3.配置代理服务

5.2.3.1.安装nginx

安装c语言环境

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载nginx

[root@localhost upload]# wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

解压

[root@localhost upload]# tar -zxvf nginx-1.12.0.tar.gz

配置安装路径

[root@localhost upload]# cd nginx-1.12.0

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx

编译并安装

[root@localhost nginx-1.12.0]# make && make install

 启动和关闭

        启动:
               [root@localhost sbin]# ./nginx

                 查看日志文件夹,出现nginx.pid文件启动成功
        关闭:
               [root@localhost sbin]# ./nginx -s stop
        重启:
               [root@localhost sbin]# ./nginx -s reload
 

5.2.3.2.配置nginx代理nacos集群

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

upstream nacos {
        server 192.168.5.131:8848;
        server 192.168.5.131:8849;
        server 192.168.5.131:8850;
    }

server {
        listen 80;
        server_name  localhost; 

        location / {
                # root   html;
                # index  index.html index.htm;
                proxy_pass http://nacos;
                }
        }

5.2.4.测试

1.启动nacos集群

[root@localhost upload]# cd /usr/local/nacos_cluster/nacos_8848/bin
[root@localhost bin]# ./startup.sh
[root@localhost bin]# cd /usr/local/nacos_cluster/nacos_8849/bin
[root@localhost bin]# ./startup.sh
[root@localhost bin]# cd /usr/local/nacos_cluster/nacos_8850/bin
[root@localhost bin]# ./startup.sh

2.启动nginx

[root@localhost nginx]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx 

3.将微服务注册到Nacos集群

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.5.131 #nginx绑定的域名
  application:
    name: nacos-provider #向注册中心注册的名字

4.访问nacos集群

启动服务,并通过nginx访问nacos集群:http://192.168.5.131/nacos

六、nacos开机启动(了解)

        1、编写开机启动文件 

 [root@localhost ~]# vim /lib/systemd/system/nacos.service

内容: 

[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

        2、修改nacos的bin目录下的starup.sh

#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/jdk1.8.0_191 
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
#[ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME

        3、设置开机自起

[root@localhost ~]# systemctl daemon-reload        #重新加载服务配置
[root@localhost ~]# systemctl enable nacos.service #设置为开机启动
[root@localhost ~]# systemctl start nacos.service  #启动nacos服务
[root@localhost ~]# systemctl stop nacos.service   #停止nacos服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值