博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot使用Nacos服务发现
阅读量:6431 次
发布时间:2019-06-23

本文共 4012 字,大约阅读时间需要 13 分钟。

本文介绍SpringBoot应用使用Nacos服务发现。

上一篇文章介绍了SpringBoot使用Nacos做配置中心,本文介绍SpringBoot使用Nacos做服务发现。

1.Eureka闭源

相信到现在,Eureka 2.0 闭源已经不是什么新鲜事了。在2017-2018年,几乎在国内掀起了一阵SpringCloud的热潮,几乎很大一部分人群随着对SpringBoot的关注,都开始关注起来了SpringCloud。而由于Eureka注册中心的易整合等优点,更是大多数使用SpringCloud的首选注册中心。但是随着Eureka官网的宣告,如下。

大致意思就是开源工作已经停止之类的话,这里就不做介绍了,感兴趣可以上Eureka的Github地址上查看。

Nacos也是一个优秀的注册中心,并且由阿里巴巴开源,并且最近的热度很高,已经更新到0.8.0版本了,基本上更新的很频繁,也是一个Eureka闭源后的好的选择。

2.SpringBoot使用Nacos服务发现

首先,需要启动Nacos,这里不做过多介绍。

创建项目,加入Nacos的服务发现的依赖nacos-discovery-spring-boot-starter,完整pom如代码清单所示。

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.1.RELEASE
com.dalaoyang
springboot2_nacos_discovery
0.0.1-SNAPSHOT
springboot2_nacos_discovery
springboot2_nacos_discovery
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
org.springframework.boot
spring-boot-starter-test
test
com.alibaba.boot
nacos-discovery-spring-boot-starter
0.2.1
org.springframework.boot
spring-boot-maven-plugin
复制代码

配置文件配置Nacos服务的地址,如代码清单所示。

server.port=8080spring.application.name=springboot2-nacos-discoverynacos.discovery.server-addr=127.0.0.1:8848复制代码

SpringBoot使用Nacos服务发现需要想Nacos服务注册,可以选择使用Nacos Api来直接注册,如代码清单所示。

//curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=springboot2-nacos-discovery&ip=127.0.0.1&port=8080'复制代码

本文使用注解@PostConstruct,在服务启动后向Nacos服务注册,并且创建方法根据实例名称获取实例,完整启动类如代码清单所示。

package com.dalaoyang;import com.alibaba.nacos.api.annotation.NacosInjected;import com.alibaba.nacos.api.exception.NacosException;import com.alibaba.nacos.api.naming.NamingService;import com.alibaba.nacos.api.naming.pojo.Instance;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;import java.net.InetAddress;import java.util.List;import static org.springframework.web.bind.annotation.RequestMethod.GET;//curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=springboot2-nacos-discovery&ip=127.0.0.1&port=8080'@SpringBootApplication@RestControllerpublic class Springboot2NacosDiscoveryApplication {	@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);	}	@RequestMapping(value = "/getInstance", method = GET)	@ResponseBody	public List
getInstance(@RequestParam String serviceName) throws NacosException { return namingService.getAllInstances(serviceName); } public static void main(String[] args) { SpringApplication.run(Springboot2NacosDiscoveryApplication.class, args); }}复制代码

本文用到了两个Nacos的方法,如下:

  • registerInstance:注册实例,有多个方法,本文使用的方法需要传入三个参数,分别是:服务名,ip和端口号。
  • getAllInstances:获取实例,传入服务名。

到这里就配置完成了,启动项目,查看Nacos服务如图所示。

在浏览器访问,如图所示,也可以查询到刚刚注册的实例。

还有很多Nacos Api供我们使用,可以查看Nacos Api页面:

转载地址:http://nqxga.baihongyu.com/

你可能感兴趣的文章
STL中的set容器的一点总结(转)
查看>>
在线最优化求解(Online Optimization)之三:FOBOS
查看>>
unity, sprite atlas
查看>>
[CareerCup] 4.8 Contain Tree 包含树
查看>>
HDU 4946 Area of Mushroom 凸包
查看>>
nginx 编译选项
查看>>
android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)...
查看>>
poj 3187 Backward Digit Sums(穷竭搜索dfs)
查看>>
jQuery获取、设置title的值
查看>>
qq群文件管理
查看>>
Node.js v0.10.31API手工-DNS
查看>>
oracle的sqlldr并行导入表不要加索引
查看>>
修改linux系统编码
查看>>
RMI、Hessian、Burlap、Httpinvoker、WebService的比较
查看>>
A successful Git branching model
查看>>
【转】VS2013中如何解决error C4996: 'fopen'问题
查看>>
JavaHTTP下载视频
查看>>
grep命令做永久别名 显示颜色
查看>>
死锁以及锁等待
查看>>
入门视频采集与处理(BT656简介) 转
查看>>