如何快速的写出一个SpringCloudAlibaba-Nacos的Quick Start

搭建Nacos环境:

1.首先先安装Nacos

2.在Nacos安装目录下打开bin文件夹

3.在搜索栏输入cmd打开cmd命令界面输入 startup -m standalone (单例启动Nacos)

(如果要搭建Nacos集群那么要用集群启动,并且将Conf文件夹里面的sql语句注入数据库

并且将application.properties中的数据库配置配置好)

依赖方面:

注意:SpringBoot用2.3.9.RELEASE版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.9.RELEASE</version>
    <relativePath/>  <!-- lookup parent from repository -->
</parent>
<!-- springCloud -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Hoxton.SR10</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--nacos的管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--springboot-web项目启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--nacos项目依赖配置-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<!--nacos配置中心依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

代码方面:

(1)消费者项目

1.配置文件:

注意:application改为bootstrap(bootstrap的启动优先级高于application)

如果为application.yml启动的时候启动会有问题

(关于springcloud的项目都要改为bootstrap)

server:
  port: 8082
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
  application:
    name: test1

将服务注入到Nacos中需要写接口

@RestController
//@RefreshScope用于自动刷新Nacos中的配置文件(当Nacos中有改动就会自动刷新载入到项目,免于重新启动项目)
@RefreshScope
public class orderservice {
   @Autowired
    private DiscoveryClient discoveryClient;
    //使用Springboot提供的RestTemplate用于连接生产者项目
   @Autowired
    private RestTemplate restTemplate;
   @Autowired
   private RotationUtil rotationUtil;
   //载入nacos的云端配置文件
   @Value("${wen.name}")
   private String name;
    //↓下面的接口是用户通过该接口来访问消费者项目的接口
   @RequestMapping("getOrder")
    public String getOrder(){
       //通过服务名test1获取nacos里面注册的服务列表
       List<ServiceInstance> instances = discoveryClient.getInstances("test1");
       //通过RotaionUtil类的轮询负载均衡算法获取是用集群的那个节点来处理
       ServiceInstance serviceInstance = rotationUtil.getServiceInstance(instances);
       //从获取的集群节点获取它的uri链接地址,用于访问项目
       URI uri = serviceInstance.getUri();
       String forObject = restTemplate.getForObject(uri + "/test", String.class);
       return forObject;
   }
}

RotationUtil类

@Component
public class RotationUtil {
    //定义一个原子类AtomicInteger给他的初始值设置为0
    private AtomicInteger AtomicInteger =new AtomicInteger(0);

    public ServiceInstance getServiceInstance(List<ServiceInstance> serviceInstances){
        //通过AtomicInteger.incrementAndGet()每次获取都会自增1,且AtomicInteger在项目运行阶段,
        //只要不重启,值会一直存在               
        int count = AtomicInteger.incrementAndGet();
        //设置他的下表为count取余list集合serviceInstances的大小
        int index = count % serviceInstances.size();
        //获取集合中的指定集合
        return serviceInstances.get(index);
    }
}

(2)生产者项目

        1.配置文件

server:
  port: 8082
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
  application:
    name: test1

生产者的Controller:

@RestController
public class testservice {
    @RequestMapping("test")
    public String test(){
        return "我是服务端8082";
    }
}

可以将生产者项目启动多个,改动端口号,来实现负载均衡

如此Nacos的生产者消费者项目的负载均衡就搭建好了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值