您现在的位置是: 首页 > 汽车排行榜 汽车排行榜

apollo nacos

佚名 2024-05-21 人已围观

简介apollonacos接下来,我将为大家解答有关apollonacos的问题,希望我的回答对大家有所帮助。现在,我们就开始探讨一下apollonacos的话题吧。1.springboot使用k8s的configMap作为外部配置2.微服务注册中

apollo nacos

       接下来,我将为大家解答有关apollo nacos的问题,希望我的回答对大家有所帮助。现在,我们就开始探讨一下apollo nacos的话题吧。

1.spring boot 使用 k8s 的 configMap 作为外部配置

2.微服务注册中心Consul转Nacos实践

3.微服务架构系列之–最全配置中心对比(面试随便装)

4.运维自动化之nacos,apollo,k8s常用API汇总

5.springboot中获取apollo或者nacos里的配置文件

apollo nacos

spring boot 使用 k8s 的 configMap 作为外部配置

        spring boot 应用以容器的方式运行在 k8s 集群上面是非常方便的,但是不同的环境需要不同的配置文件,我们可以使用外部的配置中心,比如 nacos 、 apollo 。 k8s 也提供了 configMap 用来将环境配置信息和容器镜像解耦,便于应用配置的修改。本文主要从以下几个方面介绍 spring boot 使用 k8s 的 configMap 作为外部配置的使用方法:

        当应用程序启动时,Spring Boot 会自动从以下位置查找并加载 application.properties 和 application.yaml 文件。

        配置文件优先级从高到底的顺序如下:

        高优先级配置会覆盖低优先级配置

        如果我们运行时想指定运行哪个环境的配置文件,可以有三种方式:

        ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时 pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。

        创建 configMap 的几种方式:

        从前面的介绍我们可以知道,spring boot 加载配置文件的最高优先级是项目根路径下的 /config 子目录 ,所以可以将 configMap 中的配置文件挂载到容器中的项目根路径下的 config 子目录中。

        当卷中使用的 configMap 被更新时,所投射的键最终也会被更新。 kubelet 组件会在每次周期性同步时检查所挂载的 configMap 是否为最新。 不过,kubelet 使用的是其本地的高速缓存来获得 configMap 的当前值。 高速缓存的类型可以通过 KubeletConfiguration 结构 的 ConfigMapAndSecretChangeDetectionStrategy 字段来配置。

        configMap 既可以通过 watch 操作实现内容传播(默认形式),也可实现基于 TTL 的缓存,还可以直接经过所有请求重定向到 API 服务器。 因此,从 configMap 被更新的那一刻算起,到新的主键被投射到 Pod 中去,这一 时间跨度可能与 kubelet 的同步周期加上高速缓存的传播延迟相等。 这里的传播延迟取决于所选的高速缓存类型 (分别对应 watch 操作的传播延迟、高速缓存的 TTL 时长或者 0)。

        以环境变量方式使用的 configMap 数据不会被自动更新,更新这些数据需要重新启动 Pod。

        参考文档:

        k8s 官网

        spring boot 官网

微服务注册中心Consul转Nacos实践

        Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

        Nacos主要提供以下四大功能:

        Nacos支持加权路由,使您可以更轻松地在数据中心的生产环境中实施中间层负载平衡,灵活的路由策略,流量控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。

        Nacos提供易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行状况和指标统计。

        nacos具有Apollo大部分功能,最重要的是配置中心与注册中心打通,可以省去我们在微服务治理方面 的一些投入(比如通过动态配置来启停线程池等操作)。

        初步结论为:使用Nacos代替Eureka和apollo,主要理由为:

相比与Eureka:

        (1)Nacos具备服务优雅上下线和流量管理(API+后台管理页面),而Eureka的后台页面仅供展示,需要使用api操作上下线且不具备流量管理功能。

        (2)从部署来看,Nacos整合了注册中心、配置中心功能,把原来两套集群整合成一套,简化了部署维护

        (3)从长远来看,Eureka开源工作已停止,后续不再有更新和维护,而Nacos在以后的版本会支持SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。同时来说,Nacos 计划实现 Service Mesh,是未来微服务的趋势

        (4)从伸缩性和扩展性来看Nacos支持跨注册中心同步,而Eureka不支持,且在伸缩扩容方面,Nacos比Eureka更优(nacos支持大数量级的集群)。

        (5)Nacos具有分组隔离功能,一套Nacos集群可以支撑多项目、多环境。

        相比于apollo

        (1) Nacos部署简化,Nacos整合了注册中心、配置中心功能,且部署相比apollo简单,方便管理和监控。

        (2) apollo容器化较困难,Nacos有官网的镜像可以直接部署,总体来说,Nacos比apollo更符合KISS原则

        (3)性能方面,Nacos读写tps比apollo稍强一些

        结论:使用Nacos代替Eureka和apollo

        系统模块架构

        Nacos提供DNS-F功能

        DNS-F落地的技术价值

        阿里巴巴、虎牙直播、中国工商银行、爱奇艺、中国平安、平安科技、浙江农信、贝壳、丰巢、百世快递、汽车之家等

        完整列表: /docs/quick-start.html 这个是Nacos的官方文档网址,里面有Nacos功能的详细介绍和集成教程。

        3.修改项目原来的配置文件 ,将原来的application.yml 改成 bootstrap.yml配置内容大致如下

        common.yaml 内容如下

        到这里改造就基本完成了,如有问题可以在评论区讨论。

运维自动化之nacos,apollo,k8s常用API汇总

       本文从社区活跃度、产品特点、成功案例、产品缺点等维度,全方位对比Spring Cloud Config、Apollo、Nacos、Disconf、Spring Cloud Consul、Spring Cloud Zookeeper等几款Spring Cloud生态的配置服务器,帮助你选择合适的配置服务器。

        一、Spring Cloud Config

        GitHub地址

       /docs/open-api.html,

        2.Apollo 前台界面 API

        因开放平台未支持授权,故抓取了前台界面的api实现批量授权功能,开放平台的管理需要提前授权才能管理

        3.Apollo 开放平台 API

        本代码包含获取配置,修改配置,发布配置,批量发布配置等功能, 在我的日常工作中,批量发布用的很频繁,

        4.K8S API

        本代码支持文件和文本认证信息,方便根据实际情况开发

       常规的,在springboot中一般只需要拿appolo或者nacos里配置的属性就够了。

        但是也有一些很特殊的场景,要拿到appolo或者nacos里配置的文件,比如有个第三方jar包提供的方法中,要求把properties配置文件路径传进去来初始化第三方jar包里需要用到的东西,这时候一般是把properties文件配置到appolo或者nacos里,但是如何直接拿到这个properties文件而不是里面的属性值呢?

        apollo里直接提供了把配置的相应namespace直接转换成file的方法:

        再把这个content转换成输入流就可以用了

        如果只是想拿到里面某个namespace的属性,则可以:

        key为属性key名,c.getPropertyNames()方法能拿到该namespace下面的所有属性,返回一个Set<String>集合,再遍历这个集合就能拿到所有属性。

        nacos跟apollo的处理思路有点不一样,找了很多资料,貌似没有找到nacos里直接获取整个获取配置文件的方法,后面如果有同学找到了这个方法记得留言提醒我。

        nacos在springboot启动的时候已经把所有配置文件都注入到了spring里。

        第一种:可以直接用注解 @Value("${key}")来获取配置好的属性值

        第二种:在java里获取:

        新建SpringContextUtil实现org.springframework.context.ApplicationContextAware这个接口:

        在启动类用注解导入该类:@Import({SpringContextUtil.class})

        利用org.springframework.core.env.Environment类来直接获取属性:

        如果有这样一个需求,有个第三方的jar包要求初始化配置好的properties文件,只给了properties文件的路径传参,只能用文件路径的方式初始化这个第三方jar包,那么我们就必须保证项目里或者其他文件夹有这个properties文件才可以,而这些配置如果经常要变的话,最好也是配置在nacos或者apollo,如此看来,apollo是可以直接把配置的相应namespace直接转换成file,而nacos大概只能把所有属性手工生成一个新的properties文件来保存到本地了。

        这个生成文件的过程,要在springboot启动之后立即执行:

        那我们就要建一个配置类实现org.springframework.beans.factory.InitializingBean这个接口,重写afterPropertiesSet()方法:把需要启动后执行的逻辑放在里面,下面是一个示例:

        把这个类在启动类里注入:

        如此,在启动的时候就可以在本地生成一个cssconfig.properties文件了。

        于是乎就可以类似这样调用第三方接口(根据第三方jar包来定):

       好了,今天关于“apollo nacos”的探讨就到这里了。希望大家能够对“apollo nacos”有更深入的认识,并且从我的回答中得到一些帮助。