Spring-cloud-Alibaba-Nacos

Spring-cloud-Alibaba-Nacos

前言

由于公司重构系统,所用技术是基于Spring-cloud-Alibaba全家桶,所以在工作之余研究该项技术。

学习资料

程序猿DD Spring Cloud Aliabab专题 专题博客
Nacos文档

简介

可参考Nacos官网简介内容:Nacos简介

安装Nacos

下载地址:1.0版本Nacos下载链接
下载完成后,解压,不同操作系统执行命令不同

Linux/Unix/Mac:sh startup.sh -m standalone
Windows:cmd startup.cmd -m standalone

根据上述命令启动Nacos后,访问:http://127.0.0.1:8848/nacos/,可以进入Nacos的服务管理页面,具体如下;
Nacos控制台

构建应用接入Nacos注册中心

Nacos启动后,我们就可以使用它作为注册中心来管理接口(需要提供者、消费者两个应用)

服务提供者

一:创建Spring-boot项目 名为:spring-cloud-alibaba-dubbo-provider
二:添加 pom.xml 文件,加入必要的依赖配置,如:

<parent>
		<!-- 定义spring boot的版本 -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
</parent>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
		<!--spring cloud的版本以及spring cloud alibaba的版本,
		由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入--> 
    <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

三:编写一个http接口

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @Autowired
    private ConfigurableApplicationContext applicationContext;

    @Value("${server.port}")
    private Integer port;

    @Resource
    private DiscoveryClient discoveryClient;

    @GetMapping("/demo")
    public Object demo(String instance) {
        return "port= " + port + ", name=" + applicationContext.getEnvironment().getProperty("user.name") + ", age=" + applicationContext.getEnvironment().getProperty("user.age")
                + "discoveryClient" + discoveryClient.getInstances(instance);
    }

}

注 :在启动类需要添加@EnableDiscoveryClient 注解作用是开启Spring Cloud的服务注册与发现
四 :配置服务名称和Nacos地址

spring:
  application:
    name: spring-cloud-alibaba-dubbo-provider
  cloud:
    nacos:
      discovery:
        server-addr: 47.104.219.70:8848
server:
  port: 8899

五:启动上面创建的应用
在应用启动好之后,我们可以在控制台或日志中看到如下内容,代表已经注册成功:

INFO 10476 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished

在启动都ok之后,我们可以访问Nacos的管理页面http://127.0.0.1:8848/nacos/来查看服务列表
Nacos服务列表显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。点击详情,我们还能看到每个服务具体的实例信息:
服务详细信息

服务消费者

下面需要构建一个应用来消费已经注册成功的服务
第一步:创建一个Spring Boot应用,命名为: spring-cloud-alibaba-dubbo-consumer
第二步:编辑pom.xml中的依赖内容,与上面服务提供者的一样即可。
第三步:创建应用主类,并实现一个HTTP接口,在该接口中调用服务提供方的接口。

@EnableDiscoveryClient
@SpringBootApplication
public class TestApplication {

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

    @Slf4j
    @RestController
    static class TestController {

        @Autowired
        LoadBalancerClient loadBalancerClient;

        @GetMapping("/test")
        public String test() {
            // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
            ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
            String url = serviceInstance.getUri() + "/hello?name=" + "didi";
            RestTemplate restTemplate = new RestTemplate();
            String result = restTemplate.getForObject(url, String.class);
            return "Invoke : " + url + ", return : " + result;
        }
    }
}

第四步:配置服务名称和Nacos地址,让服务消费者可以发现上面已经注册到Nacos的服务。

spring.application.name=alibaba-nacos-discovery-client-common
server.port=9000

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步:启动服务消费者,然后通过curl或者postman等工具发起访问,下面以curl为例:

request url:http://132.147.3.156:8899/provider/demo
发布了8 篇原创文章 · 获赞 0 · 访问量 45

猜你喜欢

转载自blog.csdn.net/weixin_41213402/article/details/105369546