文章目录

  • Nacos源码阅读开篇
    • 看源码的方法
    • nacos服务注册与发现源码剖析
      • nacos核心功能点
      • nacos服务端原理
      • nacos 客户端原理
    • 下载Nacos源码
    • 配置单机启动

Nacos源码阅读开篇

看源码的方法

  1. 先使用:先看官方网站提供的文档,快速掌握框架的基本使用
  2. 关注核心功能: 在使用的过程中关注核心功能,然后来观察这些核心功能的代码
  3. 总结归纳:总结源码中的一些核心点,同时最好能够跟着源码来做出核心流程图,这样就可以把源码中的核心亮点找出并标记,后续就可能会借鉴到实际工作项目中,同时要善于用Debug,来观察源码的执行过程,观察一些关键变量的值的变化。当我们把框架的所有功能点的源码都分析完成后,回到主流程再梳理一遍,最后在自己脑袋中形成一个闭环,这样源码的核心内容和主流程就基本上理解了。

nacos服务注册与发现源码剖析

nacos核心功能点

服务注册:nacos client 会通过发送REST 请求的方式向nacos server 注册自己的服务,提供自身的元数据,比如自身的ip、端口等信息。nacos server接收到注册请求后,就会把这些元数据信息存储到一个双层的内存map中。

服务心跳: nacos server 会启动一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy 属性置于false(客户端服务发现是不会发现),如果某个实例超过30秒 没有收到心跳,直接剔除该实例(被剔除的实例如果恢复心跳则会重新注册)

服务健康检查: nacos server 会启动一个定时任务用来检查注册服务实例的健康情况,对于超过15s 没有收到客户端心跳的实例会将它的 healthy 属性置为 false(客户端服务发现时不会发现),如果某个实例超过30s 没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)

服务发现: 服务消费者(nacos client) 在调用服务提供者的服务时,会发送一个REST 请求给 nacos server,获取上面注册的服务清单,并且缓存在nacos client 本地,同时会在nacos client 本地启动一个定时任务定时拉去服务端最新的注册表信息更新到本地缓存。

服务同步: nacos server集群之间会相互同步服务实例,用来保证服务信息的一致性。

nacos服务端原理

nacos 客户端原理

其实从以上的两张图中我们就能够找到突破口了,其实核心内容就集中在nacos-console、nacons-naming、nacos-config,这几个模块中。那么知道了这些,现在我们就来进行nacos的源码下载,然后我们具体分析。

下载Nacos源码

本地需要通过nacos源码来运行nacos,所以下载地址:http://github.com/alibaba/nacos,

  1. 点击idea 工具栏中的 [File] ->[New] -> [Project from Version Controller]

  2. 复制nacos 项目的clone 地址

    3.复制到URL栏中,并点击 [Clone] 即可

  3. 这个就是下载后的项目结构

配置单机启动

-Dnacos.standalone=true -Dnacos.home=/Applications/myproject/nacos

配置好之后就可以运行测试,和启动普通的SpringBoot聚合项目一样,启动之后我们也可以直接访问:http://localhost:8848/nacos,这个时候就能看到我们之前看到的对应客户端页面了,在此为止我们的nacos 源码启动就完成了

Nacos源码阅读开篇之下载源码相关推荐

  1. java经典源码 阅读_公开!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例...

    我们为啥要阅读源码? 为什么面试要问源码?为什么我们Java程序员要去看源码?相信大多数程序员看到源码第一感觉都是:枯燥无味,费力不讨好!要不是为了"涨薪"我才不去看这个鬼东西!但 ...

  2. android源码阅读笔记1-配置源码路径/阅读源码方法讨论

    开始之前 android studio中配置android源码路径 android studio中有源码的路径,你只需要打开SDK Manager下载源码然后重启android studio即可查看源 ...

  3. 4 weekend110的hdfs下载数据源码跟踪铺垫 + hdfs下载数据源码分析-getFileSystem(值得反复推敲和打断点源码)...

    Hdfs下载数据源码分析 在这里,我是接着之前的,贴下代码 package cn.itcast.hadoop.hdfs; import java.io.FileInputStream; import ...

  4. Tomcat源码解析一:下载源码与导入eclipse

    自从写web程序以来,web程序是如何在Tomcat中运行的一直困惑着我,不知道底层的运行机制是无法真正理解web的,所以就开始研究Tomcat源码,Tomcat是一个轻量级的java服务器,再结合& ...

  5. 源码阅读:AFNetworking(十六)——UIWebView+AFNetworking

    该文章阅读的AFNetworking的版本为3.2.0. 这个分类提供了对请求周期进行控制的方法,包括进度监控.成功和失败的回调. 1.接口文件 1.1.属性 /**网络会话管理者对象*/ @prop ...

  6. Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建

    前提 前几天面试的时候,被问过 Spring Boot 的自动配置源码怎么实现的,没看过源码的我只能投降��了. 这不,赶紧来补补了,所以才有了这篇文章的出现,Spring Boot 2. 0 源码阅 ...

  7. Zookeeper源码阅读(一)Jute和传输协议

    前言 最近开始了Zookeeper的源码阅读和分析,也从现在开始把之前和现在学习到的一些Zookeeper的源码知识和我的一些理解放到博客上.不得不说这是自己第一次去完整的看一个开源项目的完整源码,从 ...

  8. Netbeans使用maven下载源码

    如果需要研究源码,自然需要下载源码,其实Netbeans使用maven构建项目下载源码非常简单. springmvc一开始没有下载源码 commons-lang3是下了源码的,下面是对其调用的代码 可 ...

  9. 源码阅读:SDWebImage(六)——SDWebImageCoderHelper

    该文章阅读的SDWebImage的版本为4.3.3. 这个类提供了四个方法,这四个方法可分为两类,一类是动图处理,一类是图像方向处理. 1.私有函数 先来看一下这个类里的两个函数 /**这个函数是计算 ...

最新文章

  1. 从hook007学习dll劫持自启动方式
  2. FPGA之道(64)代码中的约束信息(一)保持约束
  3. 企业开发与社交开发相辅相成
  4. 上云有风险 公有云选型小心进坑
  5. eclipse总是自动跳到ThreadPoolExecutor解决办法
  6. php 串口通信例程,HAL库串口通信例程
  7. struts项目部署在Tomca上在断网情况下启动报错
  8. 编程语言安全性排行榜:Ruby最佳,C语言漏洞最多?
  9. 多个客户端共用同一条拉起链接 ,如何配置 Universal Link iOS App
  10. cefsharp.core.dll找不到指定模块_DeepFaceLab错误:DLL Load failed 找不到指定模块!
  11. MySQL 约束语法
  12. 某宝抢购taobaosnap开发与实现
  13. nmap下载和扫描教程
  14. java编程:假定公鸡5元钱1只,母鸡3元钱1只,小鸡1元钱3只。现在有100元钱要求买100只鸡,请编程列出所有可能的购鸡方案。
  15. 张一鸣:年轻人一定要懂得延迟满足
  16. 高仿美团iOS版,版本号5.7
  17. 大数据学习路线思维导图
  18. android 判断APP是否第一次打开
  19. jasper 导出html,使用jasper导出HTML并解决图片显示问题代码
  20. Flash应用安全规范

热门文章

  1. 设计美学 第四章 技术革命与设计革命
  2. 移动用户和1860小姐录音(有录音,请开喇叭)
  3. linux内核模块调试信息,linux内核模块调试
  4. Unity控制摄像机(Camera)实现 缩放 和 旋转(上下左右)。
  5. truffle unbox react-box过程进行到downloading时失败
  6. 好玩还能舔!画质最逆天的“3D台球”游戏,仅由1人4年独立开发,附完整源代码!
  7. (原創) 如何讓ThinkPad X61在32位元Windows XP『用』到4GB記憶體? (NB) (ThinkPad) (OS) (Windows)
  8. Couldn't find an AF_INET address for
  9. 单源最短路径-迪杰斯拉特算法
  10. 从第一性原理谈谈如何做好智驾产品