nacos 的服务注册与发现
nacos的服务注册于发现。
这个要求服务统一注册到注册中心,然后调用的时候就不需要通过ip来调用,直接通过服务名即可。
服务提供者
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>
指定一下
EnableDiscoveryClient注解@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class,args);
}
}
application.yaml配置如下,这里需要指定spring.application.namespring:
application:
name: lou-nacos-service-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
server:
port: 8080
写个controller,用于测试
@RestController
public class TestController {
@GetMapping("hello/{name}")
public String sayHello(@PathVariable(value = "name") String name) {
return "hello " + name;
}
}
启动application,可以在nacos后台的服务列表里面看到注册的服务。

服务消费者---基于RestTemplate
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>
指定一下@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}
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
consumer去调用provider,这里用基于HttpClient的RestTemplate,所以需要先定义个RestTemplate Bean。需要指定
@LoadBalanced。@Configuration
public class ConsumerConfiguration {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
写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);
}
}
启动,同理,可以在服务列表看到注册进去的服务。
测试。通过调用consumer的rest api接口就能获取到数据。

服务消费者---基于OpenFeign
pom里面添加
spring-cloud-starter-openfeign依赖<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
添加注解
EnableFeignClients@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients//启用
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}
定义接口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);
}
不需要实现。
通过定义的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);//直接调用了方法。
}
}
测试一下。访问hello2/feign,成功。

服务提供者的负责均衡
nacos为服务提供了自动的负载均衡,默认使用轮询的策略。
nacos 的服务注册与发现的更多相关文章
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- SpringCloud第二代实战系列:一文搞定Nacos实现服务注册与发现
一.背景:SpringCloud 生态圈 在正式开始本篇文章之前我们先岔开来讲一下SpringCloud的生态圈. SpringCloud大家都比较熟悉了,它制定了分布式系统的标准规范,做了高度抽象和 ...
- SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现
目录 前言 环境 Nacos是什么? 服务发现原理 搭建 Nacos Server Nacos Server 下载地址 Nacos Server 的版本选择 运行 Nacos Server Nacos ...
- 用Nacos做微服务架构里的服务注册与发现中心
转自:https://www.jianshu.com/p/61608ff86344 Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服 ...
- 🏆【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
背景介绍 前几篇文章介绍了Nacos配置中心服务的能力机制,接下来,我们来介绍Nacos另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常 ...
- Spring Cloud Alibaba | Nacos服务注册与发现
目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...
- Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现
Nacos介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构 ...
- Alibaba Nacos 学习(三):Spring Cloud Nacos Discovery - FeignClient,Nacos 服务注册与发现
Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...
- Spring Cloud进阶之路 | 一:服务注册与发现(nacos)
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12068846.html 1.版本 最新稳定版本为1.1.4,也可以从发版说明.博客 ...
随机推荐
- c#实现两个窗体相互传值
本文转自:https://mp.csdn.net/postedit/100058721 1.功能展示 有时需要将子界面的内容传递到父界面,方法有好几种.经常用的是通过委托实现.具体的效果如下: ...
- Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子
RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活.高可用等特性.RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AM ...
- 44-创建 Machine
对于 Docker Machine 来说,术语 Machine 就是运行 docker daemon 的主机.“创建 Machine” 指的就是在 host 上安装和部署 docker.先执行 doc ...
- nginx安装及配置访问本地文件
第一步安装nginx windows可以直接去官网下载,解压就能用 http://nginx.org/en/download.html ubuntu用命令行 sudo apt-get install ...
- 快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法
知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨 ...
- 表单生成器(Form Builder)之伪造表单数据mongodb篇
这篇文章终于回到了正轨:为mongodb伪造数据.之前的随机数.随机车牌照.随机时间还有这篇笔记中的获取指定长度的中文字符串,都是为这篇笔记做准备.看一下我们的准备(基础代码) // 1.获取指定范围 ...
- RTP Payload Format for H264 Video
基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...
- Django入门必知必会操作
一.Django基础必备三件套 HttpRseponse 内部传入一个字符串参数,返回给浏览器. 在app目录下的views.py添加函数,添加函数之前必须在urls.py添加函数对应关系,否则访问不 ...
- Slickflow.NET 开源工作流引擎高级开发(六) -- WebTest 引擎接口模拟测试工具集
前言:引擎组件的接口测试不光是程序测试人员使用,而且也是产品负责人员需要用到的功能,因为在每一步流转过程中,就会完整模拟实际用户发生的场景,也就容易排查具体是程序问题还是业务问题,从而快速定位问题,及 ...
- ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...