微服务中的灰度发布(又称为金丝雀发布)是一种持续部署策略,它允许在正式环境的小部分用户群体上先部署新版本的应用程序或服务,而不是一次性对所有用户同时发布全新的版本。
灰度发布(Gray Release,也称为灰度发布或金丝雀发布)是指在软件或服务发布过程中,将新版本的功能或服务以较小的比例引入到生产环境中,仅向部分用户或节点提供新功能的一种发布策略。
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
概述 软件开发过程中,应用发布非常频繁,通常情况下,开发或运维人员会将系统里所有服务同时上线,使得所有用户都使用上新版本。这样的操作时常会导致发布失败,或因发布前修改代码,线上出现 Bug。 假设一个在线商城,每天都有大量的用户访问,如果直接在所有用户中部署新版本应用,一旦出现问题,所有用户都可能受到影响。相比之下,通过引入灰度发布策略,先将新版本的应用部署到少量的用户中,检查是否存在问题,如果没有,再逐步扩展到更多的用户中,由此解决全量发布的各种弊端。 灰度发布是一种软件发布策略,它允许你在生产环境中渐进
之前在思考双活/多活架构的时候,其实对于蓝绿发布是有一些了解的,也梳理过在底层存储是一份,服务是多份的模式有做过深入的分析。但那个时候对于Kubernetes的了解还不是很熟悉,是通过传统的方式来考量的。
数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离开来分别呈现。微服务对于传统单体架构的优势之一就在于,服务的拆分带来了更新、部署、管理的隔离性,让一些单独的服务可以进行创新和实验。从而支撑了用户体验的不断升级,为实现企业数字化转型的过程,提供了技术架构层面的支撑。
Service Mesh 的中文译为“服务网格”,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需的基本组件功能,例如服务发现、负载均衡、监控、流量管理、访问控制等。在实践中,服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。
介绍灰度发布流程之前我先一句话介绍一下什么是灰度发布。灰度发布就是,线上app无需停机就可以保证运行的是经过测试的稳定版本,且我们在冒烟测试时也不会影响到线上App的运行。
作者 |张怀龙、张海文 编辑|邓艳琴 本文整理自中国移动云能力中心高级软件工程师、Istio 社区 Member 张海文和 Intel 云原生开发工程师、Istio 的维护者和 Linkerd 的开发者张怀龙老师在 QCon 全球软件开发大会(北京站)的演讲《移动云服务网格双栈技术的实践之路》。下载完整幻灯片地址如下:https://qcon.infoq.cn/202302/beijing/presentation/4898 背景介绍 众所周知,由于 IPv4 地址的消耗殆尽,且在未来 5G
作者:苏万亮,中国移动云能力中心软件研发工程师,专注于云原生、微服务、算力网络等领域。
冉昕,腾讯云服务网格TCM产品经理,现负责云原生流量接入网关与应用通信可观测性等产品特性策划与设计工作。
[1] https://k8s.io/docs/concepts/services-networking/ingress
在Istio中,灰度发布是通过指定不同版本的流量路由规则来实现的。这些规则描述了如何将传入的流量分配到不同的版本中,从而实现逐步推出新版本的目的。
什么是灰度发布,概念请参考,我们来简单的通过下图来看下,通俗的讲: 为了保证服务升级过程的平滑过渡提高客户体验,会一部分用户 一部分用户递进更新,这样生产中会同时出现多个版本的客户端,为了保证多个版本客户端的可用需要对应的多个版本的服务端版本。灰度发布就是通过一定策略保证 多个版本客户端、服务端间能够正确对应。
路由这个功能是流量控制里面非常重要,也是最常用的一个功能。在Istio里一般通过Virtual Service(虚拟服务)以及Destination Rule(目标规则)这两个API资源进行动态路由的设置。
Service Mesh 的中文译为 “服务网格” ,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需的基本组件功能。例如: 服务发现、负载均衡、监控、流量管理、访问控制等。在实践中,服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。
作者廖红坤,CODING DevOps 产品策划。从事过多年运维开发,云计算、Kubernetes、云原生深度实践者,有丰富的 DevOps 平台设计经验。
Nepxion Discovery【探索】使用指南,基于Spring Cloud Greenwich版、Finchley版和Hoxton版而制作,对于Edgware版,使用者需要自行修改。使用指南主要涉及的功能包括:
服务上线后由于 bug 修复、扩容、或者发现了更好的方法进行了重构等原因,总免不了需要发布新版本,进行系统变更升级。服务变更过程本身也是引起服务不可用的重要原因。为了尽量降低可能出现故障而造成的损失,比较流行的思路是采用灰度发布策略,逐步增加流量导入新版本服务实例上,直至将所有流量切到新版本,下线旧版本。由于,spring cloud gateway 作为整个系统的入口,在 spring cloud gateway 上实施流量管控策略,也是顺利成章。本文就尝试介绍基于 spring cloud gateway 的灰度发布方法。
官方解释:An open platform to connect, secure, control and observe services.
Istio发布1.0版本后,其服务发现和路由规则功能已基本具备production能力,我们也开始了Istio和公司内部微服务平台的集成工作,打算以Istio为基础打造一个微服务管控中心,在这里把目前的进展和遇到的坑和大家分享一下。
大家好!我是阿里云容器服务团队的冬岛,2016 年阿里巴巴开始全面容器化,我负责双十一链路应用的容器化 CAAS 平台。承担双十一应用的扩容、缩容、升级以及灰度发布等所有和容器相关的平台支撑。2017 年开始基于 Kubernetes 在公有云上做相关的产品,直到今天在做 Knative。本次分享分为四部分:
作者:defooli 腾讯CSIG工程师 前言 在后台服务体系中,基础设施是运行在业务逻辑之下的计算、网络、存储资源以及通用的基础服务。如果没有完善的基础设施,业务团队只能以"小作坊"形式运作,具有较弱的服务治理能力,产生效率较低,大部分时候只是为了满足业务短期需求,如果出问题了再安排人力来优化,但是并不能很好收敛架构不完善带来的效率和质量问题,特别对于ToB的场景,质量和口碑犹其重要,不应该有持续的服务质量问题。针对如何实现一套完整的基础设施及其应具备的能力,下面做了一些思考和分析。 基础构架的设计
第3章 非侵入的流量治理 通过对本章的学习,可基于Istio的这些配置在不修改代码的情况下实现各种流量治理 ---- 3.1 Istio流量治理的原理 流量治理是一个非常宽泛的话题 动态修改服务间访问的负载均衡策略,比如根据某个请求特征做会话保持 同一个服务有两个版本在线,将一部分流量切到某个版本上 对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等 动态修改服务中的内容,或者模拟一个服务运行故障等 在Istio中实现这些服务治理功能时无须修改任何应用的代码。Istio以一种更轻便、透明的方
今天的文章继续聊聊有关Service Mesh微服务架构的话题,如果对之前的聊过的话题还不了解,可以参考文末的推荐阅读。今天要聊的话题是:如何在Service Mesh微服务架构中实现“金丝雀发布”?
本文将从知识拓扑讲起,谈一下api网关的功能,以及spring cloud gateway的使用方法。文章很长,可以先过一下目录。
腾讯云 TKE Mesh 在 Kubecon-CloudNativecon China 2019 上对外发布, 以下是同场活动中「Application Level Networking」的现场demo部分.
本文作者烧鱼、Shirley博,来自携程Cloud Container团队,目前主要从事Service Mesh在携程的落地,负责控制面的性能优化及可用性建设,以及推进各类基础设施服务的云原生化。
如下图所示,我们要部署一个由两个服务组成的Mesh,除此之外还会有一个网关和一个外部服务,可以说是精简且完整了:
胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,2024年电子工业出版社博文视点20周年荣誉专家称号。
大家好,我叫赵化冰,是 CNCF 云原生基金会大使,也是一个软件行业老兵和云原生从业者。我还记得,当我 2017 年在 Linux 基金会下的一个开源项目中从事微服务相关工作时,第一次从该项目的一个朋友那里了解到了 Istio/Envoy。从此以后,我就被 Istio/Envoy 的先进设计理念所吸引。我是国内最早一批从事 Istio/Enovy 产品研发的技术人员之一,在 2018 年就主导了 Istio/Envoy 的第一个产品化项目。在后续的工作中,我还研发了大规模 Kubernetes 集群上基于 Envoy 的多租户七层云原生网关,创建了基于 Envoy 的多协议七层网关开源项目 MetaProtocolProxy,以及基于 Envoy/Istio 的多协议服务网格开源项目 Aeraki Mesh(CNCF Sandbox 项目),该项目被腾讯、百度、华为等多个公司采用,在基于 Envoy 的网关和服务网格上支持了超过数十种应用协议。今天,我想和大家聊一聊 Envoy 生态中的新成员 Envoy Gateway,以及为什么我认为 Envoy Gateway 是云原生时代的七层网关。
蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行)。
Gitee: https://gitee.com/log4j/pig Github地址失效上Gitee: https://github.com/pig4cloud/pig 演示环境: http://pigx.pig4cloud.com 关于作者: https://gitee.com/gitee-stars/15
微服务网关作为微服务后端服务的统一入口(Entry Point),它可以统筹管理后端服务,主要分为数据平面(Data Plane)和控制平面(Control Plane)。
服务(Service)与版本(Version):Istio中的服务在kubernetes中以service形式存在,可定义不同的服务版本。通过Deployment创建工作负载,通过Service关联这些负载,域名或者虚拟IP访问后端Pod。
不建议使用zuul1作为线上网关使用,大家可以使用zuul2或者是spring-cloud-gateway作为微服务的网关
目前,业界已经总结出了几种常见的服务发布策略来解决版本升级过程中带来的流量有损问题。本文首先会对这些普遍的发布策略进行简单的原理解析,最后结合阿里云的云原生网关对这些发布策略进行实践。
Zuul与Spring Cloud Gateway作用差不多,推荐还是使用Spring Cloud Gateway,毕竟是Spring家族的,优先级高一些。他们都和Nginx一样,主要是用于服务器的反向代理;只要是反向代理,那么久可以提供路由、监控、弹性、安全等功能;一般也是说是网关,因为数据的入口都从这么流入流出。
灰度发布也叫金丝雀部署 ,是指通过控制流量的比例,实现新老版本的逐步替换。比如对于服务 A 有两个版本(蓝和绿两个版本),当前两个版本同时部署,但是 version1 比例 90% ,version2 比例 10% ,然后我们可以观察 version2 的实际运行效果,如果符合预期,则可以逐步调整流量占比,比如调整为 80:20 -> 70:30 -> 10:90 -> 0:100 ,最终 version1 版本下线,全部替换成 version2 版本。如果验证失败,切换 100%流量回 v1 版本(回滚)。灰度发布的特点是:
分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版本之间的隔离性,验收需要将请求路由到指定版本号的服务上处理;
冉昕,腾讯云服务网格TCM产品经理,现负责云原生流量接入网关与应用通信可观测性等产品特性策划与设计工作。 引言 在云原生应用负载均衡系列第一篇文章《云原生应用负载均衡选型指南》介绍了云原生容器环境的入口流量管理使用场景与解决方案,用 Envoy 作为数据面代理,搭配 Istio 作控制面的 Istio Ingress Gateway,在多集群流量分发、安全、可观测性、异构平台支持等方面的综合对比中,是云原生应用流量管理的最佳方案。 在接入层,我们需要配置路由规则、流量行为(超时、重定向、重写、重试等)、
在之前关于Service Mesh(服务网格)的系列文章中,我们从实战的角度分享了一些关于Istio的入门安装、服务发现、熔断限流及流量管理(灰度发布)等细节方面的内容(可参考文末推荐阅读)。
云原生API 网关支持使用共享带宽包,您可以将多个网关实例公网负载均衡加入共享带宽包中合并计费。
微服务平台的安全控制包括登录认证、用户授权、服务调用安全等多个方面,其中,服务调用安全又分为系统内服务调用认证、系统间服务调用认证。
一、 服务器 1、逻辑与数据分离 2、读写分离 3、服务器分层 4、分区容错 HA a.路由服务器组 *1, 做到AB测试,添加功能开关,策略选择灰度测试发布。 *2, 做到切片编程,(可采用类PCALL包裹类) *3.做到AB滚服, 主备服务 *4.MYSQL冷数据落地 5.Service-Oriented游戏服务端 6.战斗等场景,玩家对象的时空穿越,agent的回归-信使 7.负载均衡,ROUTER,MAPREDUCE, NODEMGR(ZOOKEEPER), MQ,KAPHA 8.method监控与
微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService、ProductService、UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下
领取专属 10元无门槛券
手把手带您无忧上云