微服务SpringClout Alibaba——Nacos注册中心、配置中心和Nacos集群(2)

中文文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

Nacos中文文档:https://nacos.io/zh-cn

 

微服务SpringCloudAlibaba——简介(1)

微服务SpringClout Alibaba——Nacos注册中心、配置中心和Nacos集群(2)

微服务SpringClout Alibaba——Sentinel流控、熔断、降级(3)

微服务SpringClout Alibaba——Seata分布式事务(4)

微服务SpringCloud——GateWay网关(5)

 

目录

Nacos简介

Nacos 的关键特性包括:

一、Nacos作为服务注册中心

1、安装并运行Nacos

2、创建应用注册到Nacos

3、建立一个消费服务,测试负载均衡

二、使用Nacos作为配置中心

1、代码

2、在Nacos添加配置

3、Nacos的动态刷新配置

三、Nacos集群和持久化配置


Nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 的关键特性包括:

  1. 服务发现和服务健康监测:支持基于 DNS 和基于 RPC 的服务发现,对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
  2. 动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
  3. 动态DNS服务:动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  4. 服务及其元数据管理:支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

一、Nacos作为服务注册中心

1、安装并运行Nacos

我们先从官网上下载Nacos,官网推荐版本为:1.4.1,下载地址https://github.com/alibaba/nacos/releases/tag/1.4.1

环境:64 bit JDK 1.8+

下载完成后解压:tar -xvf nacos-server-1.4.1.tar.gz

进入nacos/bin目录下,执行如下命令运行Nacos:sh startup.sh -m standalone(单机模式运行)

运行成功后,访问http://localhost:8848/nacos可以查看Nacos的主页,默认账号密码都是nacos。

2、创建应用注册到Nacos

使用Spring Cloud Alibaba 的组件都需要在父pom.xml中添加如下的配置:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

在某块的pom.xml中添加如下的配置:

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

修改bootstrap.properties文件,配置nacos相关信息:

server.port=9001
spring.application.name=nacos-payment
spring.cloud.nacos.discovery.server-addr=192.168.5.199:8848
management.endpoints.web.exposure.include=*

运行模块:

多起一个nacos-payment(9002)的服务:

3、建立一个消费服务,测试负载均衡

测试nacos就默认支持负载均衡:

修改消费服务的pom.xml文件:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

修改bootstrap.properties文件:

server.port=81
spring.application.name=nacos-order-consumer
spring.cloud.nacos.discovery.server-addr=192.168.5.199:8848
service-url.nacos-user-service=http://nacos-payment

使用RestTemplate调用,把RestTemplate加入到容器中:

@Configuration
public class ApplicationContextConfig {

    //@LoadBalanced为轮询负载
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

抒写controller文件:

@RestController
public class OrderConsumerController {

    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serviceUrl;

    @GetMapping("/consumer/nacos/payment/{id}")
    public String getPayment(@PathVariable("id") Integer id){
        return restTemplate.getForObject(serviceUrl+"/nacos/payment/"+id,String.class);
    }

}

登录Nacos查看是否已经注册进去:

消费是否实现了负载均衡:http://localhost:81/consumer/nacos/payment/100

二、使用Nacos作为配置中心

1、代码

在pom.xml中添加相关的依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

添加配置文件application.properties,配置测试环境(dev)

spring.profiles.active=dev

添加配置文件bootstrap.properties,主要是对Nacos的作为配置中心的功能进行配置

server.port=9003
spring.application.name=nacos-config-client
spring.cloud.nacos.discovery.server-addr=192.168.226.136:8848
spring.cloud.nacos.config.server-addr=192.168.226.136:8848
spring.cloud.nacos.config.file-extension=properties

创建一个controller进行测试

@RestController
@RefreshScope
public class NacosConfigController {

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

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

2、在Nacos添加配置

先说下Nacos配置文件dataId的构成

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型

比如这里Nacos的dataId就是:

nacos-config-client-dev.properties

填写配置示意图

启动项目,访问:http://localhost:9003/config/info

3、Nacos的动态刷新配置

当我们增加@RefreshScope时,修改Nacos中的配置信息,再次调用查看配置的接口,就会发现配置已经刷新,Nacos和Consul一样都支持动态刷新配置。当我们在Nacos页面上修改配置并发布后,应用会刷新配置并打印如下信息

2021-03-10 01:05:14.881  INFO 17468 --- [68.226.136_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-nacos-config-client-dev.properties'}, BootstrapPropertySource {name='bootstrapProperties-nacos-config-client.properties'}]

三、Nacos集群和持久化配置

官网推荐的集群部署的方式:

通过官网推荐的结构图最少需要以下配置集群,nginx+3Nacos+mysql

Nacos在默认的情况下,使用的是内嵌的数据库derby;

当我们使用集群的方式时,就必须对数据进行持久化,官方在Nacos的0.7版本后加入了Mysql数据库进行持久化,在生成环境,Mysql要使用主备的模式、以及集群的数据库。

1、进入Nacos的文件夹在Mysql执行脚本,/usr/local/nacos/conf,在数据库中执行nacos-mysql.sql脚本

2、配置Nacos数据源,即/usr/local/nacos/conf下的application.properties文件,增加Mysql数据的相关信息,使其从内嵌的数据库derby转为Mysql数据库

spring.datasource.platform=mysql

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

3、Nacos集群要配置Nacos的ip地址

cd /usr/local/nacos/conf
cp cluster.conf.example cluster.conf
vim cluster.conf

填写Nacos集群地址,没台机器都要配置

192.168.226.134:8848
192.168.226.135:8848
192.168.226.136:8848

4、启动Nacos,进入/usr/local/nacos/bin执行:sh startup.sh

5、通过执行nginx进行反向代理

upstream cluster{
        server 192.168.226.134:8848;
        server 192.168.226.135:8848;
        server 192.168.226.136:8848;
    }

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值