Apollo

背景

配置文件都放在文件目录,因为服务多了又有负载均衡,每个项目启动加载基础配置,
比如:数据库配置发生变化,需要统一下发就轻松的多;

特性

  • 比较独立没什么依赖就一个数据库;
  • 内置了eureka实现了高可用;
  • 相对于config还需要用到bus消息总线;

服务整体结构

在这里插入图片描述

  • 服务端
  1. potal传递配置参数;
  2. admin接收到potal传递的参数,写入到DB;
  3. config内置了eureka,就知道appid下有哪些实例,由config推送配置到客户端;
  • 客户端
  1. 首次启动向配置中心拉取配置;
  2. 连接到config,config访问admin获取配置;
  3. 由config响应给客户端;

角色

portal:前端ui入口
adminService:后台springBoot服务,所有配置的增删改查功能;

在这里插入图片描述
admin新增1个配置到数据库,admin是一个spring boot服务;

configService:后台springBoot服务,找配置和推配置的功能;

在这里插入图片描述

配置有修改admin会通知configService,config和客户端建立连接,推给客户端,同样客户端也向config找配置

对比

  • apollo、nacos:消息推送机制;默认缓存本地;
  • config:配置存储机制,

安装部署

下载

https://github.com/apolloconfig/apollo/releases/tag/v1.7.1
在这里插入图片描述

在这里插入图片描述

建立数据库
  • 执行建库脚本
    在这里插入图片描述
解压上传服务器

在这里插入图片描述

  • unzip apollo-configservice-1.7.1-github.zip -d /root/apollo-configservice-1.7.1
  • unzip apollo-portal-1.7.1-github.zip -d apollo-portal-1.7.1
  • unzip apollo-adminservice-1.7.1-github.zip -d apollo-adminservice-1.7.1
配置修改
config:8080、admin:8090(连接ApolloConfigDB库)
  • config/application-github.properties

    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimeZone=Asia/Shanghai
    spring.datasource.username = root
    spring.datasource.password = 
    
portal:8070(连接ApolloPortalDB库)apollo/admin
  • config/application-github.properties
    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimeZone=Asia/Shanghai
    spring.datasource.username = root
    spring.datasource.password = 
    
  • config/apollo-env.properties
    多套环境注册到不同环境的config注册中心
    local.meta=http://localhost:8080
    dev.meta=http://localhost:8080
    #fat.meta=http://fill-in-fat-meta-server:8080
    #uat.meta=http://fill-in-uat-meta-server:8080
    #lpt.meta=${lpt_meta}
    #pro.meta=http://fill-in-pro-meta-server:8080
    
启动
config

在这里插入图片描述

admin

在这里插入图片描述

portal在这里插入图片描述

portal使用

创建项目
部门修改

在这里插入图片描述
在这里插入图片描述

创建使用
  • 创建项目
    在这里插入图片描述
  • 查看项目
    在这里插入图片描述
  • 编辑配置
    在这里插入图片描述
  • 如何匹配上
    在这里插入图片描述
客户端配置
  • pom

    <dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-client</artifactId>
        <version>1.7.0</version>
    </dependency>
    
  • application.properties

    app.id=number
    apollo.bootstrap.enabled=true
    apollo.bootstrap.namespaces=application
    
  • VM options

    -Denv=dev
    -Dapollo.configService=http://8.142.79.41:8080
    
密钥配置,基于springSecurity
  • apollo.accesskey.secret=7c306c51dfcb409393d128e3f0dcd3d6
    在这里插入图片描述

配置下发与热更新

  • 二次开发,比如某个key不像立即加载;
    @Configuration
    public class ApolloConfig {
        @Bean
        public void config(){
            Config config = ConfigService.getAppConfig();
            config.addChangeListener(changeEvent -> {
                System.out.println("change for namespace:"+changeEvent.getNamespace());
                for (String key : changeEvent.changedKeys()) {
                    if ("name".equals(key)){
                        System.out.println("做二次开发~~~~ ");
                    }
                    ConfigChange change = changeEvent.getChange(key);
                    System.out.println("我来了啊~~~~ "+change);
                }
            });
        }
    }
    

长轮询机制

  • client给config发http长轮询请求,60秒返回个304就重新挂一次就这样一直挂着,有配置修改了就给client返回;
  • 短轮询:每隔2秒就请求1次问一下有没有?

灰度发布(配置的灰度针对ip)

应用的灰度
  • 1号机是V1代码;
  • 2号机是V2代码;
Apollo后端服务配置的灰度
  • redis买了几台新机器,先发几台试试,全ok了在全部发送配置;
  • 限制了某几台性能差的机器并发量小点;
    除了appid还有机器的ip,给这台机器设置并发为100;
Apollo使用灰度
  • 开启灰度
    在这里插入图片描述
  • 灰度规则(选择主机ip)
    在这里插入图片描述
  • 灰度验证没问题合并到主版本
    在这里插入图片描述
  • 选择灰度发布规则
    在这里插入图片描述
  • 合并成功到主版本,并且删除灰度
    在这里插入图片描述

namespace配置分组(redis、mysql、mq、权限相关的)

创建的分组和部门有关

  • 创建分组
    在这里插入图片描述
  • 配置授权,谁可以编辑谁可以发布
    在这里插入图片描述

记录apollo坑:无法拉取配置

Apollo部署在私有云上,本地开发环境无法连接,但又需要做开发测试的话,客户端可以升级到0.11.0版本及以上,然后通过-Dapollo.configService=http://config-service的公网IP:端口来跳过meta service的服务发现

错误如下

reason: Could not complete get operation [Cause: connect timed out]

解决方法:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值