springcloud-nacos注册中心入门单机模式及集群模式

问北      2022-05-08     256

关键词:

近几年微服务很火,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:8088

 

第三:启动项目,观察Nacos服务列表。成功注册。

 

Nacos集群启动

刚才是在Nacos单机的情况下完成的操作,实际情况下作为注册中心都是要集群部署保证高可用的。我们就来看一下Nacos集群模式如何配置并启动的。

我们就弄三个实例,

第一:把我们解压的Nacos的包复制三个,如下图:

 

第二:进入到各自的conf目录下打开application.properties文件,一次修改为 server.port=8849/8850/8851三个端口,然后添加如下配置,保存。(记得三个包都要改)

spring.datasource.platform=mysql

# 数据库实例数量
db.num=1
#自己数据库的连接信息
db.url.0=jdbc:mysql://localhost:3306/nacos_test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&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:8849
192.168.0.107:8850
192.168.0.107:8851

 

注意:三个实例的以上配置都要改。改完之后就可以去启动了。

 

第五:启动。这个时候启动要注意了,不能直接双击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:8849;
        server 192.168.0.107:8850;
        server 192.168.0.107:8851;
    }
    server {
        listen       8088;
        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,不同的版本控制等。

欢迎关注我的公众号:编程大道,一起交流学习。

 

springcloud-nacos配置管理

...技术A前置文章:一、SpringCloud-Erueka服务注册&发现二、SpringCloud-Nacos服务注册&发现tips:Ctrl+F定位到所需内容快速阅读吧。①常规项目:项目启动→读取application.yml配置文件→创建SpringIOC容器→加载Bean;②Nacos配置中心项目... 查看详情

eureka注册中心单机

SpringCloud2.x系列之eureka注册中心单机一、简介SpringCloudEureka是SpringCloudNetflix项目下的服务治理模块。而SpringCloudNetflix项目是SpringCloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为SpringBoot应用提供了自配置的N... 查看详情

服务注册中心之erueka(单机版)(代码片段)

由于spring官方集成了eureka,所以在我们使用时,特别方便。使用springboot创建eureka服务注册中心(单机版)1.在pom.xml中添加以下依赖项<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netf 查看详情

1eureka注册中心单机(代码片段)

公众号:java乐园源码:https://gitee.com/hjj520/spring-cloud-2.x一、简介SpringCloudEureka是SpringCloudNetflix项目下的服务治理模块。而SpringCloudNetflix项目是SpringCloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为SpringBoot应... 查看详情

springcloud之eureka注册中心入门

eureka注册中心一、基本概念SpringCloud封装了Netflix公司的eureka作为自己微服务的注册中心。这个注册中心和dubbo中的zookeeper很相似,简单来说,只要你可以将你的”微服务“模块注册到注册中心,就可以供其他服务调用,一般来说... 查看详情

springcloud入门

1、启动注册中心springcloud-eureka-serverspring.cloud.EurekaServerApplication2、访问注册中心http://127.0.0.1:8100/root/eureka3、启动配置中心springcloud-config-serverspring.cloud.ConfigServerApplication启动完毕后可以在注册中心看到配置中心已经注 查看详情

nacos使用快速入门(代码片段)

Nacos使用快速入门引言Nacos做注册中心快速入门服务注册到nacos服务分级存储模型给user-service配置集群同集群优先的负载均衡权重配置环境隔离创建namespace给微服务配置namespaceNacos与Eureka的区别Nacos做配置中心快速入门在nacos中添加... 查看详情

windows下zookeeper注册中心的安装和启动

http://blog.csdn.net/aqsunkai/article/details/51683632zookeeper的安装支持单机模式和集群模式下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/,当前稳定版本为3.4.8单机模式修改zookeeper配置文件zoo.cfg解压后进入conf目录,修改zoo_sample.cfg文件名... 查看详情

微服务学习-springcloud-nacos(服务注册源码学习)(代码片段)

文章目录源码版本及下载服务注册核心流程图(看不清请双击打开大图)源码详解客户端注册源码服务端注册源码源码版本及下载此次源码版本为1.4.1,2.x版本在服务请求时使用了grpc的方式,所以先以1.4.1版本学... 查看详情

java微服务之springcloud快速入门day01eureka注册中心快速入门(代码片段)

一、Eureka注册中心简介1、认识Eureka首先我们来解决第一问题,服务的管理。问题分析在刚才的案例中,user-service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现... 查看详情

springcloudalibabaseata分布式事务使用快速入门,nacos做seata的注册中心和配置中心

SpringCloudSeata分布式事务使用快速入门特点1、文档教程详细且提供完整源码及数据库脚本2、有配套全手敲代码的视频演示教程使用版本SpringCloudAlibaba2021.1Nacos1.4.1Seata1.3.0概念说明:本地事务及分布式事务本地事务1、在一个进... 查看详情

dubbo入门以及总结

...:通过main的jar包启动服务端服务器,扫描实现类包,向注册中心发起注册,消费端在请求服务端时先向注册中心发起订阅,订阅成功后,唤醒消费者,底层调用invoke方法向服务端发起请求,并获得响应,而监控中心实时监控消... 查看详情

《springcloud超级入门》eureka注册中心开启密码认证《十二》(代码片段)

Eureka自带了一个Web的管理页面,方便我们查询注册到上面的实例信息,但是有一个问题:如果在实际使用中,注册中心地址有公网IP的话,必然能直接访问到,这样是不安全的。所以我们需要对Eureka进行改... 查看详情

《springcloud超级入门》eureka注册中心开启密码认证《十二》(代码片段)

Eureka自带了一个Web的管理页面,方便我们查询注册到上面的实例信息,但是有一个问题:如果在实际使用中,注册中心地址有公网IP的话,必然能直接访问到,这样是不安全的。所以我们需要对Eureka进行改... 查看详情

springcould服务注册中心(代码片段)

文章目录服务注册中心EurekaEureka基础知识什么是服务治理什么是服务注册与发现单机Eureka构建EurekaServer服务安装服务提供者(provider)入驻EurekaServer服务消费者(consumer)入驻EurekaServerEureka工作流程服务发现eureka自... 查看详情

springcould服务注册中心(代码片段)

文章目录服务注册中心EurekaEureka基础知识什么是服务治理什么是服务注册与发现单机Eureka构建EurekaServer服务安装服务提供者(provider)入驻EurekaServer服务消费者(consumer)入驻EurekaServerEureka工作流程服务发现eureka自... 查看详情

springcloud入门--搭建eureka注册中心实现服务者与消费者的服务调用

一、什么是SpringCloud?摘自​​SpringCloud官网​​SpringCloudprovidestoolsfordeveloperstoquicklybuildsomeofthecommonpatternsindistributedsystems(e.g.configurationmanagement,servicediscovery,circuitbreakers,intellig 查看详情

springcloud入门--搭建eureka注册中心实现服务者与消费者的服务调用

一、什么是SpringCloud?摘自​​SpringCloud官网​​SpringCloudprovidestoolsfordeveloperstoquicklybuildsomeofthecommonpatternsindistributedsystems(e.g.configurationmanagement,servicediscovery,circuitbreakers,intellig 查看详情