6000 字|20 图|Nacos 手摸手教程(一)
大家好,我是悟空呀。
上次我们讲解了 OpenFeign 的架构原理,这次我们要来进入 Nacos 帝国了,Nacos 作为服务注册中心、配置中心,已经非常成熟了,业界的标杆,在讲解 Nacos 的架构原理之前,我先给大家来一篇开胃菜:讲解 Nacos 如何使用。
涉及到如下两个话题:
• 用 Nacos 作为注册中心。
• 用 Nacos 作为配置中心。
由于本篇是针对 Nacos 的使用和配置教程,可能会略显枯燥,建议大家快速浏览一遍,然后收藏转发下,以后说不定就会用上了~~
本篇主要内容如下:老规矩,本篇所有示例代码都是用我的开源 SpringCloud 项目 PassJava 作为示例。
开源地址: https://github.com/Jackson0714/PassJava-Platform
喜欢的小伙伴来点个 Star 吧,冲 2K Star。
PassJava 架构图如下所示:Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
一、Nacos 作为注册中心
1.1 引入 Nacos 服务发现组件
passjava-common模块的pom.xml文件引入Nacos 服务发现组件
<!-- nacos discovery 服务发现组件-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
1.2 下载 Nacos Server 工具包并启动
注意:我在 Windows 和 Mac 上都测试过,都可以正常使用。
• 下载Nacos Server 压缩包
https://github.com/alibaba/nacos/releases
启动 Server,进入解压后文件夹或编译打包好的文件夹,找到如下相对文件夹 nacos/bin,并对照操作系统实际情况之下如下命令。
1.Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone
2.Windows 操作系统,执行命令 cmd startup.cmd
windows执行startupm.cmd遇到问题:
λ startup.cmd
Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!
解决方案:
修改startup.cmd文件中的 %JAVA_HOME%
%JAVA_HOME% 替换为 C:\Program Files\Java\jdk1.8.0_131
启动成功:1.3 每个微服务都配置 Nacos Server 地址
• 配置Nacos Server 地址
在passjava-question、passjava-channel、passjava-content、passjava-member、passjava-study 应用的 /src/main/resources/application.yml配置文件中配置 Nacos Server 地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
1.4 添加注解
为每个服务使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
@EnableDiscoveryClient
@MapperScan("com.jackson0714.passjava.question.dao")
@SpringBootApplication
public class PassjavaQuestionApplication {
public static void main(String[] args) {
SpringApplication.run(PassjavaQuestionApplication.class, args);
}
}
1.5 配置微服务的名称
spring:
application:
name: passjava-question
1.6 访问nacos server后台
• 登录后台
http://localhost:8848/nacos/index.html#/login
用户名:nacos
密码:nacos • 查看已注册的服务
passjava-channel 渠道微服务
passjava-member 用户微服务
passjava-study 学习微服务
passjava-question 问题微服务
passjava-content 内容微服务