[TOC]
## 1. 说明
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
## 2.Nacos 地图
一图看懂 Nacos,下面架构部分会详细介绍。

* 特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
* 架构大图:通过清晰架构,让您快速进入 Nacos 世界
* 业务大图:利用当前特性可以支持的业务场景,及其最佳实践
* 生态大图:系统梳理 Nacos 和主流技术生态的关系
* 优势大图:展示 Nacos 核心竞争力
* 战略大图:要从战略到战术层面讲 Nacos 的宏观优势
## 3. Nacos 的关键特性包括:
* **服务发现和服务健康监测**
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用[原生SDK](https://nacos.io/zh-cn/docs/sdk.html)、[OpenAPI](https://nacos.io/zh-cn/docs/open-API.html)、或一个[独立的Agent TODO](https://nacos.io/zh-cn/docs/other-language.html)注册 Service 后,服务消费者可以使用[DNS TODO](https://nacos.io/zh-cn/docs/xx)或[HTTP&API](https://nacos.io/zh-cn/docs/open-API.html)查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
* **动态配置服务**
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI ([控制台样例 Demo](http://console.nacos.io/nacos/index.html)) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
* **动态 DNS 服务**
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的[DNS APIs TODO](https://nacos.io/zh-cn/docs/xx)帮助您管理服务的关联域名和可用的 IP:PORT 列表.
* **服务及其元数据管理**
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
* [更多的特性列表 ...](https://nacos.io/zh-cn/docs/roadmap.html)
## 4.逻辑架构及其组件介绍

* 服务管理:实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能
* 配置管理:实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能
* 元数据管理:提供元数据CURD 和打标能力
* 插件机制:实现三个模块可分可合能力,实现扩展点SPI机制
* 事件机制:实现异步化事件通知,sdk数据变化异步通知等逻辑
* 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮助文档
* 回调机制:sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性
* 寻址模式:解决ip,域名,nameserver、广播等多种寻址模式,需要可扩展
* 推送通道:解决server与存储、server间、server与sdk间推送性能问题
* 容量管理:管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性
* 流量管理:按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制
* 缓存机制:容灾目录,本地缓存,server缓存机制。容灾目录使用需要工具
* 启动模式:按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI
* 一致性协议:解决不同数据,不同一致性要求情况下,不同一致性机制
* 存储模块:解决数据持久化、非持久化存储,解决数据分片问题
* Nameserver:解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题
* CMDB:解决元数据存储,与三方cmdb系统对接问题,解决应用,人,资源关系
* Metrics:暴露标准metrics数据,方便与三方监控系统打通
* Trace:暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通
* 接入管理:相当于阿里云开通服务,分配身份、容量、权限过程
* 用户管理:解决用户管理,登录,sso等问题
* 权限管理:解决身份识别,访问控制,角色管理等问题
* 审计系统:扩展接口方便与不同公司审计系统打通
* 通知系统:核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更
* OpenAPI:暴露标准Rest风格HTTP接口,简单易用,方便多语言集成
* Console:易用控制台,做服务管理、配置管理等操作
* SDK:多语言sdk
* Agent:dns-f类似模式,或者与mesh等方案集成
* CLI:命令行对产品进行轻量化管理,像git一样好用
## 5. 相关资料
* [Github](https://github.com/alibaba/nacos)
* [Nacos手册](https://nacos.io/zh-cn/docs/what-is-nacos.html)
* [Spring Cloud for Nacos Config](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Nacos-config)
* [Spring Cloud for Nacos Discovery](https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wiki/Nacos-discovery)
- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111