Spring Cloud Alibaba入门之Nacos作为注册中心使用

一、Nacos注册中心的部署

1、下载

  GitHub下载地址:https://github.com/alibaba/nacos/releases (一些原因,下载速度较慢)。
  百度网盘下载路径:https://pan.baidu.com/s/1186nmlqPGows9gUZKAx8Zw 验证码:rest。

  提供了两个版本,一个基于Linux版本的,一个基于Windows版本的,如下所示:

  • Windows nacos-server-1.3.2.zip

  • Linux nacos-server-1.3.2.tar.gz

2、解压,运行
#解压
tar -zxvf nacos-server-1.3.2.tar.gz
#运行(单机模式)
./bin/startup.sh -m standalone

运行结果如下:

3、访问http://127.0.0.1:8848/nacos/,默认用户名密码均为:nacos,如下:

登录后,出现如下界面,说明nacos部署成功了。
在这里插入图片描述

二、实现一个服务提供者和消费者,验证注册中心的注册与发现

  构建了注册服务中心,实现一个服务提供者和消费者(Spring Boot应用),验证注册中心的注册与发现功能。

  Demo的地址:传送门。其中,nacos-service是服务提供者,nacos-consumer是服务消费者。

1、nacos-service服务提供者

1.1、引入nacos的依赖(省略了文件的其他内容)

<!--引入Nacos的服务注册与发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

1.2、定义启动类(普通的Spring Boot启动类),添加注册发现注解@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class NacosServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosServiceApplication.class, args);
    }

}

1.3、配置文件application.properties

spring.application.name=qriver-nacos-server
server.port=8001
#注册服务中心的地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

1.4、定义一个API接口(对外提供服务),就是一个普通的Controller类。

@RestController
public class ServiceController {
    @GetMapping("/service")
    public String service(@RequestParam String name) {
        return "hi," + name;
    }
}

1.5、启动该项目,再刷新注册中心页面,发现该服务已经在服务列表中了,说明服务注册成功了。

注:服务提供者和消费者都已经启动了。

2、nacos-consumer消费者

  消费者应用和服务提供者类似,只是实现了一个调用服务者提供者接口的方法,如下所示:

@RestController
public class ConsumerController {

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @GetMapping("/consumer")
    public String consumer(@RequestParam String name) {
        // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
        ServiceInstance serviceInstance = loadBalancerClient.choose("qriver-nacos-server");
        String url = serviceInstance.getUri() + "/service?name=" + name;
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(url, String.class);
        return "选用服务实例 : " + url + ", 返回结果 : " + result;
    }
}

  启动消费者应用(也会注册到注册中心中),然后通过浏览器或者postman访问http://127.0.0.1:8100/consumer?name=hsh,会返回方法的调用情况,并显示调用了服务提供者的实例。
在这里插入图片描述

  其中,使用了LoadBalancerClient接口,实现了负载均衡,当有多个服务提供者实例时,就会轮询的方式访问各个服务提供者实例。

  启动多实例的方式请参考《IntelliJ Idea如何为一个项目启动多个项目实例》

  启动多实例后,在注册中心的展示如下:
在这里插入图片描述

然后点开详情,可以看到如下信息,可以看到有两个实例的信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DD6C0aLk-1608556826925)(http://hsh.hnzwdz.com/20201015151102.png)]

猜你喜欢

转载自blog.csdn.net/hou_ge/article/details/111500202