本文主要记录如何在本地搭建Nacos调试环境来进一步学习其源码,如果你也刚好刷到这篇文章,希望对你有所帮助。
1、本地环境准备
Maven: 3.5.4
Java: 1.8
开发工具:idea
版本控制工具: git
2、下载源码
官方仓库地址 :https://github.com/alibaba/nacos
bash
#下载源码
git clone https://github.com/alibaba/nacos.git
# 选择2.4.3 分支
cd nacos
git checkout 2.4.3
接下来将项目导入idea中,选择maven compile
一下
3、启动server端
入口在console模块 com.alibaba.nacos.Nacos
, 启动前先编辑一下,设置成单机模式启动
bash
-Dnacos.standalone=true
启动后观察控制台日志,显示成功启动
bash
2024-12-06 11:14:03.709 INFO 18384 --- [ main] s.a.ScheduledAnnotationBeanPostProcessor : No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
2024-12-06 11:14:03.729 INFO 18384 --- [ main] c.a.n.c.l.StartingApplicationListener : Nacos started successfully in stand alone mode. use embedded storage
2024-12-06 11:14:04.095 INFO 18384 --- [7)-192.168.22.3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-12-06 11:14:04.096 INFO 18384 --- [7)-192.168.22.3] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
在浏览器里输入http://localhost:8848/nacos/index.html
至此已经启动成功了
4、写个demo尝试注册一下
这个我是在client模块下的test包中添加了一个类com.alibaba.nacos.client.naming.MyTest
通过Nacos 工厂类获取了一个NamingService
对象,然后假设存在一个testService的服务,通过调用registerInstance
方法,将其注册到Nacos。
java
/**
* @description:
* @date: 2024/12/5
**/
public class MyTest {
public static void main(String[] args) throws NacosException {
Properties properties = new Properties();
properties.setProperty("serverAddr", "localhost");
properties.put(PropertyKeyConst.NAMESPACE, "public");
//超时时间可以设置长点这样方便后面debug调试观察
properties.put(CommonParams.NAMING_REQUEST_TIMEOUT, "10000");
NamingService namingService = NacosFactory.createNamingService(properties);
namingService.registerInstance("testService", "127.0.0.1", 8080);
System.out.println("服务注册成功!");
}
}
这里可以在最后一行打个断点方便观察,运行main方法后,我们去控制台页面查看一下,发现已经注册上了
当然我们在实际项目中不会这样手动去注册服务,通过引入spring-cloud-starter-alibaba-nacos-discovery
包,然后借助spring自动装配机制来进行自动注册,熟悉spring的朋友应该会很清楚这点。