Spring Cloud - Nacos注册中心入门单机模式及集群模式
近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案。其中Spring Cloud Alibaba是我们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案。
包含微服务开发的必要组件,基于SpringCloud 符合SpringCloud标准,是阿里的微服务的解决方案。
文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
Nacos的安装与启动
Nacos是其中一个组件。是阿里开源的可用于注册中心和配置中心的开源组建。
下载安装也比较简单,只需要下载一个压缩包即可,解压即可用,windows和了linux都适用。
我的是windows,然后下载的是nacos-server-1.1.4.zip,选择一个目录解压的到如下文件。

只需要切换到bin目录下,双击startup.cmd,就会看到打开了一个cmd窗口

等待一会,以下这样就是启动好了

然后,浏览器访问,http://localhost:8848/nacos 打开他的控制台,用户名密码都是nacos,然后进来就是这样,就启动好了。

是不是简单。
注册服务到Nacos
然后我们可以写一个服务去注册到nacos上,创建SpringBoot的项目。创建好之后按以下步骤把Nacos引入到我们的项目中。
第一:引入Nacos客户端的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
第二:配置Nacos的地址
spring:
application:
name: order-center
cloud:
nacos:
discovery:
server-addr: localhost:
第三:启动项目,观察Nacos服务列表。成功注册。

Nacos集群启动
刚才是在Nacos单机的情况下完成的操作,实际情况下作为注册中心都是要集群部署保证高可用的。我们就来看一下Nacos集群模式如何配置并启动的。
我们就弄三个实例,
第一:把我们解压的Nacos的包复制三个,如下图:

第二:进入到各自的conf目录下打开application.properties文件,一次修改为 server.port=8849/8850/8851三个端口,然后添加如下配置,保存。(记得三个包都要改)
spring.datasource.platform=mysql # 数据库实例数量
db.num=
#自己数据库的连接信息
db.url.=jdbc:mysql://localhost:/nacos_test?characterEncoding=utf8&connectTimeout=&socketTimeout=&autoReconnect=true
db.user=root
db.password=你的数据库密码
第三:在conf目录下找到nacos-mysql.sql 这个SQL脚本,在你的mysql里新建一个数据量,名字你自己定,然后执行这个SQL。(数据库名字要和你配置里写的一致)
第四:在conf目录下找到 cluster.conf.example 文件,命名为 cluster.conf 然后打开填入三个 Nacos的IP和端口。(记得改为你自己的IP和端口)
这里一定要写真实的IP,不能写localhost,127.0.0.1,不然集群启动会找不到别的实例,导致无法选举出leader
192.168.0.107:
192.168.0.107:
192.168.0.107:
注意:三个实例的以上配置都要改。改完之后就可以去启动了。
第五:启动。这个时候启动要注意了,不能直接双击startuo.cmd了。
博主就是因为在集群模式下依然使用双击的启动方式,导致一直是起了三个单机模式的实例,最后找了很久才发现是因为这个启动脚本默认是单机启动的,集群启动需要加参数指定,而Linux的启动脚本正好相反,默认是集群模式,单机启动需要加参数-m standalone。
集群模式下启动需要打开CMD窗口,打开三个,进入到各自的bin目录下,分别执行,startup.smd -m cluster,然后等待一会,即可看到以cluster模式启动的字眼

然后访问这三台Nacos,点击节点列表就可以看到三个Nacos实例 谁是Leader 谁是follower一清二楚。

集群下客户端怎么连?
第一种:可以在刚才单机的基础上加多个IP和端口中间用逗号隔开
第二种:配合Nginx代理我们的Nacos的集群,配置里就直接写Nginx的IP和端口即可
Nginx配置如下:
upstream nacos_server{
server 192.168.0.107:;
server 192.168.0.107:;
server 192.168.0.107:;
}
server {
listen ;
server_name localhost;
location /nacos/ {
proxy_set_header Host $http_host;
proxy_pass http://nacos_server/nacos/;
}
}
而我们访问Nacos的控制台的时候,就可以通过Nginx来访问了,客户端注册到Nacos的时候就可以直接写Nginx的地址了。

获取注册中心注册的服务的地址列表
我们刚才写了一个springboot的项目引入了Nacos的客户端,并成功把服务信息注册到了Nacos上。现在我们来验证一下。
写个Controller,注入RestTemplate 和 DiscoveryClient (Nacos的服务发现客户端)
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getServiceList")
public List<ServiceInstance> getServiceList() {
List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("order-center");
return serviceInstanceList;
}
然后重启这个服务,浏览器访问 http://localhost:8081/getServiceList

能够从Nacos拿到我们注册的服务的信息。
OK,今天就是一个Nacos的一个入门案例,就分享到这里。
总结一下:
1、Nacos同一个程序包同时支持Windows和Linux。
2、支持单机启动和集群启动
3、Windows单机启动直接双击 startup.cmd,Linux执行 ./startup.sh -m stanalone
4、配置好集群后,Windows集群启动CMD窗口下执行 startup.cmd -m cluster,Linux直接执行./startup.sh
5、集群下客户端可使用多地址逗号隔开的方式,也可使用集群+Nginx的方式,推荐后者。
Nacos还有更加细粒度的注册中心配置方式,如不同的环境,不同Group,不同的location,不同的版本控制等。
欢迎关注我的公众号:编程大道,一起交流学习。
Spring Cloud - Nacos注册中心入门单机模式及集群模式的更多相关文章
- 二、Spring Cloud之注册中心 Eureka
前言 算是正式开始学习 spring cloud 的项目知识了,大概的知道Springcloud 是由众多的微服务组成的,所以我们现在一个一个的来学习吧. 注册中心,在微服务中算是核心了.所有的服务都 ...
- spring cloud 服务注册中心eureka高可用集群搭建
spring cloud 服务注册中心eureka高可用集群搭建 一,准备工作 eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心 1 本文三台eu ...
- 孰能巧用 Spring Cloud 服务注册中心Eureka
Eureka介绍 在Spring Cloud Netflix 整合技术栈中,Eureka既可以作为服务注册中心也可以用于服务发现对整个微服务架构起着最核心的整合作用. Eureka是基于REST(Re ...
- Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!
Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...
- IDEA 创建Spring cloud Eureka 注册中心
IDEA 创建Spring cloud Eureka 注册中心 一. 首先创建一个maven project Next之后填好groupId与artifactId,Next之后填好项目名与路径,点击F ...
- spring Cloud服务注册中心Eureka集群
spring Cloud服务注册中心Eureka集群配置: 在application.yml文件加以下配置: server: port: 8761 tomcat: uri-encoding: UTF- ...
- Centos7安装Nacos单机模式以及集群模式(包含nignx安装以及实现集群)的相关配置
Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos支持三种部署模式 单机模式 - 用于测试 ...
- IntelliJ IDEA的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: IntelliJ IDEA的下载 IntelliJ IDEA的安装 IntelliJ IDEA中的scala插件安装 用SBT方式来创建工程 或 选择Scala方式来创建工程 本地模式或集群 ...
- IntelliJ IDEA(Community版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)
不多说,直接上干货! 对于初学者来说,建议你先玩玩这个免费的社区版,但是,一段时间,还是去玩专业版吧,这个很简单哈,学聪明点,去搞到途径激活!可以看我的博客. 包括: IntelliJ IDEA(Co ...
随机推荐
- leetcode第22题:括号生成
力扣上的题目可以大致分为以下种类: 对某种复杂规则的彻底解析,很有可能要构造状态机,充分考虑边界情况. 对某种数据结构及算法的应用. 对数学概念.遍历.动态规划等的综合应用. 通过分析,本题应该属于1 ...
- Nginx笔记总结四:Nginx连接PHP5.4
location ~ .*\.(php)?${ expires -ls; try_file $uri=404; fastcgi_split_path_info ~(.+\.php)(/.+)$; in ...
- 关于JavaScript中的typeof与instanceof
JavaScript中typeof和instanceof可以用来判断一个数据的类型,什么时候选择使用typeof?什么时候选择使用instanceof? typeof运算符 typeof运算符返回值有 ...
- mysql手动开启
1.cd C:\Program Files\mysql-5.7.20-winx64\bin2.mysqld --install mysql5.73.net start mysql5.7
- RxJS学习笔记之Subject
本文为原创文章,转载请标明出处 目录 Subject BehaviorSubject ReplaySubject AsyncSubject 1. Subject 总的来说,Subject 既是能够将值 ...
- Navicat导入导出数据表
当我们对mysql数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...
- 状态模式(State)-设计模式
软件模式是将模式的一般概念应用于软件开发领域,即软件开发的 总体指导思路或参照样板.软件模式并非仅限于设计模式,还包括 架构模式.分析模式和过程模式等,实际上,在软件生存期的每一个阶段都存在着一些被认 ...
- USB小白学习之路(10) CY7C68013A Slave FIFO模式下的标志位(转)
转自良子:http://www.eefocus.com/liangziusb/blog/12-11/288618_bdaf9.html CY7C68013含有4个大端点,可以用来处理数据量较大的传输, ...
- 视频描述(Video Captioning)近年重要论文总结
视频描述 顾名思义视频描述是计算机对视频生成一段描述,如图所示,这张图片选取了一段视频的两帧,针对它的描述是"A man is doing stunts on his bike", ...
- 达拉草201771010105《面向对象程序设计(java)》第二周学习总结
达拉草201771010105<面向对象程序设计(java)>第二周学习总结 一.理论知识学习部分 这一周我们学习的是书上第三章java的基本程序设计结构的内容,在这一章 ...