什么是Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式)的服务基础设施。

使用Nacos组件可以作为微服务架构的注册中心和配置中心,可以简单理解为可以代替Netflix解决方案中的Eureka组件和Spring Cloud Config组件。

Nacos官方地址:https://nacos.io/zh-cn/index.html

主要功能

  • 动态配置服务

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

  • 服务发现及管理

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

  • 动态DNS服务

通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。

安装单机版Nacos

Nacos下载地址:https://github.com/alibaba/nacos/releases

截止目前最新版本为:1.1.4



下载之后解压进入到bin目录执行启动命令:sh startup.sh -m standalone



命令参数中-m表示模式mode,standalone表示启动的是单机版模式,windows用户可以使用该命令启动Nacos: cmd startup.cmd -m standalone

执行启动命令之后可以查看到启动日志:tail -fn 200 /home/server/nacos/logs/start.out



Nacos是一个用Java语言编写的web项目,Tomcat默认端口是8848,访问8848端口可以打开Nacos管理台。

默认用户名和密码都是nacos





Nacos管理台菜单包含了四大部分:

  • 配置管理(管理配置中心)
  • 服务管理(管理注册中心)
  • 命名空间
  • 集群管理

使用Nacos注册中心功能

生产者服务

第一步:创建一个nacos-test项目,包含两个模块nacos-provider和nacos-consumer,在父项目pom.xml文件统一管理springboot、spring cloud和spring cloud alibaba版本。

<dependencyManagement>
<dependencies>
<!--spring-boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-cloud-alibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

第二步:先来处理nacos-provider模块项目,在nacos-provider模块项目的pom.xml配置alibaba-nacos-discovery依赖。

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--nacos注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>

第三步:编写入口类NacosProvider ,并添加一个EchoController 提供HTTP接口服务。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider { public static void main(String[] args) {
SpringApplication.run(NacosProvider.class,args);
} @RestController
class EchoController { @GetMapping("/echo/{string}")
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
} }

第四步:在bootstrap.yml文件配置nacos配置中心相关参数。

spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注册中心地址
server:
port: 17357

第五步:运行nacos-provider,可以从启动日志看到注册到了nacos,打开nacos管理台在服务管理菜单下的服务列表项可以看到注册的实例信息。



消费者服务

第一步:接下来处理nacos-consumer模块项目,在nacos-consumer模块项目的pom.xml配置同样加上alibaba-nacos-discovery依赖。

    <dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>

第二步:编写入口类NacosConsumer ,并添加一个TestController提供HTTP接口服务,通过RestTemplate远程调用NacosProvider。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumer { @LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
} public static void main(String[] args) {
SpringApplication.run(NacosConsumer.class,args);
} @RestController
public class TestController { private final RestTemplate restTemplate; @Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;} @GetMapping("/echo/{str}")
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://nacos-provider/echo/" + str, String.class);
} } }

第三步:在bootstrap.yml文件配置nacos配置中心相关参数。

spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注册中心地址
server:
port: 17358

第四步:测试消费者调用提供者接口服务。





nacos默认使用了ribbon做客户端负载均衡。

关注公众号了解更多原创博文

![Alt](https://img-blog.csdnimg.cn/20191104123907694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3Mzk1NTE=,size_16,color_FFFFFF,t_70#pic_center =591x339)

Spring Cloud Alibaba 教程 | Nacos(一)的更多相关文章

  1. Spring Cloud Alibaba 教程 | Nacos(五)

    扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...

  2. Spring Cloud Alibaba 教程 | Nacos(三)

    使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...

  3. Spring Cloud Alibaba 教程 | Nacos(二)

    源码解析客户端注册过程 nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自 ...

  4. Spring Cloud Alibaba 教程 | Nacos(四)

    Nacos环境隔离 Nacos管理台有一个单独的菜单"命名空间",里面默认存在一个名为"public"的默认命名空间,我们在使用Nacos时不管是作为注册中心还 ...

  5. Spring Cloud Alibaba 教程 | Nacos(六)

    集群模式部署 前面我们已经学习了Nacos作为注册中心.配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来 ...

  6. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

  7. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  8. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  9. Spring Cloud Alibaba(4)---Nacos(注册中心)

    Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...

随机推荐

  1. 二十六、SAP中通过FORMAT COLOR来设置文字背景颜色

    一.代码如下 二.效果如下

  2. 【CS224n-2019学习笔记】Lecture 1: Introduction and Word Vectors

    附上斯坦福cs224n-2019链接:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/ 文章目录 1.课程简单介绍 1.1 本 ...

  3. android 开发学习2

    Dao dao = new Dao(yi_ji_lu_zhang_dan.this);List<GetOneRecord> list = dao.getAllRecord();//创建迭代 ...

  4. 对近期docker学习的总结

    Docker 总结 1. 说在前头(Docker命令的格式) docker中的对象分为4个(就目前我所学到的) 镜像 image 容器 container 网络 network 数据卷 volume ...

  5. POJ-3984 迷宫问题(BFS找最短路径并保存)

    问题: 定义一个二维数组:  int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  6. POJ - 1753 Flip Game (IDA*)

    题意:4*4的棋盘摆满棋子,有黑有白,翻转一个棋子的同时也将翻转其上下左右的棋子(翻转后黑变白,白变黑),问使棋盘上所有棋子颜色相同,最少翻转的棋子数. 分析: 1.每个棋子至多翻转1次.翻转偶数次与 ...

  7. OpenCV3 Ref SVM : cv::ml::SVM Class Reference

    OpenCV3  Ref SVM : cv::ml::SVM Class Reference OpenCV2: #include <opencv2/core/core.hpp>#inclu ...

  8. Vulkan SDK 之 Depth Buffer

    深度缓冲是可选的,比如渲染一个3D的立方体的时候,就需要用到深度缓冲.Swapchain就算有多个images,此时深度缓冲区也只需要一个.vkCreateSwapchainKHR 会创建所有需要的i ...

  9. Python风格规范分享

    今天给大家分享Python 风格规范,以下代码中 Yes 表示推荐,No 表示不推荐. 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 以下情况除外: 长的 ...

  10. docker创建redis容器

    1.拉取最新的redis镜像 docker pull redis; 2.创建存放redis数据的目录 mkdir /redis/data 3.查询redis镜像id docker images; RE ...