apollo配置中心

Posted 陈如水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

就是地址没搞明白。

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

以上是关于apollo配置中心的主要内容,如果未能解决你的问题,请参考以下文章

Apollo配置中心源码分析

apollo获取配置

apollo配置中心

apollo配置中心

apollo配置中心

配置中心apollo入门