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,也可以从发版说明.博客 ...
随机推荐
- SharePoint 2019 里安装FlowPortal6.00c报错
环境: Windows Server 2016+SharePoint 2019 安装FlowPortal 6.00c后应用程序池FlowPortal.net 6.x AppPool自动停止. 事件查看 ...
- Android 使用 aapt 命令查看 apk 包名
一.aapt 是什么 aapt 即Android Asset Packaging Tool,在SDK的build-tools目录下.该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, ...
- 从0系统学Android--3.6 RecyclerView
从0系统学Android--更强大的滚动控件---RecyclerView 本系列文章目录:更多精品文章分类 本系列持续更新中.... 参考<第一行代码> 首先说明一点昨天发了一篇关于 L ...
- 设置tabBar的图片/高度/title颜色
实现了一下内容: 1.设置tabBarItem选中及非选中时的图片,图片充满item; 2.调整了 tabBar 高度; 3.改变了title颜色及位置. ------------代码如下: ---T ...
- 苹果_公司开发者账号_申请DUNS number
申请DUNS number 注意事项:a.公司英文名称,例如:北京京城科技有限公司,Beijing Jingcheng Technology Co., Ltd.(Co.和Ltd.都是缩写,中间用“逗号 ...
- Android 程序分析环境搭建-动态分析环境搭建
静态查看过app 的代码,但是有些app 非常复杂,页面好多,你根本找不到从何处下手.还有app 通过静态分析,发现有被加固(后续会讲如何砸壳),根本找不到,还有即便你搜索app界面上的文字,你也搜索 ...
- 小程序模板template使用介绍
template(模板):是可以在wxml中引用的代码,就是在wxml中引用公用的wxml类型的代码,它的作用类似于组件,因此这里简单的说明下template与Component (组件)的区别. t ...
- [Go] 轻量服务器框架基础TCP连接的抽象和封装
对tcp连接部分以及与连接绑定的业务部分进行抽象和封装 主要是对连接的开启关闭和读写进行封装,抽象出接口,使用回调进行具体业务的绑定 zinterface/iconnection.go package ...
- Spring学习的第三天
问题分析:在刚开始进行银行转账案例时,会获取四个连接,分别是查询接入.转出账户.更新转入.转出账户.这样会使转账不同步,如果某一处出现异常,前面的代码执行了,而后面的更新却没执行,导致一个账户加钱而另 ...
- 你真的理解Java 注解吗?
你真的理解Java 注解吗? 1.什么是注解? 官方解释: Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.Java ...