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配置中心的主要内容,如果未能解决你的问题,请参考以下文章