基于 Apollo 实现配置灰度发布(上)

简介: 基于 Apollo 实现配置灰度发布(上)


前言

在上一篇,通过dubbo的版本号控制,我们实现了一个服务的简单的灰度发布过程,在真实的项目环境中,灰度发布的应用场景是很多的,服务接口存在灰度的需求,本篇再介绍另一种比较常见的灰度需求场景,即配置文件的灰度发布

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

配置文件简介

如今,微服务架构盛行下,不管是互联网大厂,还是规模较小的团队,都有一套自己的中央配置文件管理中心,各个微服务模块都能接入中央配置文件,进行统一的使用,现如今,配置中心的技术选择也是非常丰富的,比如springcloud技术栈下的springcloud-configspringcloud-alibaba下自研的nacos,传统的配置中心disconf,携程出品的apollo等,都是不错的选择

不管外观如何变化,他们的作用都是相同的,那就是统一管理微服务的配置,起到统一管理,统一维护,统一调度的作用

在这种形势下,实际的业务中就出现了这么一种情况,配置管理中心可能存在针对不同环境,比如 dev,test,prod等环境各自的一套配置文件,但实际上,这还是无法满足某些场景下的要求的

举例来说,像上一篇介绍的,服务接口需要做到灰度使用,利用不同的版本号进行控制,从而达到新功能和之前稳定版本功能做到动态切换的效果,而配置文件是控制程序中某些业务的关键信息,同样需要做到类似的功能,这种情况下该如何实现呢?

在一些开源的配置管理技术框架中,它们为了满足这样的需求就实现了类似的灰度发布的功能,本篇将介绍如何利用apollo实现配置文件的灰度发布

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

apollo简介与快速搭建

关于apollo的介绍,网上有大量的参考和学习资料,主要想说的是,apollo是一款非常好用的配置管理工具,应用于各个大中小型互联网公司,可以无缝整合到很多java框架下,代码侵入性低,而配置文件修改后实时生效是它的一大亮点

快速搭建过程

本篇基于centos7或者阿里云

1、安装java环境

安装JDK1.8及以上(省略)

2、安装mysql

安装mysql5.7及以上(省略)

3、github下载源码包

其主要的目录文件如上图所示,首先,在mysql中执行下sql目录下的两个sql脚本,apollo的运行依赖数据库

4、将解压后的文件上传至服务器

修改demo.sh,主要修改连接数据库信息

修改内容如下,主要将数据库连接信息配置成自己的数据库IP即可

修改完毕后,启动apollo,只需要执行命令: sh demo.sh start 即可,等待服务启动完毕之后,浏览器访问:http://IP:8070,然后输入默认登录用户名和密码 apollo/admin 即可进入apollo主页面

关于apollo的具体使用本文不做过多赘述,有兴趣的同学可以深入学习

5、apollo创建一个项目

为了后文使用演示,这里快速创建一个app,和一个namespace,创建也非常简单,只需要点击 "创建应用"即可

默认是application应用,当然可以通过创建新的namespace的方式新建一个新的namespace,这个是为了各自的项目管理自身的配置文件进行使用,为了方便测试,这里我们在application应用下,创建了一个叫做dubbo的namespace,随机添加几个配置文件,即key/value的数据

友情提醒:注意appId,工程中后面有使用

以上的准备工作到此结束

演示工程步骤

提前准备一个springboot工程

1、添加核心依赖

主要包括springboot和apollo客户端连接依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.5.1</version>
</dependency>

2、配置文件

server:
  port: 8001
#连接apollo的配置
app:
  id: provider
apollo:
  meta: http://IP:8080
  bootstrap:
    enabled: true
    namespaces: dubbo
相关文章
|
运维 监控 Java
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
826 1
|
测试技术
IDEA创建单元测试与测试覆盖率统计
IDEA(IntelliJ IDEA)不仅支持快速基于当前类创建单元测试,还支持代码测试覆盖率的统计,以及生成报告和标记测试运行命中的代码。
3449 0
IDEA创建单元测试与测试覆盖率统计
|
测试技术 微服务 负载均衡
微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。
3000 0
|
11月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
1029 3
|
9月前
|
消息中间件 存储 中间件
说说MQ在你项目中的应用(二)商品支付
本文总结了消息队列(MQ)在支付订单业务中的应用,重点分析了RabbitMQ的优势。通过异步处理、系统解耦和流量削峰等功能,RabbitMQ确保了支付流程的高效与稳定。具体场景包括用户下单、支付请求、商品生产和物流配送等环节。相比Kafka,RabbitMQ在低吞吐量、高实时性需求下表现更优,提供了更低延迟和更高的可靠性。
282 0
|
12月前
|
运维 监控 前端开发
微服务灰度发布的底层原理是什么?
微服务灰度发布的底层原理是什么?
175 1
|
Kubernetes 监控 测试技术
在K8S中,如何实现金丝雀发布(灰度发布)?蓝绿发布?
在K8S中,如何实现金丝雀发布(灰度发布)?蓝绿发布?
|
监控 网络协议 Java
Java TCP长连接详解:实现稳定、高效的网络通信
Java TCP长连接详解:实现稳定、高效的网络通信
|
运维 负载均衡 Kubernetes
一文搞懂蓝绿发布、灰度发布和滚动发布
一文搞懂蓝绿发布、灰度发布和滚动发布