2025年微服务配置中心选型(微服务配置中心nacos)

微服务配置中心选型(微服务配置中心nacos)p class f center p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2F668b223dj00qjvv2j002sd200sg00atg00id006z.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  作者 | HelloGitHub-秦人<br/></p><p>  来源 | HelloGitHub(ID:Github520)</p><p>  头图 | CSDN 下载自东方IC</p><p>  今天给大家带来一款开源 Java 版可以实现动态服务发现,配置和服务管理平台——Nacos,它是阿里巴巴团队开源符合国人的一切使用习惯,并且中文文档丰富,开源社区也特别活跃。<br/></p><p><blockquote>项目源码地址:https://github.com/alibaba/nacos</blockquote><br/></p><p>  <strong>项目介绍</strong><br/></p><p>  在选择使用一个工具之前,我们先大概了解一下它的同类型产品,这样更能看出它的价值。</p><p>  名称 配置中心 注册中心 依赖 访问协议 版本迭代 集成支持 上手程度 Eureka 不支持 支持 依赖ZooKeeper HTTP 无版本升级 SpringCloud集成 容易,英文界面,不符合国人习惯 Consul 支持 支持 不依赖其他组件 HTTP/DNS 版本迭代中 SpringCloud、K8S 复杂,英文界面,不符合国人习惯 Nacos 支持 支持 不依赖其他组件 HTTP/动态DNS/UDP 版本迭代中 Dubbo、SpringCloud、K8S 极易,中文文档和社区,符合国人习惯</p><p>  三大注册中心</p><p>  提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。主要特性:</p><p>  服务发现:支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的 Agent TODO 注册 Service 后,服务消费者可以使用 DNS TODO 或 HTTP&amp;API 查找和发现服务。</p><p>  服务健康监测:提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。</p><p>  动态配置服务:动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。</p><p>  动态 DNS 服务:动态 DNS 服务支持权重路由,使用者更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。</p><p>  服务及其元数据管理:Nacos 能让使用者从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2Fb28b06a0p00qjvv2j00bhd200u000jeg00id00bv.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  Nacos 生态图</p><p>  <strong>SpringBoot 实战</strong></p><p>  Nacos 主要的功能有配置中心和注册中心。</p><p>  配置中心:通过在 Nacos 上配置用户名,在不重启微服务的情况下实现动态获取配置信息功能。</p><p>  注册中心:创建两个微服务:服务提供者和服务消费者,实现微服务间调用。消费者要调用提供者的接口,只需要声明提供者的微服务名称和接口的请求地址,Nacos 就可准确的找到到对应的接口。</p><p>  <strong>一、运行 Nacos</strong></p><p>  下载地址:https://github.com/alibaba/nacos/releases</p><p>  </p><p>  <strong>访问首页</strong></p><p>  Nacos 的访问地址:http://localhost:8848/nacos/</p><p>  默认账号密码:nacos nacos</p><p>  页面截图如下:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2F17c44772p00qjvv2j001id200u000lyg00id00df.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  <strong>二、配置中心</strong><br/></p><p>  <strong>1、创建微服务项目</strong></p><p>  创建 SpringBoot 项目主要有三种方式:通过网站创建,IntelliJ IDEA 的 Spring Initializr 工具创建,Maven 创建项目形式创建。</p><p>  项目的pom 文件内容如下:</p><p>  </p><p>  <strong>2、bootstrap.yml 配置</strong></p><p>  </p><p>  <strong>3、Nacos 配置</strong></p><p>  Nacos 上创建配置文件名称格式:${prefix}-${spring.profile.active}.${file-extension},如上一步bootstrap.yml的配置可知,我要创建的配置名为:nacos-config-dev.yaml,内容如下:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2F3d41556ap00qjvv2j000pd200u000c3g00id007e.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  <strong>4、创建 Controller</strong><br/></p><p>  动态获取用户名称的功能为例:</p><p>  创建一个对外接口 /username 代码如下:</p><p>  </p><p>  注意:Controller 上要添加 @RefreshScope注解 它实现了配置的热加载。</p><p>  <strong>5、验证结果</strong></p><p>  本地运行项目,可以看到项目的启动时,端口已变为我们在 Nacos 上配置的端口8090。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2Fd5b3db98p00qjvv2j004jd200u0006pg00id0043.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  在浏览器访问链接:http://localhost:8090/username,返回 testuser。修改 Nacos 上 username 的值,不需要重启微服务,重新请求链接 username 的值会动态变。可见 Nacos 作为配置中心实现了热加载功能。<br/></p><p>  <strong>三、注册中心</strong></p><p>  <strong>创建服务提供者</strong></p><p>  创建微服务可参上面<strong>配置中心</strong>的创建方式,创建对外接口 /sayHello 代码如下:</p><p>  </p><p>  启动服务,访问地址:http://localhost:8099/sayHello,可输出:tom say: helloWord,表示微服务已创建成功。</p><p>  <strong>创建服务消费者</strong></p><p>  这里采用 FeignClient 的方式实现跨服务间调用(有兴趣的同学也可以研究一下RestTemplate的方式)。</p><p>  <strong>pom 文件</strong></p><p>  在 nacos-consumer 的 pom 文件要添加 Feigin-Client 的 maven 依赖。</p><p>  </p><p>  <strong>添加注解</strong></p><p>  在微服务启动类 *Application.java 添加注解 @EnableFeignClients。</p><p>  <strong>创建 FeignClient</strong></p><p>  </p><p>  说明:FeignClient 注解传入的 name ,指定 FeignClient 的名称,如果项目使用了 Ribbon,name 属性会作为微服务的名称,用于服务发现。</p><p>  <strong>创建 ConsumerController</strong></p><p>  </p><p>  重启工程,在浏览器**问 http://localhost:8090/hi-feign,可以在浏览器上展示正确的响应,这时 nacos-consumer 调用 nacos-provider 服务成功。</p><p>  下面一张请求流转的时序图,这样理解清晰一些。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1116%2F9a0c4650p00qjvv2k000rd200f3007og00f3007o.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p></p><p>  项目地址:https://github.com/hellowHuaairen/wangzgSpringBootTest<br/></p><p>  <strong>最后</strong></p><p>  微服务有四大特点:</p><p>  小(微服务粒度小)</p><p>  独(独立部署运行和扩展)</p><p>  轻(系统简洁轻量化)</p><p>  松(高内聚低耦合)</p><p>  要完成一个复杂系统往往需要很多微服务单元,而衔接每个微服务,完成微服务的统一管理就非常有必要,所以集成服务管理中心和配置中心的产品就的就应运而生,而 Nacos 是其中的佼佼者!</p><p>  教程至此,你应该也能对 Nacos 有一些了解!光看不练假把式,最快的学习方式莫过于模仿,再通过举一反三才能融会贯通。每一种新工具都是对老工具的革新,有兴趣的小伙伴可以参考我上面的案例,在实践中会发现更多乐趣!<br/></p> 

讯享网
小讯
上一篇 2025-05-10 23:59
下一篇 2025-05-17 19:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199553.html