Nacos,一款非常优秀的注册中心(附视频)

news/2024/7/10 1:37:27 标签: 负载均衡, java, 运维

Nacos 核心源码精讲 - IT贱男 - 掘金小册全方位源码精讲,深度剖析 Nacos 注册中心和配置中心的核心思想。「Nacos 核心源码精讲」由IT贱男撰写,375人购买https://s.juejin.cn/ds/BuC3Vs9/

先简单说两句

你好,很高兴你能够点开本小册,相信你一定是对本小册产生了一点点兴趣。接下来我再占用你 5 分钟时间,邀请你认真浏览一下本章,相信这 5 分钟,能够让你对 Nacos 更加感兴趣。

作者我没有高学历,没有雄厚背景,没有待过阿里、腾讯、华为、字节,我只有一颗对技术知识渴望的心、高颜值和 1 米 8 的个头。

从 2013 年的冬天我开始学习 VB(Visual Basic)语言,时隔一年开始学习 C 语言、C#,2015 年接触 Java 到现在,算下来在研发领域也将近十年之余了。学习技术是我坚持最久的一件事,把爱好发展成职业,也慢慢喜欢去分享技术,从 2018 年开始写技术相关的博客,相信技术、传递价值。

本小册最初的由来: 有一天我在逛掘金课程的时候,没有发现专门讲解 Nacos 源码相关的课程,那怎么行?所以,我在 2022 年 6 月份开始规划 Nacos 的学习路线,并且 11 月决定用小册的方式写下来。

为什么想讲注册中心?

注册中心,是我们踏入微服务门槛的第一个组件,同时也是微服务必备的一个组件。

在传统的服务与服务之间调用,A 服务想要调用 B 服务,最常见的就是在项目中通过 ip + port 进行调用,如果 B 服务是集群,那我们还需要自己搭建一个负载均衡服务来实现,这种方式的缺点有:

  • 需要在项目中维护调用的 ip + port,更改还需要重启应用,不灵活;
  • 集群实例增加,需要额外来更改负载均衡配置。

使用注册中心,能够很好地实现服务治理、服务动态扩容,以及调用时能有负载均衡的效果,调用链路如下:

  • 服务提供者:每台服务提供者,会把自己本身的 ip + port 信息提供给注册中心。
  • 注册中心:会记录每台服务名称以及每台服务对应的 ip + port。
  • 消费者:订阅注册中心,根据服务名称,动态根据负载均衡策略选择其中一台 ip + port ,从而完成服务调用。

采用注册中心这种方式就能很好地解决传统模式中的痛点,并且能够很好地管理、监控服务,所以它成为了微服务中必备的组件之一,同时也是我们必须掌握的。

为什么会选择 Nacos?

Nacos 则是一款非常优秀的注册中心框架,在市场的使用占有率也是日益增长,它不仅仅帮助我们管理服务,还能帮助我们管理项目中的配置文件。

Nacos 提供了一个简洁易用的 UI 来帮助我们管理所有服务和应用的配置, Nacos 两个核心功能如下。

  • 服务管理。Nacos 可以为我们提供很好的服务治理,服务实例状态响应时效快,Nacos 可以根据 Namespace 命名空间、Group 分组来区分不同的项目、不同的环境,使用上更加灵活。而且 Nacos 还提供了对服务实时的健康检查,阻止向不健康的主机或服务实例发送请求。

  • 配置管理。Nacos 可以让微服务配置中心化,采用外部化和动态化的方式管理所有环境配置和应用配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

除此之外,在学习过程中,你还会发现 Nacos 有如下优点

  • 第一个,学习门槛不高

    学习 Nacos 的源码,绝对不像 Spring 那样烧脑,Spring 中的源码我每年都需要不断地去学习,逻辑也比较复杂,对于经验不够的同学,学习 Spring 门槛太高了。Nacos 不一样,Nacos 服务端其实就是一个SpringBoot项目,它也有Controller,它里面也会使用@RestController@RequestMapping注解,这些同学们都应该很熟悉了吧,所以源码阅读起来也会比较得心应手。

  • 第二个,优秀的设计思路

    Nacos 里面有很多好的设计思路,比如 Nacos 支撑高并发异步任务 + 内存队列这种设计思想, 在实际工作中需要大量处理一些不紧急的任务时,就可以借鉴 Nacos 里面的源码实现思路,还有 Nacos 中的http请求包,我也是参考 Nacos 的源码,最后运用在公司业务网关模块中,使公司网关对于业务处理更加灵活、方便。(所以,再灵魂拷问下,你们觉得学习源码有用吗?)

  • 第三个,源码简洁清爽

    Nacos 的源码是真的很清爽,方法里面的逻辑基本是一屏就能浏览完,下图是实例注册源码中的部分源码截图:

本小册主要学习内容

做事情,凡事都讲究一个方式方法,我们学习源码也是一样。

本小册源码讲解过程中,并非是直接告诉你,这一块代码有什么用、那一块代码有什么用,因为这样缺少了一个分析过程,学习效果不好。 而是以第一人称的方式,从官方文档浏览、项目实战、思考问题、查看源码解决问题的方法,带着大家一步一脚印,慢慢挖掘 Nacos 源码。

对于没有使用过 Nacos 的同学,在前面第一模块的学习中,我会讲解 Nacos 相关概念和原理、搭建、项目实战,在实战过程中,会带大家总结一些疑问。有了疑问,我们学习源码才不会迷茫、枯燥,也是循序渐进。

本小册一共分为 三大模块

第一模块,主要讲解 Nacos 核心功能源码,最基本的实例注册、服务发现、健康心跳检查、服务下线等核心源码,尤其是实例注册这一块,会涉及到 Nacos 内存注册表、高并发异步任务架构、内存任务队列、并发读写冲突核心源码。

第二模块,在上一模块的基础之上,再来讲解集群的相关源码。由于很多同学都不了解什么是 CAP 原则,所以这一模块首先是详细讲解 CAP 原则、什么是 CP 架构和 AP 架构,以及 Raft 协议理论知识。学习完理论之后,我们再回到 Nacos 源码当中,分析一下 Nacos 是如何实现 Raft 协议的,以及在集群架构下,心跳集群架构、节点状态集群同步、新增实例集群同步等源码分析。

第三模块,主要讲解客户端启动如何读取配置文件、如何感知配置文件变更,Nacos 服务端如何持久化配置文件,以及集群架构多节点数据同步等。

本小册的详细课程目录如下图:

在源码学习的过程中,边学习,边总结,边画图。 画图的好处就是更加直观地总结学习内容,并且对于后期的复习也是有很大帮助的。每一个章节源码总结图我也会画好贴出来,但这个是“别人”总结的,希望你在学习的时候,能够自己动手画,这样才是属于自己的。

适宜人群

学习本小册至少是要了解微服务概念和常见的组件,使用过最好。这个我相信应该都没什么问题,我以前刚毕业那会儿,会用 Spring、MyBatis 就可以了,现在我面试初级的程序员,简历项目中,都会涉及到 Spring Cloud 等相关技术,真是一代更比一代强。

适合工作经验一两年,想要在技术这一块儿进阶的同学,Nacos 源码是一个很好的选择。对 Nacos 源码比较感兴趣的同学,那本小册就更加符合你的胃口了。

最后

感谢你花费 5 分钟来查看本章内容,期待你的加入,相信学习完会收获满满!!!

技术分享是美好的,技术提升是关键的,技术原理是核心的,你们的支持,才是我写下去的动力,谢谢大家!


http://www.niftyadmin.cn/n/55914.html

相关文章

ChatYuan元语AI: 类似ChatGPT功能型对话大模型

ChatYuan元语AI 元语智能开发团队训练了一个类似ChatGPT的功能型对话大模型ChatYuan. 类似ChatGPT模型, 中文开源版,功能型对话大语言模型. 功能有:支持训练端到端文本生成文本生成情感分析句子相似度零样本分类命名实体识别翻译自然语言推理问答文本纠错文本摘要FAQ问答文本…

vsCode添加右击打开文件夹或者文件功能

1. 前言 vsCode有两种安装方式,通过exe执行安装或者绿色版的软件安装。如果使用绿色版软件,不会自动右击文件夹用vscode打开。此时就需要通过修改注册表的方式进行操作。 2. 修改注册表 2.1 打开注册表 win r regedit2.2 右击文件用vscode打开 找到…

Python-项目实战--飞机大战-碰撞检测(8)

目标了解碰撞检测方法碰撞实现1.了解碰撞检测方法pygame提供了两个非常方便的方法可以实现碰撞检测:pygame.sprite.groupcollide()两个精灵组中所有的精灵的碰撞检测groupcollide(group1, group2, dokill1, dokill2, collided None) -> Sprite_dict如果将dokill…

分享113个JS菜单导航,总有一款适合您

分享113个JS菜单导航,总有一款适合您 113个JS菜单导航下载链接:https://pan.baidu.com/s/1d4nnh-UAxNnSp9kfMBmPAw?pwdcw23 提取码:cw23 Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "http…

图形编辑器:绘制图形需要用到的填充算法

大家好,我是前端西瓜哥。今天我们来谈谈图形编辑器中,简单说说图形编辑实现图形工具,需要用到的填充算法。 图形的特点是宽高是固定的,在图形编辑器绘制图片有两种方案。 一种是将 宽高比锁死,不允许改变&#xff0c…

【机器学习】聚类算法(理论)

聚类算法(理论) 目录一、概论1、聚类算法的分类2、欧氏空间的引入二、K-Means算法1、算法思路2、算法总结三、DBSCAN算法1、相关概念2、算法思路3、算法总结四、实战部分一、概论 聚类分析,即聚类(Clustering)&#xf…

【AI简报第20230210期】 ChatGPT爆火背后、为AIoT和边缘侧AI喂算力的RISC-V

1. ChatGPT爆火背后:AI芯片迎接算力新挑战原文:https://www.163.com/dy/article/HT7BHN3C05199NPP.htmlChatGPT的出圈走红为AIGC打开全新市场增量,催生了更高的算力需求。作为人工智能三大核心要素之一,算力也被誉为人工智能“发动机”。华泰…

聊聊什么是架构,你理解对了吗?

什么是架构?软件有架构?建筑也有架构?它们有什么相同点和不同点? 下面咱们就介绍一下,容易混淆的几个概念 一、系统与子系统 系统 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是 “总体”、“整体”或“联盟” 子系…