Nacos作为微服务注册中心,爱不释手的感觉
Nacos作为微服务注册中心,爱不释手的感觉
我觉得Nacos用起来还不错
在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我们就来说一下Alibaba的Nacos怎么样?
下载与安装
下载地址https://github.com/alibaba/nacos/releases
安装:
Windows 下载解压后(.zip),直接点击bin/start.bat就可以了。
Linux下载解压后(.tar.gz),同样,也是运行 bin/start.sh 脚本。
打开控制台:
Nacos提供了一个可视化的操作平台,安装好之后,在浏览器中输入http://localhost:8848就可以访问了,默认的用户名和密码都是nacos(我使用的1.2.0版本。默认将密码验证给关了,这个选项后边会说)
Nacos简介
Nacos是由阿里巴巴开源的一个好东西,直接贴上它的官网,就不再这么累赘了,毕竟是国人开发的,是有中文文档的,上边写的很全面。https://nacos.io/zh-cn/docs/quick-start.html
Nacos作为注册中心
它和Eureka不一样,并不需要创建新的web项目,而是和Zookeeper和Consul一样,只需要下载安装启动后,将我们的微服务注册进去就可以了。
创建两个微服务,一个客户端(调用者)和一个服务端(提供者),
引入依赖
<groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
在它们的配置文件中引入如下代码:
spring:
cloud:
nacos: discovery: # Nacos的地址 server-addr: localhost:8848
主启动类上添加(不管是哪种注册中心,这个一定要有):
@EnableDiscoveryClient
当然,在客户端还是要添加ribbon的负载均衡的,但是不用额外添加依赖,nacos已经添加了
@Configuration
public class AppConfig {
@Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }
}
好了,打开Nacos的控制台,然后就可以看到这两个微服务了。
Nacos作为分布式配置中心
之前我们是使用SpringCloudConfig从github等仓库上拉取的配置文件,但是用了Nacos后,我们就可以从Nacos中直接配置了,是不是很方便啊。新建了一个项目,nacos-config-server-8002
pom.xml引入下边依赖
<groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
application.yml中加入如下配置内容
spring:
profiles:
active: dev
添加一个bootstrap.yml
server:
port: 8002
spring:
application:
name: nacos-config-server-8002
cloud:
nacos: discovery: server-addr: localhost:8848 config: server-addr: localhost:8848
配置文件类型,有yaml和properties ,注意一定是yaml,不是yml
file-extension: yaml
application.yml中的配置是什么意思?
为什么要引入bootstrap.yml?
简单来说,这个配置是和application.yml是一样的,不这它要比appliation.yml先加载
Controller中的接口
@RestController
@RefreshScope //这是一个SpingCloud的原生注解,可以实现配置的动态刷新
public class InfoController {
/* 这个中的 : 的意思就是说,如果配置文件中没有,就直接使用后边的那个字符串,我写的是nothing 在本地项目中,我们并没有配置configInfo, 所以如果这时候调用http://localhost:8002/info 返回就是nothing */ @Value("${configInfo}") private String configInfo; /** * 用做配置中心的演示 * * @return */ @GetMapping("info") public String getConfig() { return configInfo; }
}
Nacos中的几个空间概念:
NameSpaces(命名空间)
相当于我们一个项目中的包名,Nacos中可以新建多个命名空间。微服务注册的时候,可以通过配置spring.cloud.nacos.discovery.namespace,当然,配置文件也可以配置namespace来指定对应的名称空间,如果不配置就是使用默认的public 空间。
假如,你是好几个项目共用一个Nacos集群,就可以通过namespce来区分项目。
在Nacos的控制台的最下边有一个命名空间,你可以新建一个试,建完再次点击服务列表和配置列表上边会出现你的命令空间选择(如下图,我新建了一个space1的空间,public是默认的)
Group(分组)
相当于Java中的类名,同样,一个包下可以有多个类。不过这个只是相对于配置文件来说,对于服务注册没有这么一说。它有一个默认的分组就是DEFAULT_GROUP,在新建配置文件时就会有(如下图)
DataID
这个就相当于类中的方法,同样,一个类中就会有多个方法名。
我们的配置文件就是在上图中去添加的,下边是我截取了Nacos官方文档中对于DataID的说明:
新建一个配置文件试试
在配置列表中新建一个配置文件,如果你有多个命名空间,注意选择你的项目中连接的那个
只要点了右下角的发布,就会自动配置了,再次访问http://localhost:8002/info,就会看到已经更改了,这个是实时更改的。
这些都是很简单的操作,只要你自己做一次,就一定会使用了
Nacos的配置文件持久化
Nacos使用的是嵌入式数据库Derby,有关嵌入式数据库,可以参考在Spring中使用嵌入式数据库-H2,虽然数据库不同,但是原理操作方法一致。但是,我们想换成我们的mysql用来存储nacos的数据,可否?
导入数据到你本地的Mysql库
在Nacos安装包下的conf目录下有个nacos-mysql.sql文件,放到你的Mysql工具中执行一遍(它这个sql语句中建库,先建个库名叫nacos_config)
修改conf下的application.properties文件
98行左右,这个设置为true就是开启nacos启动的登录验证,默认用户名和密码就是nacos
nacos.core.auth.enabled=true
在最后添加如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123
以上这些内容全都来自于Nacos官网
这样,再次启动后Nacos后,你之前的配置文件就全都不见了,因为你配置了Mysql库。这样,你每次修改后,就会进Mysql库,这个库很简单的,你大概看一下就能明白了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Asp.Net Core Authorize你不知道的那些事(源码解读)
Asp.Net Core Authorize你不知道的那些事(源码解读)一、前言IdentityServer4已经分享了一些应用实战的文章,从架构到授权中心的落地应用,也伴随着对IdentityServer4掌握了一些使用规则,但是很多原理性东西还是一知半解,故我这里持续性来带大家一起来解读它的相关源代码,本文先来看看为什么Controller或者Action中添加Authorize或者全局中添加AuthorizeFilter过滤器就可以实现该资源受到保护,需要通过access_token才能通过相关的授权呢?今天我带大家来了解AuthorizeAttribute和AuthorizeFilter的关系及代码解读。 二、代码解读解读之前我们先来看看下面两种标注授权方式的代码: 标注方式 [Authorize] [HttpGet] public async Task Get() {"> var userId = User.UserId(); return new { name = User.Name(), userId = userId, displayName = User.Displa...
- 下一篇
F版本SpringCloud 2—什么是SpringCloud?SpringCloud版本选择
引言:搭建微服务架构就像是买电脑,使用SpringCloud就是在买品牌机。 前言 昂,美好的天气里,不想直接说技术,给小伙伴萌看看傍晚的天空吧。 —— 能找到天上的北极星吗? 上一篇文章中,通过一个简单的小故事,轻松愉快的讲解了架构的演变,以及为啥会有微服务,什么是微服务。不过在最后留下了一个小疑问:将架构设计为微服务需要一整套技术,解决服务调用,服务治理,服务监控等问题。 那么这些技术怎么来呢? 答案就是:SpringCloud。 本文就会详细讲解 什么是SpringCloud SpringCloud和SpringBoot的关系 SpringCloud版本选择 什么是SpringCloud 引言:搭建微服务架构就像是买电脑,使用SpringCloud就是在买品牌机。 SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。 NetFlix 是美国的一个在线视频网站,微服务业的翘楚,他是公认的大规模生产级微服务的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,CentOS7官方镜像安装Oracle11G
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境