初步拟了一个研究方案:
了解什么是nacos, 他的优缺点, 好处
对比nacos和eureka, config
安装配置nacos. 现在很多都是使用docker容器化. 可以试试使用docker安装nacos,然后其他操作都在nacos上执行
根据官网文档, 开始学习.
官网地址: https://nacos.io/en-us/docs/what-is-nacos.html
github地址: https://github.com/alibaba/nacos
比较一下Nacos、Eureka、Consul、Zookeeper:
分解来看, 框框里是nacos是做什么的. 下面进行解释
nacos致力于注册发现, 配置和管理微服务
两个重点: 服务注册发现, 服务配置, 服务管理三个方面
它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理。
动态服务发现: 什么是动态. 之前跟同事讨论过, 动态其中一个方面, 指的是热的含义. 比如服务器注册了, 不用重启, 就能发现. 服务配置修改了, 不用重启服务, 能够自动识别配置修改.
那么服务元数据和流量管理: 这里应该是和负载均衡有关系了. 流量怎么分配, 根据元数据设置, 进行管理
Nacos使构建,交付和管理微服务平台变得更容易,更快捷
如何能够是构建, 交付,管理 微服务平台变得更容易,更快捷呢? 想到了自动化部署那一套. 有一个界面, 点点按钮, 就开始操作了. 不用一台服务器, 一台服务器的去处理.
以上是官网给出的介绍: 经过我的理解, 变成大白话. 哈哈哈
服务是Nacos的头等公民
这有点向一个选词造句. go里面说: 函数是一等公民. channel是一等公民. 这里说nacos是一等公民. 什么是一等公民呢? 就像客户就是上帝一样, 全部围绕客户转. nacos就是全部围绕着服务转
Nacos支持发现,配置和管理几乎所有类型的服务
Kubernetes服务
gRPC和Dubbo RPC服务
Spring Cloud RESTful服务
不多说, 我们现在使用的是spring cloud RESTful服务
Nacos的主要特点:
服务发现和服务运行状况检查
Nacos支持基于DNS和基于RPC(Dubbo / gRPC)的服务发现。服务提供商向本机,OpenAPI或专用代理注册服务后,使用者可以使用DNS或HTTP查找服务。
Nacos提供实时运行状况检查,以防止服务将请求发送到不正常的主机或服务实例。Nacos支持传输层(PING或TCP)健康检查和应用程序层(例如HTTP,Redis,MySQL和用户定义的协议)健康检查。
对于复杂的云和网络拓扑(例如VPC,边缘服务等)的运行状况检查,Nacos提供代理模式和服务器模式运行状况检查。Nacos还提供统一的服务运行状况仪表板,以帮助您管理服务的可用性和流量。
动态配置管理
动态配置服务使您可以在所有环境中以集中,外部化和动态的方式管理所有应用程序和服务的配置。
动态配置消除了在更新配置时重新部署应用程序和服务的需要。
配置的集中管理使您更方便地实现无状态服务和按需弹性扩展服务实例。
Nacos提供了易于使用的UI TODO,可帮助您管理所有应用程序或服务的配置。它提供了一些现成的功能,包括配置版本跟踪,canary / beta版本,
配置回滚和客户端配置更新状态跟踪,以确保安全并控制配置更改的风险。
动态DNS服务
支持加权路由的动态DNS服务使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务。动态DNS服务使您更容易实现基于DNS的服务发现。
Nacos提供了一些简单的DNS API TODO,供您管理DNS域名和IP。
服务治理和元数据管理
Nacos允许您从微服务平台构建器的角度管理所有服务和元数据。这包括管理服务描述,生命周期,服务静态依赖关系分析,服务运行状况,服务流量管理,路由和安全规则,服务SLA和一线指标。
下图可以详细理解nacos的功能
上面这个图是官网给出的. 大概看一下就行. 就是对上面内容的一个总结. nacos有哪些功能, 作用, 优势等.
下面这个图是nacos的结构和组件:
2种交付方式
Nacos 支持标准 Docker 镜像(TODO: 0.2版本开始支持)及 zip(tar.gz)压缩包的构建物。
启动模式
Nacos 支持将注册中心(Service Registry)与配置中心(Config Center) 在一个进程合并部署或者将2者分离部署的两种模式。
免费的公有云服务模式
除了您自己部署和启动 Nacos 服务之外,在云计算时代,Nacos 也支持公有云模式,在阿里云公有云的商业产品(如ACM, EDAS) 中会提供 Nacos 的免费的公有云服务。也可以使用阿里云公有云提供商提供 Nacos 的公有云服务。
优点:
1)开箱即用,适用于dubbo,spring cloud等
2)AP模型,数据最终一致性
3)注册中心,配置中心二合一(二合一也不一定是优点),提供控制台管理
4)纯国产,各种有中文文档,久经双十一考验
缺点:
1)刚刚开源不久,社区热度不够,依然存在bug
优点:
1)Spring Cloud 官方推荐
2)AP模型,数据最终一致性
3)开箱即用,具有控制台管理
缺点:
1)客户端注册服务上报所有信息,节点多的情况下,网络,服务端压力过大,且浪费内存
2)客户端更新服务信息通过简单的轮询机制,当服务数量巨大时,服务器压力过大。
3)集群伸缩性不强,服务端集群通过广播式的复制,增加服务器压力
4)Eureka2.0 闭源(Spring Cloud最新版本还是使用的1.X版本的Eureka)
个人觉得, 最终不得不弃用eureka的原因就是这最后一条, eureka2.0闭源了, 也就是说, 你要想继续使用, 对不起, 请交费.........然后, nacos在国内也足够优秀....so...nacos得到了大力发展
docker我本地已经安装好了.
docker pull nacos/nacos-server
这是下载最新版的nacos镜像
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
参数解析:
-p 8848:8848 端口映射
看到如下界面, 成功啦!!
1. 往配置中心发布配置
nacos是一个服务, 他对外也提供了很多接口, 其中一个是添加配置的接口. 我们模拟这个接口进行配置:
curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
看到返回结果是true. 然后刷新控制台, 可以看到如下
2. 从配置中心获取配置
curl -X GET "http://localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
这个命令就是获取配置
获取helloworld内容