发布机制-功能开关发布:百科

ylbtech-发布机制-功能开关发布:百科

上述都是偏传统的发布方式,能覆盖大部分应用发布场景。针对一些关键新功能的上线发布,或者一些特定的场景,还有一些特殊的发布方式。

1.返回顶部

1、

3.1 功能开关发布

利用代码中的功能开关(Feature Flag/Toggle/Switch)来控制发布逻辑,一般不需要复杂的发布工具和智能 LB 配合,是一种相对比较低成本和简单的发布方式。这种方式也是支持现代 DevOps 理念,研发人员可以灵活定制和自助完成的发布方式。功能开关的原理如下图所示:

功能开关发布,图片来自附录 6.2

实践要点

  1. 功能开关发布需要一个配置中心或者开关中心这样的服务支持,例如携程的 Apollo 配置中心附录 6.3,或者开源的 FF4J附录 6.4,这些都支持开关发布,业界还有专门的功能开关 SaaS 服务,例如 LaunchDarkly附录 6.5。通过配置中心,运维或研发人员可以在运行期动态配置功能开关的值。当然,功能开关发布只是配置中心的一种使用场景,配置中心还能支持其它很多动态配置场景。

  2. 功能开关服务一般提供客户端 SDK,方便开发人员集成。在运行期,客户端 SDK 会同步最新的开关值,技术实现有推方式 (push),也有拉方式 (pull),或者推拉结合方式。
  3. 新功能(V2 new feature)和老功能(V1 old feature)住在同一套代码中,新功能隐藏在开关后面,如果开关没有打开,则走老代码逻辑,如果开关打开,则走新代码逻辑。技术实现上可以理解为一个简单的 if/else 逻辑
  4. 应用上线后,开关先不打开,然后运维或研发人员通过开关中心打开新功能,经过流量验证新功能没有问题,则发布完成;如果有问题,则随时可以通过开关中心切回老功能逻辑。

优势和适用场合

优势:

  • 升级切换和回退速度非常快
  • 相对于复杂的发布工具,实施比较简单,成本相对低廉
  • 研发能够灵活定制发布逻辑,支持 DevOps 自助发布

不足:

  • 切换是全量的,如果 V2 版本有问题,则对用户体验有直接影响;
  • 对代码有侵入,代码逻辑会变复杂,需要定期清理老版本逻辑,维护成本变高

适用场合:

  • 对用户体验有一定容忍度的场景
  • 已有配置中心或开关中心服务
  • 暂不具备研发复杂发布工具能力;

流量模式

通过功能开关一次完成流量切换,图片来自附录 6.1

2、

2.返回顶部
3.返回顶部
4.返回顶部
5.返回顶部

1、

https://www.cnblogs.com/apanly/p/8784096.html

2、

6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/storebook/p/11770420.html

时间: 2024-08-04 02:25:11

发布机制-功能开关发布:百科的相关文章

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

金丝雀发布.滚动发布.蓝绿发布到底有什么差别?关键点是什么? ? 根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异.技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节. ? 作为技术人员,大家可能听说过"滚动发布"和"蓝绿发布"等术语,但是很多人并不清楚这些术语背后的原理.本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让

发布机制-蛮力发布:百科

ylbtech-发布机制-蛮力发布:百科 1.返回顶部 1. 先解释下单服务器组的概念,早先我们机器资源比较紧张,不像现在云计算和虚拟化(包括容器技术)这么发达,所以应用机器基本是预先静态分配好的(一般由运维负责分配),原来应用 A 住在这 n 台机器上,那么下次升级发布的应用 A 也住在这 n 台机器上,所以称为单服务器组发布方式. 2. 1.1 蛮力发布 如下图所示,这种发布方式比较简单粗暴,有点像我们传统的软件升级方式,主要靠手工完成,先将老版本 V1 全部下掉,再将新版本发到机器上去.这

Spring的事件发布机制

一:Spring的事件发布 ApplicationContext提供了针对Bean的事件传播功能,其中的主角是publishEvent()方法,通过这个方法可以将事件通知给系统内的监听器(需实现ApplicationListener接口). ApplicationContext这个接口,是Spring的上下文,通常获取Bean就需要这个接口,这个接口并不是直接继承于BeanFactory,其中最著名的是直接继承了ApplicationPublisher接口,这个接口查看源码可以发现:只有一个方法

简单的订阅发布机制实现(Golang)

Redis和NSQ都有完善的订阅和发布实现,但参考它们的源码实现,做个实际例子,对两边的异同和这种机制会更有印象. 练习实现简单的 订阅/取消订阅/发布信息 功能,足够了. Server.go Server结构中的Dict用map保存了Channel的相关信息,而Channel结构中则用一个map保存了订阅这个Channel的Client. 这个与Redis中不太一样,Redis中的Dict用Channel的名字作为map的key,value则是其对应的Client列表.而Client中则保 存

linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能

最近使用redis的c接口--hiredis,使客户端与redis服务器通信,实现消息订阅和发布(PUB/SUB)的功能,我把遇到的一些问题和解决方法列出来供大家学习. 废话不多说,先贴代码. redis_publisher.h /************************************************************************* > File Name: redis_publisher.h > Author: chenzengba > Ma

redis发布订阅功能介绍

redis的发布订阅功能(publish/subscribe): 频道:消息队列 subscribe:订阅一个或多个队列 >help subscribe   #查看subscribe帮助 例:订阅news频道 > subscribe news 注:可以同时订阅多个频道 publish:向频道中发消息 >help @pubsub #查看publish帮助 例:向news频道发送消息 >publish new hello psubscribe:模式订阅-->可以使用正则表达式,一

Jedis实现发布订阅功能

Redis为我们提供了publish/subscribe(发布/订阅)功能.我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时,redis就会通知我们,这样我们可以收到别人发布的消息.作为Java的redis客户端,Jedis提供了publish/subscribe的接口.本文讲述如何使用Jedis来实现redis的publish/subscribe. 定义Subscriber类 Jedis定义了抽象类JedisPubSu

【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章

[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章   1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何使用客户端发布BLOG(重点) ② 如何快速发布微信公众号文章 ③ 如何批量上传图片到blog ④ 如何批量上传图片到微信公众号上     Tips: ① 本文在itpub(http://blog.itpub.net/26736162)

C#-VS发布网站-准备待发布网站

通过使用“发布网站”工具部署网站项目 准备网站源文件 在vs生成发布文件 配置IIS .NET Framework 4 其他版本 Visual Studio 2008 Visual Studio 2005 分步说明如何使用 Visual Studio 的“发布网站”工具来编译网站项目,然后将输出复制到指定位置. 如果要将网站项目部署到服务器中,可以使用 Visual Studio 附带的“发布网站”工具.“发布网站”工具对网站中的页和代码进行预编译,然后将编译器输出写入指定的文件夹.然后可以将输