SpringcloudAlibaba-Nacos

前言

目前国内主要都是使用 SpringcloudAlibaba的Nacos组件 来搭建服务注册中心和配置中心,本文主要介绍Nacos作为服务中心和配置中心的基本使用。

服务注册

使用Nacos的服务注册功能后,我们可以不用自己搭建服务端了,Nacos本身就已经提供了服务端的实现。我们只需要把微服务注册到Nacos服务端即可,并且Nacos本身还集成了Ribbon,所以也具有负载均衡的功能。

服务提供者

  • 导入依赖

    <dependency>
    	<groupId>com.alibaba.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
  • 在yml文件添加如下配置

    spring:
      application:
        name: nacos-provider-payment9001
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #配置nacos地址
    
  • 主启动类添加注解

    package cn.pigman.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosDiscoveryMain9001 {
        public static void main(String[] args) {
            SpringApplication.run(NacosDiscoveryMain9001.class, args);
        }
    }
    

服务消费者

  • 导入依赖

    <dependency>
    	<groupId>com.alibaba.cloud</groupId>
    	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
  • 在yml文件添加如下配置

    server:
      port: 83
    
    spring:
      application:
        name: nacos-consumer-order83
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
    
    #消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
    service-url:
      nacos-user-service: http://nacos-provider-payment9001
    
  • 主启动类添加注解

    package cn.pigman.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosOrderMain83 {
        public static void main(String[] args) {
            SpringApplication.run(NacosOrderMain83.class, args);
        }
    }
    
  • 配置类

    package cn.pigman.springcloud.config;
    
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    
    @Configuration
    public class ApplicationContextBean
    {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate()
        {
            return new RestTemplate();
        }
    }
    
  • 测试业务类controller

    @RestController
    @RequestMapping("/order")
    @Slf4j
    public class OrderController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @Value("${service-url.nacos-user-service}")
        private String serverUrl;
    
        @GetMapping("/consumer/payment/nacos/{id}")
        public String paymentInfo(@PathVariable("id") Long id)
        {
            return restTemplate.getForObject(serverUrl+"/payment/nacos/"+id,String.class);
        }
    }
    

配置中心

Nacos不仅帮我们搭建好了服务注册中心,还帮我们搭建好了配置中心,我们只需要将微服务注册到Nacos上面,并且在Nacos上面创建好配置文件,就可以让微服务读取配置文件。

202210091429670

集群和持久化配置

Nacos默认内嵌了一个数据库Derby,我们在Nacos上的一些需要持久化的数据(创建的配置文件)都会被保存到该数据库中。但在集群的环境下,实现Derby来保存数据可能会出现数据不一致的问题,所以最好还是修改一下Nacos持久化的配置。

Nacos支持我们将其内嵌的Derby数据库换成Mysql(值支持Mysql)来进行持久化的操作。

基于Linux搭建集群Nacos

  • 执行 nacos-server-1.4.4\nacos\conf 目录下的nacos-mysql.sql文件

    202210091429671

  • 在application.properties文件添加如下配置

    202210091429672

    spring.datasource.platform=mysql
     
    db.num=1
    db.url.0=jdbc:mysql://192.168.228.132:3306/nacos_config&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
    db.user=root
    db.password=lzb
    
  • 配置nacos集群配置文件 cluster.conf

    202210091429673

    192.168.228.132:3333
    192.168.228.132:4444
    192.168.228.132:5555
    
  • 修改Nacos的启动脚本,使其能够接收不同的端口

    202210091429674

    202210091429675

  • 分别以不同端口启动三台Nacos服务

    202210091429676

  • 修改nginx配置文件,让其作为负载均衡器

    202210091429677

    upstream cluster{
            server 127.0.0.1:3333;
            server 127.0.0.1:4444;
            server 127.0.0.1:5555;
    }
    
    server {
            listen       1111;
            server_name  localhost;
            location / {
                proxy_pass http://cluster;
            }
    }
    
  • 启动Nginx

    ./nginx -c /usr/local/nginx/conf/nginx.conf
    
  • 测试通过Nginx访问Nacos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嵌_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值