近几年微服务很火,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,不同的版本控制等。

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

最新文章

  1. Java基础学习 -- 异常
  2. 1.使用Entity Framwork框架常用的技术手段Code First 和Reverse Engineer Code First
  3. why we use Symbols in Hash
  4. USB2.0协议笔记
  5. Get code int value for different encoding
  6. Markdown 生成目录
  7. Html的空格显示
  8. JDBC中事务的使用
  9. java.util.HashMap源码分析
  10. realmock 前后端分离方案
  11. 阿里云maven仓库配置
  12. OAuth2.0 协议的理解
  13. bzoj4940: [Ynoi2016]这是我自己的发明
  14. 媒体查询@media query
  15. 20145118 《Java程序设计》 实验报告四
  16. python 缺失值处理(Imputation)
  17. Python函数系列-Random
  18. Openfire 性能优化
  19. 南阳ACM 题目275:队花的烦恼一 Java版
  20. Maven-常规问题

热门文章

  1. RESTFUL Level&amp;HATEOAS
  2. [转]&lt;版本一&gt;写代码的小女孩
  3. 云服务器 ECS--查找公网ip使用终端连接云服务
  4. 查漏补缺:QT入门
  5. Js对于数组去重提高效率一些心得
  6. Leetcode 943. Find the Shortest Superstring(DP)
  7. [开源福利] Arithmetic Generator
  8. python爬虫-MongoDB安装配置
  9. sofa-bolt源码阅读(1)-服务端的启动
  10. 1,Java知识储备