1.nacos初识,和eureka的⽐较,在docker上安装nacos
nacos基础⽂章3篇
第⼀篇.
第⼆篇.
第三篇.
初⼼
从今天开始研究nacos.
为什么研究这个? 因为现在公司主流开始推荐使⽤nacos了.....虽然, 我们还没有开始⽤....提前做好准备吧.
nacos主要有两⼤作⽤. ⼀个是注册发现, ⼀个是配置管理
我们现在注册发现使⽤的是eureka, 配置管理使⽤的是spring cloud的配置中⼼. nacos⼀下包含了两个⽅⾯. 从服务器成本的⾓度考虑, 好像可以节省点服务器费⽤哈. 毕竟合⼆为⼀了嘛
学习的时候, 会将nacos和eureka,以及spring cloud的配置中⼼对⽐学习. 为什么⼤家都推荐nacos?
不能因为别⼈说好, 我们就说好. 我们要真正知道它好在哪⾥, 为什么好? 了解他的优势,才能更好地取其精华.
知道为什么这么做⽐怎么做更重要
初步拟了⼀个研究⽅案:
1. 了解什么是nacos, 他的优缺点, 好处
2. 对⽐nacos和eureka, config
3. 安装配置nacos. 现在很多都是使⽤docker容器化. 可以试试使⽤docker安装nacos,然后其他操作都在nacos上执⾏
4. 根据官⽹⽂档, 开始学习.
今天先看前三点. 查资料开始......
⼀.  nacos是什么?
分解来看, 框框⾥是nacos是做什么的. 下⾯进⾏解释
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的结构和组件:
nacos-logic.jpg
服务管理:实现服务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⼀样好⽤
这就是nacos的功能了, 在后⾯研究的时候, 可以按照这个图来具体研究.
构建、部署及启动模式:
2种交付⽅式
Nacos ⽀持标准 Docker 镜像(TODO: 0.2版本开始⽀持)及 )压缩包的构建物。
启动模式
Nacos ⽀持将注册中⼼(Service Registry)与配置中⼼(Config Center) 在⼀个进程合并部署或者将2者分离部署的两种模式。
免费的公有云服务模式
除了您⾃⼰部署和启动 Nacos 服务之外,在云计算时代,Nacos 也⽀持公有云模式,在阿⾥云公有云的商业产品(如, ) 中会提供 Nacos 的免费的公有云服务。也可以使⽤阿⾥云公有云提供商提供 Nacos 的公有云服务。
⼆. nacos 和 eureka 优缺点对⽐
Spring Cloud Nacos
优点:
1)开箱即⽤,适⽤于dubbo,spring cloud等
2)AP模型,数据最终⼀致性
3)注册中⼼,配置中⼼⼆合⼀(⼆合⼀也不⼀定是优点),提供控制台管理
4)纯国产,各种有中⽂⽂档,久经双⼗⼀考验
缺点:
1)刚刚开源不久,社区热度不够,依然存在bug
Spring Cloud Eureka:
优点:
1)Spring Cloud 官⽅推荐
2)AP模型,数据最终⼀致性
3)开箱即⽤,具有控制台管理
缺点:
1)客户端注册服务上报所有信息,节点多的情况下,⽹络,服务端压⼒过⼤,且浪费内存
2)客户端更新服务信息通过简单的轮询机制,当服务数量巨⼤时,服务器压⼒过⼤。
3)集伸缩性不强,服务端集通过⼴播式的复制,增加服务器压⼒
4)Eureka2.0 闭源(Spring Cloud最新版本还是使⽤的1.X版本的Eureka)
个⼈觉得, 最终不得不弃⽤eureka的原因就是这最后⼀条, eureka2.0闭源了, 也就是说, 你要想继续使⽤, 对不起, 请交费.........然后, nacos在国内也⾜够优秀....so...nacos得到了⼤⼒发展
所以: 要想在某个时刻获得机会....那么, 请时刻准备好, ⾜够优秀
三. nacos安装在docer上
docker我本地已经安装好了.
第⼀步: 下载镜像
docker pull nacos/nacos-server
这是下载最新版的nacos镜像
第⼆步:查看已经下载的镜像: docker images
第三步: 启动nacos
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
参数解析:
run 启动运⾏容器
--env 配置环境  MODE=standalong 单节点
--name nacos 镜像名称为nacos
-d 守护式容器
-p 8848:8848 端⼝映射
第四步: 在浏览器访问ip:8848/nacos,登录密码默认nacos/nacos
看到如下界⾯, 成功啦!!
第五步: 检测nacos是否可以正常⼯作
1. 往配置中⼼发布配置
nacos是⼀个服务, 他对外也提供了很多接⼝, 其中⼀个是添加配置的接⼝. 我们模拟这个接⼝进⾏配置: curl -X POST "localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
看到返回结果是true. 然后刷新控制台, 可以看到如下
2. 从配置中⼼获取配置
curl -X GET "localhost:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
这个命令就是获取配置
获取helloworld内容
参考资料:
nacos基础⽂章3篇
第⼀篇.
第⼆篇.
第三篇.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。