zoukankan      html  css  js  c++  java
  • 携程 apollo分布式配置中心学习总结

    一、携程apollo 组成 love 娇

      adminService:提供配置更新和发布接口,服务于管理界面potal 来更新和获取数据。

      configService:提供配置获取接口和配置推送接口,服务于apollo客户端。

      potal:提供配置管理界面,通过meterService 获取adminService 列表,使用客户端SLB 软负载的方式调用adminService.

      client:为应用获取配置,支持实时刷新,和configService 保持长连接,一旦有配置变更,clent收到configService 推送,刷新jvm缓存。

      Erueka:用于服务发现和注册,和configService一起部署

      meteServer:支持potal获取adminService 地址列表,支持client 获取configService 地址列表,相当于Eureka 的proxy,通常一个环境(dev/pro)部署一个meteServer,帮助potal或client 选取一个Eureka 或一个环境。

      

    二、apollo分布式配置原理图说明

       1、client 访问nginx 通过不同域名或端口访问metaServer,然后获取到注册在Eureka 上面的configService  的地址列表,然后通过本地负载均衡方式访问目标configService  获取配置的值,configService 与client 之间保持长连接,configService 也将更新的值推送到client,client再通知应用更新。

      2、用户访问nginx ,通过不通域名或端口代理到不通的potal地址,然后potal再访问nginx 通过不通域名或端口访问metaServer,然后获取到注册再Eureka 上的adminService 地址列表,然后通过本地负载均衡方式访问目标adminService 更新配置的值,更新配置后adminService 通知到configService 做应用配置实时刷新。

    三、apollo 通过四个维度管理不通维度的key-value 

      1、namespase 命名空间:一个namespase 相当于一个配置文件,不通的配置有不通的配置文件,也就有多个namespase,默认输入default集群

      2、cluster 集群,一个环境env下有多个集群,代表多个部署,或在不通机房部署,属于不同的公司业务,一个集群下有多个nameSpase,

      3、environment 环境,如开发环境、生产环境、测试环境,不通的环境下有多个集群

      4、project 项目,一个项目代表一个服务,一个服务有多个环境

    四、部署及配置

      1、源码下载地址

     https://github.com/ctripcorp/apollo

      2、历史版本下载

     https://github.com/ctripcorp/apollo/releases

       3、服务端部署

    (1)安装mysql,版本必须要5.7以上,因为在执行初始化脚本时有些语法在低版本上不支持

    (2)下载sql初始化脚本并执行:https://github.com/nobodyiam/apollo-build-scripts

    (3)分别启动adminService ,configService服务,启动批处理脚本startApolloService.bat如下:

    
    
    echo
    
    start "adminService" java -Dserver.port=8090 -DappId=100 -Xms256m -Xmx256m -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://localhost:3307/apolloconfigdb?characterEncoding=UTF-8 -Dspring.datasource.username=root -Dspring.datasource.password=root -Dlogging.file=apollo.log -jar apollo-adminservice-1.5.1.jar
    start "configService" java -Dserver.port=8080 -DappId=200 -Xms256m -Xmx256m -Dapollo_profile=github -Dspring.datasource.url=jdbc:mysql://localhost:3307/apolloconfigdb?characterEncoding=UTF-8 -Dspring.datasource.username=root -Dspring.datasource.password=root -Dlogging.file=apollo.log -jar apollo-configservice-1.5.1.jar


    (4)adminService和configService 启动完成后再启动potal,启动脚本startPotal 如下,支持多环境启动

    echo
    
    start "potalService" java -Dserver.port=8070 -DappId=300 -Xms256m -Xmx256m -Dapollo_profile=github,auth -Ddev_meta=http://localhost:8080/ -Dpro_meta=http://192.168.2.100:8081/ -Dspring.datasource.url=jdbc:mysql://localhost:3307/ApolloPortalDB?characterEncoding=utf8 -Dspring.datasource.username=root -Dspring.datasource.password=root -Dlogging.file=/Users/lewis/SourceProjects/apollo/log/apollo-portal.log -jar apollo-portal-1.5.1.jar

    (5)多环境启动时注意端口的不通以及eureka的不同,否则会出现potal访问service出错的问题

    (6)配置apollo客户端

    maven依赖

     <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-client</artifactId>
                <version>1.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.ctrip.framework.apollo</groupId>
                <artifactId>apollo-core</artifactId>
                <version>1.1.0</version>
    
            </dependency>

    application.properties 配置

    app.id=apolloClientService
    apollo.bootstrap.enabled = true
    apollo.meta=http://192.168.2.100:8081

    注意实时刷新的controller 上加注解@RefreshScope

    详细内容可参考

    https://blog.csdn.net/zjh_746140129/article/details/86179522

  • 相关阅读:
    day1 生活大爆炸版石头剪刀布
    友谊赛
    再数17
    素数统计
    day1 LGTB玩THD
    day1 LGTB学分块
    day1 LGTB玩扫雷
    组合(1-m中选n个数)
    二分查找法,加递归,之前做了一个没加递归,结果就废了
    以前的一个程序,死循环,骚年,卡爆你的电脑吧
  • 原文地址:https://www.cnblogs.com/lufei33180/p/12540193.html
Copyright © 2011-2022 走看看