Spring Cloud Nacos服务发现

时间:2020-06-18 22:58:24   收藏:0   阅读:80

Nacos 提供动态服务发现、服务配置、服务元数据及流量管理。

Nacos 的关键特性包括:

下载https://github.com/alibaba/nacos/releases

如果太慢可以下载这里:

https://download.csdn.net/download/lwyxiao/12502944?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159248190619724845025207%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159248190619724845025207&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~download~top_click~default-1-12502944.pc_v2_rank_dl_v1&utm_term=nacos-server-1.3.0.zip

解压安装包,直接运行bin目录下的startup.cmd

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

启动服务发现

 

 

技术分享图片

依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${latest.version}</version>
</dependency>

版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

application.properties 中配置 Nacos server 的地址:

server.port=8070
spring.application.name=service-provider

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

服务提供者

 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

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

    @RestController
    class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}

服务消费者

服务消费者可以通过 Nacos 的服务注册发现功能从 Nacos server 上获取到它要调用的服务。

在 application.properties 中配置 Nacos server 的地址:

server.port=8071
spring.application.name=service-consumer

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

 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。给 RestTemplate 实例添加 @LoadBalanced 注解,开启 @LoadBalanced 与 Ribbon 的集成:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

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

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }
}

 

源码:

https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example

如果是通过springboot注册服务,则

//    @NacosInjected
//    private NamingService namingService;
//
//    @Value("${server.port}")
//    private int serverPort;
//
//    @Value("${spring.application.name}")
//    private String applicationName;
//
//    @PostConstruct
//    public void registerInstance() throws NacosException{
//        namingService.registerInstance(applicationName,"127.0.0.1",serverPort);
//    }
//
//    @GetMapping(value = "/getInstance")
//    @ResponseBody
//    public List<Instance> getInstance(@RequestParam String serviceName) throws NacosException {
//        return namingService.getAllInstances(serviceName);
//    }

代码下载

服务提供和注册

服务消费

 

原文:https://www.cnblogs.com/starcrm/p/13160390.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!