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一样,只需要下载安装启动后,将我们的微服务注册进去就可以了。

? 创建两个微服务,一个客户端(调用者)和一个服务端(提供者),

  • 引入依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 在它们的配置文件中引入如下代码:
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引入下边依赖

<!--分布式配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

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
  1. application.yml中的配置是什么意思?
  1. 为什么要引入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库,这个库很简单的,你大概看一下就能明白了。

微信关注”小鱼与Java“,回复”SpingCloud“获取更多SpringCloud学习资料

原文地址:https://www.cnblogs.com/Lyn4ever/p/12563434.html

时间: 2024-07-29 20:12:28

Nacos作为微服务注册中心,爱不释手的感觉的相关文章

从零开始搭建系统3.2——微服务注册中心开发及部署

从零开始搭建系统3.2--微服务注册中心开发及部署 原文地址:https://www.cnblogs.com/provence666/p/8638586.html

两大微服务 注册中心 ZooKeeper 和 Eureka 的区别

===>>spring cloud集成zookeeper例子:https://www.cnblogs.com/li-zhan/p/9401692.html ZooKeeper 和 Eureka 的区别 鉴于服务发现对服务化架构的重要性,Dubbo 实践通常以 ZooKeeper 为注册中心(Dubbo 原生支持的 Redis 方案需要服务器时间同步,且性能消耗过大). 针对分布式领域著名的 CAP 理论(C——数据一致性,A——服务可用性,P——服务对网络分区故障的容错性), Zookeepe

Spring Cloud构建微服务架构(六)高可用服务注册中心

在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是在之前的示例中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境,那么下面在前文的基础上,我们来看看该如何构建高可用的Eureka Server集群. 单点Eureka Server的样例: GitHub 开源中国 Eureka Server的高可用 Eureka Server除了单点运行之外,

微服务配置内容—&gt;如何创建一个高可用的服务注册中心

前言:首先要知道什么是一个高可用的服务注册中心,基于spring boot建成的服务注册中心是一个单节点的服务注册中心,这样一旦发生了故障,那么整个服务就会瘫痪,所以我们需要一个高可用的服务注册中心,那么在Eureka中,我们通过集群来解决这个问题.啥叫集群呢?就是多配几个,一个服务注册中心挂了,还有另一个. 另外要注意jdk的版本需要1.8或1.8以上,否则无法执行. 1 但这里我遇到了一个奇怪的问题:本来我的jdk版本是1.6的,我需要更换.但是怎么配置环境 2 变量,在命令行输入java

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> <relativePath

Spring Cloud Eureka 4 (高可用服务注册中心)

在微服务这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须考虑对各个组件进行高可用部署,对于服务注册中心也是一样. Eureka Server 的高可用实际上就是讲自己作为服务向其他注册中心注册自己,这样就可以实现一组互相注册的注册中心以实现服务清单是相互同步,达到高可用的效果. 创建新的项目eureka-cluster和eureka-cluster2 项目创建参考上文服务注册中心的搭建 http://www.cnblogs.com/HanShisi/p/8319856.h

如何创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> <relativePath

Spring Cloud-服务的注册与发现之服务注册中心(Eureka Server)

Spring cloud是为了什么产生的? 根据官网的这个介绍来看,我们可以知道,Spring cloud是为开发者提供的一个工具,而使用这个工具的产生就是为了帮助开发者快速的开发一套比较通用的分布式系统. ( 而工具包含了:配置管理,服务发现,断路器,路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态) Spring boot是基于什么做的? 由此可见,spring cloud是基于spring boot开发出来的. 今天我们这边主要是看看服务注册中心的配置和使用.

spring cloud(二)服务(注册)中心Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组件之一. 背景介绍 服务中心 服务中心又称注册中心,管理各种服务功能包括服务的注册.发现.熔断.负载.降级等,比如dubbo admin后台的各种功能. 有了服务中心调用关系会有什么变化,画几个简图来帮忙理解 项目A调用项目B 正常调用项目A请求项目B 有了服务中心之后,任何一个服务都不能直接去掉用