近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案。其中Spring Cloud Alibaba是咱们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案。mysql
包含微服务开发的必要组件,基于SpringCloud 符合SpringCloud标准,是阿里的微服务的解决方案。linux
文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.mdgit
Nacos是其中一个组件。是阿里开源的可用于注册中心和配置中心的开源组建。github
下载安装也比较简单,只须要下载一个压缩包便可,解压便可用,windows和了linux都适用。spring
个人是windows,而后下载的是nacos-server-1.1.4.zip,选择一个目录解压的到以下文件。sql
只须要切换到bin目录下,双击startup.cmd,就会看到打开了一个cmd窗口数据库
等待一会,如下这样就是启动好了编程
而后,浏览器访问,http://localhost:8848/nacos 打开他的控制台,用户名密码都是nacos,而后进来就是这样,就启动好了。windows
是否是简单。浏览器
而后咱们能够写一个服务去注册到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的包复制三个,以下图:
第二:进入到各自的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和端口)
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的一个入门案例,就分享到这里。
一、Nacos同一个程序包同时支持Windows和Linux。
二、支持单机启动和集群启动
三、Windows单机启动直接双击 startup.cmd,Linux执行 ./startup.sh -m stanalone
四、配置好集群后,Windows集群启动CMD窗口下执行 startup.cmd -m cluster,Linux直接执行./startup.sh
五、集群下客户端可以使用多地址逗号隔开的方式,也可以使用集群+Nginx的方式,推荐后者。
Nacos还有更加细粒度的注册中心配置方式,如不一样的环境,不一样Group,不一样的location,不一样的版本控制等。
欢迎关注个人公众号:编程大道,一块儿交流学习。