当前位置: 首页 > news >正文

Apollo配置中心及Python连接

本文将会介绍如何启动Apollo,在Apollo中配置参数,以及如何使用Python连接Apollo.

Apollo介绍

在文章Python之读取配置文件和文章Python之配置文件处理中,笔者分别介绍了如何使用Python来处理ini, yaml, conf等配置文件。这种配置方式比较方便本地加载,但囿于项目的复杂性、安全性、稳定性等角度考虑,我们需要借助其它的配置工具来实现更高效、高可靠的参数配置,其中之一便是Apollo


Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Apollo的优点如下:

  • 部署简单
  • 灰度发布
  • 版本发布管理
  • 提供开放平台API
  • 客户端配置信息监控
  • 提供Java和.Net原生客户端
  • 配置修改实时生效(热发布)
  • 权限管理、发布审核、操作审计
  • 统一管理不同环境、不同集群的配置

Apollo启动

我们采用Docker-Compose方式来启动Apollo,参考Github项目apollo-quick-start中给出的介绍,可以方便地在本地启动Apollo

如果使用的是 arm 架构的机器,例如 mac m1,需要下载docker-compose-arm64.yml。

docker-compose -f docker-compose-arm64.yml up -d

如果是其他架构的机器,如x86,则直接启动:

docker-compose up -d

Apollo配置

启动成功后,在浏览器中输入网址localhost:8070打开Apollo配置页面,账号apollo,密码admin,环境选择DEV,创建应用ai_service_1,app id 为ai_test,配置参数如下:


在管理秘钥中创建秘钥,点击发布按钮即可发布配置好的变量。

Python连接Apollo

Apollo天然支持Java, Net连接,支持度较好,对于Python,也有热心的开发者创建了支持度较好的第三方模块,这里使用pyapollo。该模块的安装方式为:

pip install apollo-client==2.1.2

使用Python连接Apollo的示例代码如下:

# -*- coding: utf-8 -*-
from pyapollo.apollo_client import ApolloClientapp_id = "ai_test"
config_server_url = "http://127.0.0.1:8090"
authorization = "3a7d769835ef43e3ae2af1cb1f861795"
cache_file_path = 'my_apollo_config'
env = 'DEV'
namespace = 'application'
client = ApolloClient(app_id=app_id,cluster="default",config_server_url=config_server_url,authorization=authorization,cache_file_path=cache_file_path,env=env)
client.start()
# print(client.__dict__)# get config from apollo
host = client.get_value(key="host", default_val="*", namespace=namespace)
port = client.get_value(key="port", default_val="**", namespace=namespace)
key = client.get_value(key="key", default_val="***", namespace=namespace)
name = client.get_value(key="name", default_val="****", namespace=namespace)
print(host, type(host))
print(port, type(port))
print(key, type(key))
print(name, type(name))

输出结果如下:

0.0.0.0 <class 'str'>
80 <class 'str'>
abc <class 'str'>
**** <class 'str'>

同时在本地的my_apollo_config目录下,也会有缓存的配置文件。

在上面的示例代码中,host, port, key变量都正常获取,但name变量不存在Apollo中,因为取默认值。如果在Apollo中配置该参数,则也能正常获取。

总结

本文是笔者在实际工作中的一次总结,主要介绍了Apollo的启动、配置,以及如何使用Python来连接Apollo。

笔者已开通个人博客网址:https://percent4.github.io/ ,欢迎大家访问~

推荐阅读

  • Python之读取配置文件
  • Python之配置文件处理

欢迎关注我的公众号NLP奇幻之旅,原创技术文章第一时间推送。

欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。

http://www.lryc.cn/news/165741.html

相关文章:

  • LuatOS-SOC接口文档(air780E)--audio - 多媒体音频
  • Golang gorm manytomany 多对多 更新、删除、替换
  • FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx
  • Transformers-Bert家族系列算法汇总
  • Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3
  • 【服务器】ASUS ESC4000-E11 安装系统
  • 创建java文件 自动添加作者、时间等信息 – IDEA 技巧
  • 第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验
  • Java学习之--类和对象
  • Unity技术手册-UGUI零基础详细教程-Canvas详解
  • 破天荒呀!小杜微信有名额了
  • 领域驱动设计:领域模型与代码模型的一致性
  • TypeScript命名空间和模块
  • C++学习笔记--函数重载(1)
  • 交叉编译poco-1.9.2
  • C++中如何处理超长的数字(long long类型的整数都无法存储的)
  • RabbitMQ MQTT集群方案官方说明
  • 深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站
  • 《TCP/IP网络编程》阅读笔记--I/O复用
  • [C#] 允许当前应用程序通过防火墙
  • 帆软FineReport决策报表Tab实现方案
  • 只打印文名
  • 【经典小练习】JavaSE—拷贝文件夹
  • FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
  • Spring Boot集成EasyExcel实现数据导出
  • EasyExcel3.0读(日期、数字或者自定义格式转换)
  • 浅谈C++|STL之vector篇
  • 微信、支付宝修改步数【小米运动】
  • stu02-初识HTML
  • 软件测试7大误区