前面讲解了Eureka的集成实战,目的是让大家先了解SpringCloud初代是怎么集成的,然后在了解Nacos的就是水到渠成的事情。Nacos的强大在于一下整合了服务注册发现、配置管理和Bus总线,我会分三期分别讲解,本期带大家来学习服务注册中心的主要功能。
Nacos简介
- GitHub地址:https://github.com/alibaba/nacos
- 中文官方地址:https://nacos.io/zh-cn/
- 手册地址:https://nacos.io/zh-cn/docs/what-is-nacos.html
上面三个地址是学习Nacos最常用的地址。代码集成也是出自手册,所以大家在学习过程中遇到任何不懂的地方,建议大家把三个地址收藏到浏览器的书鉴中,方便及时查阅。
Nacos的功能
- 替代EUREKA,作为服务注册中心
- 替代Config,作为配置中心
- 替代Bus,作为服务总线
Nacos的下载和安装
- Nacos跟Eureka类似也有一个后台页面,Eureka在使用的时候还需要构建一个Web工程,而Nacos就不需要了,只要下载一个jar包就可以。
- Nacos默认内部集成了数据库,适合单机模式,也支持mysql做替换,适合集群模式。注册中心的功能介绍,我这里是在单机模式上来开发。
- 需要Java8和maven本地环境
- 由于前面文章介绍过,我使用的是cloud的alibaba的2.2.6版本,对应的Nacos的版本是1.4.2
- 在GitHub上点击tags,下载1.4.2的server的zip包,文件的结构如下。bin目录下是执行文件,conf下是配置文件
- 配置文件的结构如下,application.properties是Springboot工程的配置文件,cluster.conf是Nacos集群配置文件,主要是配置IP+port,nacos-mysql.sql是MySQL的初始化语句,主要是创建数据库和表结构
- 单机模式启动Nacos,执行命令:
startup.cmd -m standalone
- 默认绑定8848端口,使用内嵌数据库,看到Nacos started successfully in standalone mode,说明单机模式启动成功
- 本地访问http://localhost:8848,账号密码都是nacos,看到如下主页说明nacos已经能够正常使用了。可以看到有配置管理、服务管理等,本篇文章主要关注服务管理。
SpringCloud集成Nacos实战
- 首先是创建一个新的module,cloud-nacos-payment9001,Moudle的创建可以参考本系列的其他文章,这里不在赘述,跟着我博客学下来的,这部分应该已经学会了。
- 修改pom文件,添加Nacos服务注册中心需要的jar包依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 修改yml文件,增加Nacos的服务注册中心的配置
spring:
application:
name: cloud-nacos-payment
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
- 修改启动类,只要添加@EnableDiscoveryClient注解即可
@SpringBootApplication
@EnableDiscoveryClient
public class Application9001 {
public static void main(String[] args) {
SpringApplication.run(Application9001.class, args);
}
}
- 启动服务,去Nacos后台查看该服务是否已经注册进来。
- 同样的办法,服务提供者我们再创建一个9002,主要用来模拟负载均衡
- 同样的办法添加服务消费者cloud-nacos-order9003,看到payment两个实例,order一个实例,都注册成功。
- 修改业务类,9001和9002中分别添加getPayment方法,在9003中添加调用方法,来测试通过nacos的服务发现功能是否能访问成功。具体方法代码跟使用Eureka的相同,这里就不在赘述,大家可以进入我的码云仓库去下载。关注我公众号【帅哥趣谈】,回复【cloud】获取。
- Nacos是集成了Ribbon,所有具有服务发现的能力,可以通过依赖关系看到。所以在发起服务请求的时候用RESTTemplate即可
- 至此,Nacos的服务注册和发现功能集成实战就完成了。
关注公众号,回复【资料】,免费获取海量Java学习资料
同时也欢迎大家添加个人微信【shishuai860505】,我拉大家进我的读者交流群。