• apollo配置中心


    apollo管理界面,应用程序要集成apollo的客户端。

    apollo配置本地缓存文件。

    apollo配置中心

    1,客户端和服务端交互的两种方式:服务端推送,客户端拉取。

    2,程序员修改/发布配置到配置中心。

    3,如何搭建apollo配置中心服务端?阿波罗配置中心的运行依赖数据库。

    4,如何在应用程序中集成阿波罗客户端?如何通过日志判断应用程序已经拿到了配置中心的配置?

    5,apollo管理控制台,apollo控制台的访问地址是什么? 对应哪个应用程序?

    6,如何发布配置? 添加配置,发布配置.首先要创建一个项目。应用id就是应用的唯一标识.进入项目详情,看到的是项目信息和配置信息.

    7,应用程序如何读取配置?

    Config config=ConfigService.getConfig()类中.通过配置对象,获取配置信息.第一个参数是配置的key,第二个参数是配置的默认值.

    springboot如何集成logstash ?

    报错信息:app id is not set. 获取哪个项目的配置?

    1)应用id是指应用的唯一标识;

    2)应用环境.某个配置是隶属于某个项目的某个环境的.

    3)还需要指定apollo配置中心的地址.

    4)@EnableApolloConfig.

    idea中:以系统属性的方式来配置,配置中心的地址.vm options.在生产环境怎么使用呢? 支持热发布.

    从管理中心发布配置,到应用程序获取配置的过程。

    apollo工作原理

    系统架构图

    1)Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端

    2)Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)

    Eureka提供服务注册和发现,为了简单起见,目前Eureka在部署时和Config Service是在一个JVM进程中的。Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳。在Eureka之上架了一层Meta Server用于封装Eureka的服务发现接口

    3)Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试

    4)Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试

    为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中。

    核心概念:

    1,application (应用):就是我们的工程,我们的项目。实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置。

    关键字:appId。 如何理解应用id?客户端连接的时候要用。

    2,environment (环境) 配置对应的环境,Apollo客户端在运行时需要知道当前应用处于哪个环境,从而可以去获取应用的配置。

    关键字:env

    3,cluster (集群) 一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。

    关键字:cluster

    4,namespace (命名空间):一个应用下不同配置的分组,可以简单地把namespace类比为文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC配置文件,应用自身的配置文件等。(数据库配置,动态配置,分属不同的文件,和58的配置中心一样)

    关键字:namespaces

    apollo项目管理

    如何配置部门:管理员工具------>系统参数

    如何配置权限:管理员工具------>用户管理。创建项目的时候,可以添加zhangsan为负责人。不同的用户看到的项目多少不一样。

    如何删除应用:管理员工具------>删除应用。

    apollo配置管理

    如何添加namespace? 默认的命名空间是application。命名空间有公共和私有的区别。

    命名空间的名称是什么?

    如何读取指定命名空间的配置?读取默认命名空间下的配置。

    公共配置的使用? 需要先创建一个公共项目,能够让其他项目继承。创建一个命名空间,命名空间类型需要选择共有。

    环境下包含集群,如果不创建集群,会存在默认集群。

    在不同的集群下,进行同步配置。

    如何读取这个新的集群的配置?

    配置发布的主要过程:

    1,用户在Portal操作配置发布,

    2,Portal调用Admin Service的接口操作发布,

    3,Admin Service发布配置后,发送ReleaseMessage给各个Config Service,

    4,Config Service收到ReleaseMessage后,通知对应的客户端。

    分布式环境下使用apollo系统

    1,指定appId,和配置中心保持一致。

    2,开启apollo配置。 @EnableApolloConfig。通过@Value读取配置信息。

    3,配置对应的命名空间。获取哪些命名空间的配置。

    4,创建apollo-env.properties

    5,本地缓存文件地址。

    本地缓存目录的配置

    本地缓存路径:Apollo客户端会把从服务端获取到的配置,在本地文件系统缓存一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。本地配置文件会以下面的文件名格式放置于配置的本地缓存路径下:{appId}+{cluster}+{namespace}.properties

    可以通过如下方式指定缓存路径,通过Java System Property的apollo.cacheDir:-Dapollo.cacheDir=/opt/data/apollo-config

    公司是什么切换阿波罗环境的?

    两套环境,测试环境和生产环境不同。新建项目的时候,要对两个环境进行配置。

    公司是如何做灰度发布的?

    apollo 灰度只是配置的灰度,不是代码的灰度,功能有些鸡肋。

    本地启动需要配置apollo地址。

    有几个客户端连接到配置中心?实例列表tab选项卡。

    通过apollo进行灰度发布,其实只是针对配置的灰度,生产中需要的是对代码的灰度,先升级一台机器,观察日志。

    配置灰度规则,灰度发布,全量发布。

    -Dapp.id=account-service -Denv=DEV -Dapollo.cluster=SHAJQ -Ddev_meta=http://10.141.48.10:18070

    -Dapp.id=case1 -Denv=DEV -Ddev_meta=http://10.141.48.10:18070

    应该是地址错了,服务器端地址和管理控制台地址不同。地址配置

    -Dapp.id=case1 -Dapollo.configService=http://10.141.48.10:18080 -Dapollo.cacheDir=/tmp

    就是地址没搞明白。

    已经可以获取到配置了,测试环境怎么规范使用这个组件?

  • 相关阅读:
    【MySQL基础】数据库系统之关系型数据库与非关系型数据库
    valarray 包含对象成员的类(cpp14章)
    Java 中那些绕不开的内置接口 -- Comparable 和 Comparator
    实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅
    行业寒冬下逆势拿到50万offer,看看大牛是怎么做到的
    lock、tryLock、lockInterruptibly有什么区别?
    Vue路由模式:hash和history
    实训笔记——Spark SQL编程
    书签收藏难整理?这款书签工具管理超方便
    springboot+redis
  • 原文地址:https://blog.csdn.net/chenrushui/article/details/126606344