nacos的服务注册于发现。

这个要求服务统一注册到注册中心,然后调用的时候就不需要通过ip来调用,直接通过服务名即可。

服务提供者

  1. pom.xml配置,需要spring-cloud-starter-alibaba-nacos-discovery 依赖

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    </dependencies>
  2. 指定一下EnableDiscoveryClient 注解

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
    public static void main(String[] args) {
    SpringApplication.run(ProviderApplication.class,args);
    }
    }
  3. application.yaml配置如下,这里需要指定spring.application.name

    spring:
    application:
    name: lou-nacos-service-provider
    cloud:
    nacos:
    discovery:
    server-addr: 127.0.0.1:8848
    server:
    port: 8080
  4. 写个controller,用于测试

    @RestController
    public class TestController {
    @GetMapping("hello/{name}")
    public String sayHello(@PathVariable(value = "name") String name) {
    return "hello " + name;
    }
    }
  5. 启动application,可以在nacos后台的服务列表里面看到注册的服务。

服务消费者---基于RestTemplate

  1. pom.xml配置和provider一样。

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    </dependencies>
  2. 指定一下@EnableDiscoveryClient注解

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ConsumerApplication {
    public static void main(String[] args) {
    SpringApplication.run(ConsumerApplication.class,args);
    }
    }
  3. application.yaml配置和provider的基本一样,除了spring.application.name

    spring:
    application:
    name: lou-nacos-service-consumer
    cloud:
    nacos:
    discovery:
    server-addr: 127.0.0.1:8848
    server:
    port: 8070
  4. consumer去调用provider,这里用基于HttpClient的RestTemplate,所以需要先定义个RestTemplate Bean。需要指定@LoadBalanced

    @Configuration
    public class ConsumerConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
    return new RestTemplate();
    }
    }
  5. 写controller。方法没有写具体ip,而是用了服务名lou-nacos-service-provider来访问。

    @RestController
    public class TestController {
    private final RestTemplate restTemplate; @Autowired
    public TestController(RestTemplate restTemplate) {
    this.restTemplate = restTemplate;
    } @GetMapping("hello/{name}")
    public String hello(@PathVariable("name") String name) {
    return restTemplate.getForObject("http://lou-nacos-service-provider/hello/" + name, String.class);
    }
    }
  6. 启动,同理,可以在服务列表看到注册进去的服务。

  7. 测试。通过调用consumer的rest api接口就能获取到数据。

服务消费者---基于OpenFeign

  1. pom里面添加spring-cloud-starter-openfeign依赖

    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
  2. 添加注解EnableFeignClients

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients//启用
    public class ConsumerApplication {
    public static void main(String[] args) {
    SpringApplication.run(ConsumerApplication.class,args);
    }
    }
  3. 定义接口UserService

    @FeignClient(name = "lou-nacos-service-provider")//服务名。
    public interface UserService { @GetMapping("/hello/{name}")//这里表示请求lou-nacos-service-provider的/hello/{name}地址
    String hello(@PathVariable(value = "name") String name);
    }

    不需要实现。

  4. 通过定义的UserService接口调用服务,还是原先的TestController

    @RestController
    public class TestController {
    @Autowired//启用了FeignClient,所以可以Autowired
    private UserService userService; @GetMapping("hello2/{name}")
    public String hello2(@PathVariable("name") String name) {
    return userService.hello(name);//直接调用了方法。
    }
    }
  5. 测试一下。访问hello2/feign,成功。

服务提供者的负责均衡

nacos为服务提供了自动的负载均衡,默认使用轮询的策略。

nacos 的服务注册与发现的更多相关文章

  1. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  2. SpringCloud第二代实战系列:一文搞定Nacos实现服务注册与发现

    一.背景:SpringCloud 生态圈 在正式开始本篇文章之前我们先岔开来讲一下SpringCloud的生态圈. SpringCloud大家都比较熟悉了,它制定了分布式系统的标准规范,做了高度抽象和 ...

  3. SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现

    目录 前言 环境 Nacos是什么? 服务发现原理 搭建 Nacos Server Nacos Server 下载地址 Nacos Server 的版本选择 运行 Nacos Server Nacos ...

  4. 用Nacos做微服务架构里的服务注册与发现中心

    转自:https://www.jianshu.com/p/61608ff86344 Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服 ...

  5. 🏆【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析

    背景介绍 前几篇文章介绍了Nacos配置中心服务的能力机制,接下来,我们来介绍Nacos另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常 ...

  6. Spring Cloud Alibaba | Nacos服务注册与发现

    目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...

  7. Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现

    Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...

  8. Alibaba Nacos 学习(三):Spring Cloud Nacos Discovery - FeignClient,Nacos 服务注册与发现

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  9. Spring Cloud进阶之路 | 一:服务注册与发现(nacos)

    转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12068846.html 1.版本 最新稳定版本为1.1.4,也可以从发版说明.博客 ...

随机推荐

  1. Oracle 定时备份数据库

    [操作说明] 在前面的博客中,学习了如何Oracle如何备份数据库,实际开发过程中数据库应该每隔一段时间就要备份一次,所以我们就需要一个定时执行这个代码的功能,同时备份的文件可能进行一些处理,比如压缩 ...

  2. 团队项目之Scrum4

    小组:BLACK PANDA 时间:2019.11.24 每天举行站立式会议 提供当天站立式会议照片一张 2 昨天已完成的工作 2 基本实现web富文本编辑功能 后台的编辑接口已经基本完成,还有一些b ...

  3. 第十六届浙江大学宁波理工学院程序设计大赛 E 雷顿女士与平衡树(并查集)

    题意 链接:https://ac.nowcoder.com/acm/contest/2995/E来源:牛客网 卡特莉正在爬树,此时她又在树梢发现了一个谜题,为了不令她分心以至于发生意外,请你帮她解决这 ...

  4. JVM基础回顾记录(二):垃圾收集

    垃圾收集流程&HotSpot对该流程的实现方式 上一篇介绍了jvm的内存模型,本篇将介绍虚拟机中最为复杂的一部分:垃圾收集,本篇会从垃圾回收前的准备工作到后面的收集阶段的方式以及HotSpot ...

  5. 利用Haproxy搭建 HTTP 请求走私(Request smuggling)环境

    Haproxy 介绍 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. 请求走私(Request smuggling)概念证 ...

  6. 剑指Offer-42.和为S的两个数字(C++/Java)

    题目: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 分析: ...

  7. [考试反思]1113csp-s模拟测试113:一念

    在这么考下去可以去混女队了2333 两天总分rank14,退役稳稳的 的确就是没状态.满脑子都是<包围保卫王国>ddp/LCT/ST,没好好考试. 我太菜了写题也写不出来考试也考不好(显然 ...

  8. mysql分布式

    一,复制,对数据进行备份,实现搞可用,提高吞吐量,实现高性能. 1,主从架构 2,多主架构 3,主主从从 4,主备 (实际用得多) 二,分片/分库分表 () 1,垂直拆分 1,垂直分表 2,垂直分库 ...

  9. Python 从入门到进阶之路(一)

    人生苦短,我用 Python. Python 无疑是目前最火的语言之一,在这里就不再夸他的 NB 之处了,本着对计算机编程的浓厚兴趣,便开始了对 Python 的自学之路,并记录下此学习记录的心酸历程 ...

  10. Vue Cli3 中别名的配置问题

    Vue Cli3 中别名的配置问题 vue-cli3中是没有config.build等目录的,这是因为vue-cli3中将这些配置隐藏起来了,如果想要修改,可以在vue.config.js文件中进行修 ...