Total Pageviews

Monday, 15 January 2024

一个分布式配置管理程序 Apollo


https://github.com/apolloconfig/apollo
国内技术圈有个段子,就是每个公司内部都有一个代号 为Apollo(阿波罗)的项目,而这里介绍的 Apollo 则是其中知名度最高的一个。它是一个分布式配置管理中心,2017 年由携程开源,不过后来变成了一个独立项目。随着程序功能的复杂,程序的配置和对其的要求增多,传统通过配置文件、数据库的方式逐渐不能满足需求了。Apollo 能够集中管理应用在不同环境和集群的配置,配置修改后能够实时生效,有强大的认证、授权和审计控制,适用于微服务配置管理场景。
尤其值得称道的是 Apollo 社区。Apollo 没有被商业化,也没有加入任何开源组织。PMC 来自几家国内厂商,社区用户和案例也很丰富,堪称国内社区经营的典范!

------------

Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.

www.apolloconfig.com 

English | 中文

Apollo - A reliable configuration management system

Build Status GitHub Release Maven Central Repo codecov.io License

Apollo is a reliable configuration management system. It can centrally manage the configurations of different applications and different clusters. It is suitable for microservice configuration management scenarios.

The server side is developed based on Spring Boot and Spring Cloud, which can simply run without the need to install additional application containers such as Tomcat.

The Java SDK does not rely on any framework and can run in all Java runtime environments. It also has good support for Spring/Spring Boot environments.

The .Net SDK does not rely on any framework and can run in all .Net runtime environments.

For more details of the product introduction, please refer Introduction to Apollo Configuration Center.

For local demo purpose, please refer Quick Start.

Demo Environment:

Screenshots

Screenshot

Features

  • Unified management of the configurations of different environments and different clusters

    • Apollo provides a unified interface to centrally manage the configurations of different environments, different clusters, and different namespaces
    • The same codebase could have different configurations when deployed in different clusters
    • With the namespace concept, it is easy to support multiple applications to share the same configurations, while also allowing them to customize the configurations
    • Multiple languages is provided in user interface(currently Chinese and English)
  • Configuration changes takes effect in real time (hot release)

    • After the user modified the configuration and released it in Apollo, the sdk will receive the latest configurations in real time (1 second) and notify the application
  • Release version management

    • Every configuration releases are versioned, which is friendly to support configuration rollback
  • Grayscale release

    • Support grayscale configuration release, for example, after clicking release, it will only take effect for some application instances. After a period of observation, we could push the configurations to all application instances if there is no problem
  • Authorization management, release approval and operation audit

    • Great authorization mechanism is designed for applications and configurations management, and the management of configurations is divided into two operations: editing and publishing, therefore greatly reducing human errors
    • All operations have audit logs for easy tracking of problems
  • Client side configuration information monitoring

    • It's very easy to see which instances are using the configurations and what versions they are using
  • Rich SDKs available

    • Provides native sdks of Java and .Net to facilitate application integration
    • Support Spring Placeholder, Annotation and Spring Boot ConfigurationProperties for easy application use (requires Spring 3.1.1+)
    • Http APIs are provided, so non-Java and .Net applications can integrate conveniently
    • Rich third party sdks are also available, e.g. Golang, Python, NodeJS, PHP, C, etc
  • Open platform API

    • Apollo itself provides a unified configuration management interface, which supports features such as multi-environment, multi-data center configuration management, permissions, and process governance
    • However, for the sake of versatility, Apollo will not put too many restrictions on the modification of the configuration, as long as it conforms to the basic format, it can be saved.
    • In our research, we found that for some users, their configurations may have more complicated formats, such as xml, json, and the format needs to be verified
    • There are also some users such as DAL, which not only have a specific format, but also need to verify the entered value before saving, such as checking whether the database, username and password match
    • For this type of application, Apollo allows the application to modify and release configurations through open APIs, which has great authorization and permission control mechanism built in
  • Simple deployment

    • As an infrastructure service, the configuration center has very high availability requirements, which forces Apollo to rely on external dependencies as little as possible
    • Currently, the only external dependency is MySQL, so the deployment is very simple. Apollo can run as long as Java and MySQL are installed
    • Apollo also provides a packaging script, which can generate all required installation packages with just one click, and supports customization of runtime parameters

Usage

  1. Apollo User Guide
  2. Java SDK User Guide
  3. .Net SDK user Guide
  4. Third Party SDK User Guide
  5. Other Language Client User Guide
  6. Apollo Open APIs
  7. Apollo Use Cases
  8. Apollo User Practices
  9. Apollo Security Best Practices

Design

Development

Deployment

Release Notes

FAQ

Presentation

Publication

Community

from https://github.com/apolloconfig/apollo

(https://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide ,

https://www.apolloconfig.com/#/zh/deployment/quick-start)

 

 

No comments:

Post a Comment