专栏首页架构师玄学之路Nacos源码分析系列之Naming模块-如何运行篇

Nacos源码分析系列之Naming模块-如何运行篇

Nacos源码分析系列之Naming模块-如何运行篇

Naming模块其实Nacos框架实现服务治理功能的核心模块,这个模块具备很多核心功能,本次先从如何运行开始剖析。

1 Naming服务如何启动

  • 首先Naming是一个独立的SpringBoot应用服务,通过@SpringBootApplicationmain函数启动,关于SpringBoot原理这里就不剖析了,默认大家否知道。
/**
* Hello world!
*
* @author xxc
*/
@EnableScheduling
@SpringBootApplication
public class NamingApp {

   public static void main(String[] args) {
       SpringApplication.run(NamingApp.class, args);
  }
}
  • @EnableSchedulingSpring框架的注解,用过这个注解的人都知道,这个是框架自带的一个单机模式的定时任务
  • @SpringBootApplication注解会启动整个应用具体逻辑请查阅SpringBoot源码框架

那么我们这里就知道,Naming模块就是一个独立的SpringBoot服务,可以单独启动。

2 启动资源

启动过程中,Naming模块加载了哪些资源呢?

  • 加载RestfulAPI,比如CatalogController、ClusterController、DistroController、HealthController、InstanceController、OperatorController、RaftController、ServiceController和ApiController,包路径:com.alibaba.nacos.naming.controllers,那么这里就可以看到,Naming模块的通信机制是HTTP
  • 服务集群的一致性性算法Raft(CP模式)以及基于内存的AP模式,包路径:com.alibaba.nacos.naming.consistency
  • 上下文和运行配置,比如RunningConfigSpringContext
  • 集群管理核心功能,比如订阅管理、实例管理以及服务管理等,包路径如下:com.alibaba.nacos.naming.core
  • 健康检查,包路径:com.alibaba.nacos.naming.healthcheck
  • 全局异常响应异常处理:ResponseExceptionHandler
  • 度量监控以及性能指标监控,比如:MetricsMonitorPerformanceLoggerThread
  • 推送服务:PushService

当然这里并没有列全所有启动的资源,还有一些资源,这里就不一一列举了,感兴趣的同学可以自己去查阅。

3 总结

  • Naming模块靠SpringBoot框架启动
  • 启动一个web服务,会启动很多资源,完成服务治理功能。

本文分享自微信公众号 - 架构师玄学之路(andy_aty),作者:游侠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微服务架构-SpringBoot2.0.3源码之web容器篇(二)

    用户6969969
  • 基础能力框架演进

    用户6969969
  • 高并发系统设计-redis技术梳理

    架构师就是梳理技术,整理文档,落地技术方案,首先架构师需要梳理下redis能为我们解决什么问题,以及redis的技术门槛,redis的优势和缺点。

    用户6969969
  • 扩展Yarn资源模型详解1

    问题导读 1.countable资源是指哪些? 2.noncountable资源,本文列举了什么资源? 3.标签是否为资源? 4.如何实现扩展YARN资源模型...

    用户1410343
  • Mapreduce 任务提交源码分析1

    提交过程 一般我们mapreduce任务是通过如下命令进行提交的 $HADOOP_HOME/bin/hadoop jar $MR_JAR $MAIN_CLASS...

    囚兔
  • Golang常见的坑笔记

    Format 的时候 时间必须是 2006-01-02 15:04:05 ,奇葩时间。

    solate
  • 58到家MQ如何快速实现流量削峰填谷

    问:为什么会有本文? 答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下...

    架构师之路
  • Stack Stracture

    Because stack是Last in first out. 因此数组的index是0最适合做栈底, 因为变化最小

    CoffeeLand
  • springmvc框架解决跨域问题,就是前端是ajax发送的消息,后端接收不到,这个就需要解决跨域的问题了

    Ajax请求是否会出现跨域问题,取决于Ajax请求的contentType类型,这里简单试了几个contentType类型:

    一天不写程序难受
  • 出栈顺序问题的一般解决方法

    KevinBruce

扫码关注云+社区

领取腾讯云代金券