DNA图谱 / 问答 / 问答详情

argocd蓝绿/金丝雀发布之rollout

2023-07-07 02:47:25
TAG: AR
共1条回复
小菜G的建站之路

系列文章同步更新中:

argocd的secret管理之SealedSecret:在git里面加密敏感配置

argocd告警管理之notification服务:让你第一时间得到argocd app的状态信息

argocd蓝绿/金丝雀发布之rollout: 快速方便的启用基于gitops的蓝绿/金丝雀发布

gitops之argocd

rollout是一个管理k8s副本集的实现,也是一个Operator ,部署的时候需要每个目标集群上都部署,不能像argocd一样管理多集群。

rollout官网

安装命令:

一如既往的像其他argocd组件一样方便快捷的安装方式。

详情请看清单文件注释

详情请看清单文件注释

以上就是argocd 基于gitops理念的蓝绿/灰度发布实现。如果想详细了解请移步官方文档。

相关推荐

灰度发布(一)

一、术语 1、灰度周期,由测试/用户决定 2、金丝雀的故事 3、产品说的AB测试 4、客户端APP的灰度,版本更新交由后台控制 5、Java Agent 6、互联网APP常见的玩法 最后灰度发布是什么? ---- 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。 二、灰度能做什么 1、白天发布,不用等到晚上11点,夜深人静的时候。 2、应用程序的新旧版本需要共存一段时间,用于做AB测试。 3、把新版本程序当做金丝雀,不影响真实用户的请求。 三、灰度不能做什么 1、应用程序在发布的时候,重启的时候足够安全吗,会影响线上用户吗? 2、线上灰度验证的时候,发现出问题然而开发不能及时修复,程序需要回滚,假如有已执行的数模,也需要回滚,怎么办? 3、它能够帮助我们远程断点或btrace新版本的应用程序吗? 四、灰度的实现 1、必备的条件有: 2、染色的流程 3、灰度规则 支持按流量比例和精准分配两种。精准可以是userId、IP、设备号等,只要http header能取出的key,都将支持配置到灰度规则。 4、传递灰度标识 在网关层进行打上标签,常用做法就是http header增加一个key。(kong plugin 安装灰度插件) 按链路访问顺序,由上往下进行传递,这里为了减少业务方的接入成本,采用java agent技术,做到对业务的完全透明。(java应用程序加载灰度agent的jar包) 5、灰度发布的流程 五、发布的方式有哪些 除了灰度发布,还有重要的蓝绿发布。 (灰度是允许新旧版本同时存在,蓝绿则规定在同一个环境下,要么是新版本,要么是回滚到旧版本)。 一般地,建议在预发环境下,实现蓝绿发布。在预发环境未验证通过前,预发环境是新版本,而生产环境是旧版本。 六、灰度发布带来了哪些问题 1、预期的流量是要打到灰度节点的,最后却打到正常节点了。如何核实? 现在一般的做法是通过traceId,查询kibana的日志。 2、灰度标识在全链路的整个链路传递的过程中,容易被服务或组件丢失。如何排查到底是哪个组件导致的? 3、日志与监控 日志需要采集,做法和jvm日志一样采用ELK。日志中需要包含程序的版本号、IP等关键信息。
2023-07-06 20:40:061

计算机术语中“灰度发布”的英文是什么?

Gray released in computer terms。灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。灰度分布让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。注意事项灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。对于一般的小系统并不需要单独的灰度发布引擎,可以参考A/B测试中做法,在页面JavaScript或服务器端实现分流的规则即可。但对于大型的互联网应用而言,单独的用于管理用户分流的发布引擎就很有必要了。
2023-07-06 20:40:195

简单的前端灰度发布方案

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。 灰度发布的核心就是分流,一部分用户能看到,一部分用户看不到。所以主要实现的核心分流算法。在实现这个需求的时候,我想到了抽签。比如在1-100的数字中抽到1-30的用户进入beta版本,抽到31-100的用户进入stable版本。这样就相当于是30%的流量进入灰度版本。 首先实现产生1-100的整数的随机函数。 然后实现灰度流量的判断 至此,简单的灰度方案就做好了。在进入页面时先调用 isShowGray 函数判断进入哪个方案。这样就可以做到简单的用户分流。
2023-07-06 20:41:131

为什么灰度发布又叫金丝雀发布?

作为技术人员,肯定听说过 灰度发布 这个技术术语,它指的是发布版本 (黑) 与线上版本 (白) 之间,能够平滑过渡的一种发布方式。 一般来说,随着一个产品不断地快速迭代开发上线,必然会有一方面要保证线上版本稳定,另一方面又要保证新版本上线的需求,这时候就需要设计一套灰度发布系统,让大部分用户继续使用原来的线上版本,少量用户或内部测试人员使用新版本功能,并且一旦出现问题可以很快的控制影响,如果没有不良的反馈意见,则继续逐步扩大范围,把所有用户都迁移到新版本上面来。 灰度发布可以保证整体业务的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,实现更好的风险控制。 这种发布形式非常实用,包括Google都在使用,并在书中有详细介绍,是不少成长型技术组织和互联网公司的主流发布方式。 金丝雀发布 这个说法其实来自欧美,以前旷工矿工开矿,在下矿洞时面临的一个重要危险就是矿井中的毒气,于是他们想到一个办法来辨别矿井中是否有毒气,矿工们下矿井时随身携带一只金丝雀 (Canary) 。 由于金丝雀对毒气的抵抗能力比人类要弱,在毒气环境下会先挂掉起到预警的作用,这种风险控制背后的原理暗合灰度发布的根本需求,即:
2023-07-06 20:41:261

Spring微服务灰度发布(热部署)的实现(二)

接着上篇说,我们微服务中用到的nepxion discovery主要采用了三种灰度发布方式,一种是web图形化界面发布,二是zuul过滤器灰度发布,三是业务参数策略灰度发布。下面将重点介绍三种方式的实现。 一、web图形化界面灰度发布 因为我们项目用到了eureka注册中心,所以选择web图形化界面灰度发布比较合适。 1) 首先需要建立一个discovery控制台工程console, 端口为2222,控制台工程负责web图形化界面请求的处理,运行console工程。 2) 下载discovery ui,地址:https://github.com/Nepxion/DiscoveryUI,运行discovery UI,端口为8090 3)浏览器中输入localhost:8090,即可打开控制台,如下 注意:全链路灰度发布需要在“配置中心”下才可用。灰度发布配置中心,负责存储全链路灰度发布规则,并将规则推送到各个微服务中。而配置中心可用nacos,redis等,Discovery 中提供了相应配置中心的插件包。 二、zuul网关过滤器灰度发布 通过网关过滤器传递Http Header的方式传递全链路灰度路由规则。下面代码只适用于Zuul和Spring Cloud Gateway网关,Service微服务不需要加该方式。 三、业务参数在策略类中自定义灰度路由规则 通过策略方式自定义灰度路由规则。下面代码既适用于Zuul和Spring Cloud Gateway网关,也适用于Service微服务,同时全链路中网关和服务都必须加该方式 上面说了具体灰度规则发布方式,那究竟怎么定义灰度规则呢?? 规则是基于XML或者Json为配置方式,存储于本地文件或者远程配置中心,可以通过远程配置中心修改的方式达到规则动态化。其核心代码参考discovery-plugin-framework以及它的扩展、discovery-plugin-config-center以及它的扩展和discovery-plugin-admin-center等,规则示例 XML示例(Json示例见discovery-springcloud-example-service下的rule.json) 黑/白名单的IP地址注册的过滤规则 微服务启动的时候,禁止指定的IP地址注册到服务注册发现中心。支持黑/白名单,白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。规则如何使用,见示例说明 最大注册数的限制的过滤规则 微服务启动的时候,一旦微服务集群下注册的实例数目已经达到上限(可配置),将禁止后续的微服务进行注册。规则如何使用,见示例说明 黑/白名单的IP地址发现的过滤规则 微服务启动的时候,禁止指定的IP地址被服务发现。它使用的方式和“黑/白名单的IP地址注册的过滤规则”一致 版本访问的灰度发布规则 版本权重的灰度发布规则 全局版本权重的灰度发布规则 区域权重的灰度发布规则 全局区域权重的灰度发布规则 网关端全链路路由策略的灰度发布规则 注意 路由策略的入口有三个(以{"discovery-springcloud-example-a":"1.0", "discovery-springcloud-example-b":"1.0", "discovery-springcloud-example-c":"1.0;1.2"})为例: 其作用的优先级为外界传入>网关Filter指定>配置中心或者本地rule.xml配置 您可以根据自己需求,自由定义灰度发布规则,灵活实现微服务的灰度发布。 源码位置:https://github.com/Nepxion/Discovery
2023-07-06 20:41:381

灰度发布(二)

继续上一篇的灰度发布,本文重点讲述kong网关是如何配置灰度发布规则的。 一、Kong网关在灰度发布中的重要作用 1、校验用户的htttp请求是否为灰度请求; 2、灰度规则的配置,允许多个规则的拼接; 3、需要为同一个service配置两个upstream,一个是正常的,另一个是灰度的。 二、主要流程 下面以用户服务为示例,演示在kong上面的操作。 1、新建UserService 2、新建两个upstream 三、配置灰度规则 支持多个规则,规则之间可以是“且”“或”的关系。 rules是一个数组结构:示例如下 passway可以是header, parameter, cookie。 paramName就是我们说的Key值。 rule_type 是表示多个规则之间的逻辑关系。 至于判断是否匹配规则,是Lua的global.lua中的load()方法。 如果请求匹配上了灰度规则,下一步要做的就是设置对应的upstream了。 默认取的upstream是ngx.ctx.balancer_data.host,如果填写的不是它,则取UserServiceGray这个对应的upstream。 最后给请求打上灰度标签。
2023-07-06 20:41:491

F5提出的“灰度发布”是什么意思呢?

灰度发布是在软件开发过程中交付的一种方式F5率先提出在应用交付控制器中支持“灰度发布”,并进一步完善了灰度发布的实现形式,除支持传统的A/B测试场景外,还可在线复制生产系统的流量到测试系统。在互联网产品的发布过程中也较多采用此种发布方式:产品的发布过程不是一蹴而就,而是逐步扩大使用用户的范围,从公司内部用户->忠诚度较高的种子用户->更大范围的活跃用户->所有用户。在此过程中,产品团队根据用户的反馈及时完善产品相关功能。此种发布方式,按照中国特色的叫法被冠以“灰度发布”、“灰度放量”、“分流发布”。请采纳!
2023-07-06 20:42:011

蓝绿发布、红黑发布、灰度发布和滚动发布

总结: 蓝绿发布、红黑发布、灰度发布和滚动发布组最终的目标都是避免因发布导致流量的丢失或服务不可用的问题 四种方式均可以做到平滑式升级,在升级过程中服务仍然保持服务的连续性,升级对外界是无感知的。那生产上选择哪种部署方法最合适呢?这取决于哪种方法最适合你的业务和技术需求。如果你们运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布,如果业务对用户依赖很强,建议灰度发布。如果是K8S平台,滚动更新是现成的方案,建议先直接使用。 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。 红黑发布: 申请新环境,删除老版本 灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。 滚动发布:按批次停止老版本实例,启动新版本实例。 项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。 当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务。1.如果出问题,影响范围较小; 2.发布策略简单; 3.用户无感知,平滑过渡; 4.升级/回滚速度快。 1.需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发; 2.短时间内浪费一定资源成本; 3.基础设施无改动,增大升级稳定性。 当前服务都运行在集群A上 在云上申请一个黑色集群 B,在 B 上部署新版本的服务; 等到 B 升级完成 最后一次性地把负载均衡全部指向 B,并把 A 集群从负载均衡列表中删除,并释放集群 A 中所有机器。 可以看到,与蓝绿部署相比,红黑部署只不过是充分利用了云计算的弹性伸缩优势,从而获得了两个收益:一是,简化了流程;二是,避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题。 1.从LB摘掉灰度服务器,升级成功后再加入LB; 2.少量用户流量到新版本; 3.如果灰度服务器测试成功,升级剩余服务器。 1.保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控; 2.新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少; 3.用户无感知,平滑过渡。 自动化要求高 滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。 1.保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控; 2.新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少; 3.用户无感知,平滑过渡。 自动化要求高
2023-07-06 20:42:161

苹果官方提供的灰度发布机制

如果你登录 itunes 后台,你就可以看到在应用版本号的最下方,有“Phased Release for Automatic Updates” 一项。如下图: 这个 Phased Release for Automatic Updates,就是苹果提供的灰度机制,只是苹果把这个叫做自动更新的分阶段发布。点击上图中的 “Learn More",你可以看到这个功能的详细说明。 该灰度发布机制将灰度分为七天,七天共七个阶段。第一天发布 1%的用户,第二天发布 2%,之后快速上升,第六天发布 50%用户,最后一天发布到所有用户。具体的进度表格如下: 当你在灰度发布时发现严重的 Bug 怎么办?别着急,苹果允许你暂停当前的版本发布。按官方的文档描述,你可以在灰度开始后的 30 天内无限次暂停发布。暂停发布之后,你可以选择提交一个新的版本来修复这个 Bug。 但是,需要注意的是,已经升级到你的灰度版本的用户,是无法让他回退应用版本的。具体为什么,大家可以想想。我觉得很可能是因为很难保证应用回退时数据是兼容的。这也是为什么 iOS 的备份也不能降低恢复到低版本中的原因。 觉得 7 天灰度太慢?没关系,苹果也考虑到了这一点。你可以在灰度阶段的任何时候,选择直接 100% 发布。这样你可以提前结束掉灰度的过程。 详情可阅读官方文档: https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process
2023-07-06 20:42:271

istio,让灰度发布从未如此简单

ServiceMesh解决什么问题? SM本质是 业务服务 与 底层技术体系 的 解耦 : Istio是ServiceMesh的产品化落地。 Istio的分层架构设计如何? Istio采用 实施与控制分离 的数据平面与控制平面两层架构。 数据平面 控制平面 整个架构的核心是envoy与pilot。 今天起,聊聊Istio的 流控 ,典型如灰度发布。 就如同ServiceMesh的设计初衷,是技术体系与业务服务解耦一样, Istio流控模型的本质 ,是流量控制与服务实例扩展的解耦,更具体的: 如上图所示,最开始时,ServiceA访问旧版的ServiceB。 画外音,业务与底层解耦: (1)灰色圆形为业务Svc服务; (2)紫色六边形为Envoy代理; (3)服务与代理之间都是本地访问; (4)跨网段之间都是Envoy代理交互(蓝色箭头); 如何进行灰度发布呢? 如上图所示,服务A调用服务B,服务B要发布一个灰度版本,需要5%的流量打到服务B的新版本,只需要: (1)部署服务B的新版本; (2)控制平面Pilot上进行策略配置,策略同步到Envoy; (3)数据平面Envoy接收到策略配置,实时分流策略; 画外音:图形上没有画出Pilot和Envoy的交互。 搞定,这个过程 业务服务与流量控制策略完全解耦 ,完美! 除了基于按流量比例分流的灰度发布,基于应用层的灰度发布通过Istio也非常容易实现。 如上图所示,服务B要发布一个灰度版本,需要把iPhone的流量打到B的新版本,操作流程完全一样(部署服务,Pilot控制,Envoy实施),非常方便。 如果Envoy原来只支持按照流量比例分流,不支持基于应用层协议分流,此时只需要: (1)升级Envoy的分流策略,以及策略控制端Pilot; (2)调用方服务A不需要升级; (3)服务方服务B也不需要升级; 业务与底层基础设施完全解耦 ,完美!
2023-07-06 20:42:401

crm灰度发布能力是什么?

灰度 API 的能力就是指灰度系统能根据不同的灰度规则来转发 API 请求到不同的后端服务器的能力按照 URI 前缀来区分不同的服务在我所处的部门,提供的 API 有十多个服务,但是我们提供出去的 API 是通过一个域名提供的,而不同服务之间则是通过 URI 前缀来区别的,因此,这里提供了根据 URI 前缀来区分不同的服务的功能请求转发到后端服务器组时,请求的 URI 前缀会被截断掉自定义后端服务器组可以在界面上自己添加服务器组,指定 API 服务器的 IP、端口和权重(为什么要说明这个呢,是因为在上家公司的时候,灰度系统做的极其简陋,每次我们的服务要换机器或者加机器的时候,都要去找灰度系统的维护人员,让他们去线上机器改配置,麻烦死了,跟他们的 leader 提过几次说希望能够写个后台让我们可以自己修改,节省大家的时间,他说真的没空,有太多其他需求了,也是,这个需求不产生任何 KPI 啊,过了一年多,到我离职的时候都没做出来过)
2023-07-06 20:43:191

iOS实现灰度发布App

1、进入 App Store Content ,输入 Apple 开发者账号登录。 2、登录成功之后,选择"我的 App",进入 App 列表。(如果没有 App,需要创建 App) 3、选择"TestFlight",“新群组”,“构建版本”,“选择要测试的构建版本”,“测试信息”,提交审核。 4、审核通过之后,选择“开启链接”,将“https”替换成“itms-beta”即可。 【 TestFlight 公开链接 】 转 【 TestFlight 安装链接 】 iOS 跳转 TestFlight 实现
2023-07-06 20:43:341

灰度发布的步骤

1)定义目标2)选定策略:包括用户规模、发布频率、功能覆盖度、回滚策略、运营策略、新旧系统部署策略等3)筛选用户:包括用户特征、用户数量、用户常用功能、用户范围等4)部署系统:部署新系统、部署用户行为分析系统(web analytics)、设定分流规则、运营数据分析、分流规则微调5)发布总结:用户行为分析报告、用户问卷调查、社会化媒体意见收集、形成产品功能改进列表6)产品完善7)新一轮灰度发布或完整发布
2023-07-06 20:43:541

什么是灰度测试 灰度测试的解释

1、灰度测试指的是在同一个时间段内,存在两个不同的应用版本,一个版本叫做黑色版本,而另一个版本叫做白色版本。然后我们通过观测两个同时存在的版本的表现来调整黑色版本和白色版本的比例,如果一切顺利,渐渐地就把所有用户的应用从黑色版本过渡到白色版本。 2、而这种通过共存黑白版本的手段进行测试的过程就叫做灰度测试或灰度发布。
2023-07-06 20:44:191

灰度测试什么意思?

问题一:热血传奇手游灰度测试是什么意思 灰度测试是程序在开发完成,测试人员全部测试通过,这个时候程序已经相对稳定,开发团队会将程序的升级功能只开放给部分用户,这部分用户使用过程中会出现一些bug,程序得检测功能会将bug日志上报到开发团队,开发人员在进行修改,修改完成之后才向全部用户发送升级通知,这个过程就叫做灰度测试。 内容出处:bbs.csdn/topics/391911017 问题二:灰度内测是什么意思? 指没有限制的内测。但是还是会限制用户身份,即只有有资格的用户才可以获得内测软件。 这时一般就是最后一次测试了,然后就是公测版了,可能有较多的bug…… 问题三:灰度发布的测试方法 灰度发布与互联网公司常用A/B测试似乎比较类似,老外似乎并没有所谓的灰度发布的概念。按照 *** 中对A/B测试的定义,A/B测试又叫:A/B/N Testing、Multivariate Testing,因此本质上灰度测试可以算作A/B测试的一种特例。只不过为了术语上不至于等同搞混淆,谈谈自己理解的两者的差异。灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量A/B测试重点是在几种方案中选择最优方案关于A/B测试可以参考这篇文章:A/B测试终极指南 问题四:灰度值是什么?是怎么测量的? 您好! 2.1、所谓灰度值是指色彩的浓淡程度.灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值的象素数。 2.2、对黑白图像,R,G,B值均相等,称为灰度值,每一个像素有一个灰度值.对于8位的灰度图像,其灰度值范围为0~255。 2.3、灰度也可认为是亮度,简单的说就是色彩的深浅程度。实际上在我们的日常生活中,通过三原 *** 彩深浅的组合,可以组成各种不同的颜色。产品能够展现的灰度数量越多,也就意味着这款产品的色彩表现力更加丰富,能够实现更强的色彩层次。例如三原色16级灰度,能显示的颜色就是16×16×16=4096色。不过目前的产品256级灰度已经非常地普遍了。   所谓颜色或灰度级指黑白显示器中显示像素点的亮暗差别,在彩色显示器中表现为颜色的不同,灰度级越多,图像层次越清楚逼真。灰度级取决于每个像素对应的刷新存储单元的位数和显示器本身的性能。如每个象素的颜色用16位二进制数表示,我们就叫它16位图,它可以表达2的16次方即65536种颜色。如每一个象素采用24位二进制数表示,我们就叫它24位图,它可以表达2的24次方即16777216种颜色。 灰度就是没有色彩,RGB色彩分量全部相等。如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧: 一个256级灰度的图象,RGB(100,100,100)就代表灰度为100,RGB(50,50,50)代表灰度为50。 灰度是指黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0,故黑白图片也称灰度图像,在医学、图像识别领域有很广泛的用途 彩色图象的灰度其实在转化为黑白图像后的像素值(是一种广义的提法),转化的方法看应用的领域而定,一般按加权的方法转换,R , G ,B 的比一般为3:6:1。 任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray =(R*28+G*151+B*77)>>8; 4.平均值法:Gray=(R+G+B)/3; 5.仅取绿色:Gray=G; 通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。 问题五:分期乐乐花申请说在灰度测试阶段 什么意思? 什么时候可以用 就是还没上线运营的意思,具体上线时间要看官网公布 问题六:鲁大师里面的屏幕灰度测试是什么? 测试你屏幕有无坏点。 问题七:灰度测试卡是什么? 就是从黑到白的灰度卡片。 多用于摄像、摄像器材测试。 用于测量亮度、对比度。 问题八:灰度测试工具用什么软件? 灰度测试工具用吆喝科技的ab测试
2023-07-06 20:44:331

网站里面灰度发布是什么意思?

网站里面灰度发布是什么意思?告诉你就是要发布一个很高很好的东西,让大家来参与。
2023-07-06 20:44:481

nginx如何实现负载均衡、限流、缓存、黑白名单和灰度发布

1.负载均衡配置 2.失败重试配置 在fail_timeout时间内失败了max_fails次请求后,认为上游服务器不可用,就会将服务地址剔除掉,fail_timeout时间后会再次将服务器加入存活列表进行重试。 limit_req_zone指令设置参数 参数说明 limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。 Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,例子区域可以存储160000个IP地址。 Rate定义最大请求速率。示例中速率不能超过每秒10个请求。 设置限流 burs排队大小,nodelay不限制单个请求间的时间。具体使用可以查看高并发场景如何使用nginx实现限流-实战篇 不限流白名单 该配置说明 192.168.1.0/24网段的ip访问是不限流的,其它限流。ip后面数字的含义 24表示子网掩码:255.255.255.0 16表示子网掩码:255.255.0.0 8表示子网掩码:255.0.0.0 1.浏览器缓存 静态资源缓存用expire Response Header中添加了Expires和Cache-Control 所谓的静态资源一般包括一直不变的图像,如网站的logo,js、css静态文件还有可下载的内容,媒体文件 协商缓存(add_header ETag/Last-Modified value)包括html文件,经常替换的图片,经常需要修改的js、css文件和基本不变的api接口 不需要缓存包括用户隐私等敏感数据,用户经常变动的api接口 2.代理层缓存 在本地磁盘创建一个文件目录,根据我们的配置把请求资源以k(key自定义,这边用url的hash值)->v形式缓存到目录里,并根据需求对内容设置缓存时长,比如状态码为200缓存10分钟,其余的缓存1分钟等待。要清理缓存可以借助purger的功能。如果ab测试/个性化需求时应禁用浏览器缓存,否则会因为缓存导致误差。 方式一 方式二 lua+redis动态黑名单(openresty) 配置(/usr/local/openresty/nginx/conf/nginx.conf) lua脚本编写(ip_blacklist.lua) 1.根据cookie实现灰度发布 根据cooke查询version值,根据version跳转到对应的host,如果没有匹配上的就跳转到默认配置。 2.根据来路ip实现灰度发布
2023-07-06 20:45:041

灰度发布数据库字段不统一

涉及到数据的灰度服务,一定会使用到数据库,使用到数据库就会涉及到你使用数据库前后的表字段不一致。如果灰度前后数据库的字段保持不变,那么新旧两套系统使用同一套数据库就可以了.如果前后数据不一致,需要处理的情况就比较复杂。
2023-07-06 20:45:201

CPU 架构指定 ABI

尊敬的开发者: 您好, 为提升App性能,降低App运行功耗,vivo、OPPO、小米共同推进国内安卓生态对64位架构的升级,协助开发者快速对接全球64位开发环境。 适配计划如下: 2021年12月底:现有和新发布的应用/游戏,需上传包含64位包体的APK包(支持双包在架,和64位兼容32位的两个形式,不再接收仅支持32位的APK包)。 2022年8月底:硬件支持64位的系统,将仅接收含64位版本的APK包。 2023年底:硬件将仅支持64位APK,32位应用无法在终端上运行。 为帮助开发者顺利完成架构升级,vivo现已支持64位应用上架,您可点击以下文档指南进行阅读: vivo 64位架构适配指南 vivo 64位安装包上传操作指南 开发者需积极采取措施完成64位架构升级,若逾期未适配,用户可能会收到“搜索标签提示”、“安装环节未适配提醒”等。 如有疑问,欢迎联系平台客服咨询。感谢您的支持。 2021年7月13日 vivo开放平台 灰度发布介绍:在当前上架版本为全网发布时,您可以采用灰度发布的方式进行应用升级。采用灰度发布,您可以先向一定比例的用户发布更新的版本,通过对小范围进行版本更新,您可以快速获取用户对新版本的反馈意见,降低版本全网发布后出现问题的风险。 Android的.so文件,32位处理器与64位处理器 小米上次打电话说,后期安装包要64位或32/64位的,这样更兼容,32位的话怕不兼容,有可能审核不通过 Android adb安装时强制应用App以32位或者64位运行 Android arm64-v8a、armeabi-v7a、armeabi、x86详解 当我们想在电脑的Android模拟器中安装APP的时候,会报INSTALL_FAILED_NO_MATCHING_ABIS错误【如图1】,导致APP无法在模拟器中运行。 由于安装的APP中使用了与当前CPU架构不一致的native libraries,所以导致报错,因为现在绝大多数的智能手机还都是采用ARM架构的,虽然android是支持ARM和x86架构,但是它们的指令集是有差别的,APP在开发的时候使用的是ARM的本地库,而我们在用AVD创建模拟器的时候使用的是x86的CPU,因此导致报错。所以,如果APP是在x86架构下编译的我们就创建x86cpu的模拟器,如果APP是在ARM架构编译的我们就创建ARMcpu的模拟器。 首先要看你的模拟器CPU类型是哪一种结构,然后直接修改模拟器的CPU类型来适应你的native libraries就可以解决此问题。 Android模拟器安装APP出现INSTALL_FAILED_NO_MATCHING_ABIS错误解决方案
2023-07-06 20:45:361

微信技术总监谈架构:微信之道——大道至简(演讲全文)

微信——腾讯战略级产品,创造移动互联网增速记录,10个月5000万手机用户,433天之内完成用户数从零到一亿的增长过程,千万级用户同时在线,摇一摇每天次数过亿...在技术架构上,微信是如何做到的?日前,在腾讯大讲堂在中山大学校园宣讲活动上,腾讯广研助理总经理、微信技术总监周颢在两小时的演讲中揭开了微信背后的秘密。 周颢把微信的成功归结于腾讯式的“三位一体”策略:即产品精准、项目敏捷、技术支撑。微信的成功是在三个方面的结合比较好,能够超出绝大多数同行或对手,使得微信走到比较前的位置。所谓产品精准,通俗的讲就是在恰当的时机做了恰当的事,推出了重量级功能,在合适的时间以最符合大家需求的方式推出去。他认为在整个微信的成功中,产品精准占了很大一部分权重。 相关链接 周颢 2001 年毕业于华南理工大学,计算机专业硕士。 2005 年加入腾讯广州研发部,历任 QQ 邮箱架构师, 广研技术总监,T4 技术专家,微信中心助理总经理。 微信研发团队里鼓励一种试错的信仰:他们坚信,在互联网开发里,如果能够有一个团队在更短的时间内尝试了更多机会(并能改进过来),就能有(更多的)机会胜出。敏捷是一种态度,在软件开发过程中,项目管理者都会非常忌讳“变更”这个词,但是在微信的项目运作中是不可以的。因为微信必须要容忍说哪怕在发布前的十分钟,也要允许他变更。这是非常大的挑战,因为打破了所有传统项目开发的常识。所有人都说不可能做到的,但微信做到了。研发团队所做的一切都是要给产品决策者有最大的自由度,而这个决策正是微信能够胜出的关键。 敏捷有很多困境,如果做一个单机版程序,是可以做到很敏捷的,但是腾讯正在运作的是一个海量系统,有千万级用户同时在线,在一个单独的功能上每天有百亿级的访问,同时还要保证99.95%的可用性。在海量系统上应对项目开发会有很严谨的规范,都说要尽可能少的变化,因为90%-95%的错误都是在变更中产生的,如果系统一直不变更会获得非常高的稳定度,但是微信就是要在悬崖边跳舞。微信的研发团队要做一些事情,让敏捷开发变得更简单。 如何做到这一切?周颢认为,首先,必须建立起一种狂热的技术信念,就是一定是可以做到的。然后,需要用一些稳固的技术(理念)来支撑,例如大系统小做、让一切可扩展、必须有基础组件、轻松上线(灰度、灰度、再灰度;精细监控;迅速响应)...等等来支撑。 当设计庞大系统的时候,应该尽量分割成更小的颗粒,使得项目之间的影响是最小的。仅仅把模块变得更为清晰,这在海量系统设计开发中是不够的,还需要在物理环境上进行分离部署,出现问题的时候可以快速发现,并且在最快的情况下解决掉。 大系统小做,混搭模式: 将不同的应用逻辑物理分割独立出来,用户注册登录、LBS逻辑、摇一摇逻辑、漂流瓶逻辑、消息逻辑独立开来。把关键的逻辑混搭在一起,当所有的逻辑部署在同一个服务器上,确实也会带来很大敏捷上的好处,因为不需要额外的考虑部署和监控的问题。在整个微信的逻辑中,可能现在已经有上百种不同的逻辑,因为会在逻辑的分割上拆分成8-10种做分离部署。 在高稳定度、高性能的系统中间,为了稳定性能把它设计成不变化的系统,但为了支持敏捷需要让一切的东西都要变得可以扩展。 扩展的关键点有两块。一个是网络协议需要扩展,当要升级一个新功能的时候,会有一些比较大的困难,所以所有协议设计都比较向前兼容,但是向前兼容还是不够的,因为网络协议设计本身有非常多的功能也会有比较大的字段,相关的代码可能会有数千行,这一块不能通过手写方式完成。可以通过XML描述,再通过工具自动生成所有的代码,这是微信获得快速开发的一个重要的点。 另外一块就是在数据存储方面是必须可扩展的。在2005年绝大多数海量系统的设计都是采用固定字段的存储,但是在现代系统中会意识到这个问题,会采用KV或者TLV的方式,微信也做了不同的设计。 把复杂逻辑都固化下来,成为基础软件。在微信后台会有几种不同的基础组件。大致包括: 在变更后的部署方式上,微信在一些规则会限定不能一次把所有的逻辑变更上去,每一次变更一小点观察到每一个环节没有问题的时候,才能布局到全网上去。微信后台每一天可以支撑超过20个后台变更,在业界来说,通常做到5个已经是比较快了,但是微信可以做到快4倍。 腾讯内部的上线系统: 而所谓灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。(在腾讯,灰度发布是最常采用的发布方式之一) 常识上,解决一个复杂问题的时候,会用高明的技巧解决复杂的问题,这个不是微信团队的目标,他们追求的要做到让所有问题很自然和简单的方式解决掉。在周颢看来,微信架构的技术复杂点在四个要点:协议、容灾、轻重、监控。 微信架构: 在协议设计上,移动互联网和常规互联网有很大的区别。首先有CMWAP和CMNET的不同,在中国现在有相当多的手机用户使用WMWAP连接,还有就是在线和离线的概念,当QQ下线的时候叫离线,当你登录的时候叫在线。但是在移动互联网这两个概念比较模糊。从微信的设计中,不管在线还是离线系统表现都应该是一致的。还有一个是连接不稳定的问题,由于手机信号强弱的变化,当时信号很好,5秒钟走到信号不好的地区,连接就必须断掉。这个中间带来不稳定的因素为协议设计带来较大困难。此外就是资费敏感的问题,因为移动互联网是按照流量计费的,这个计费会使得在协议设计中如何最小化传输的问题。最后就是高延迟的问题。 对此,业界标准的解决方案:Messaging And Presence Protocol:1)XMPP;2)SIP/SIMPLE。它的优点是简单,大量开源实现。而缺点同样明显:1)流量大:状态初始化;2)消息不可靠。 微信在系统中做了特殊设计,叫SYNC协议,是参考Activesyec来实现的。特点首先是基于状态同步的协议,假定说收发消息本身是状态同步的过程,假定终端和服务器状态已经被迟了,在服务器端收到最新的消息,当客户端、终端向服务器对接的时候,收取消息的过程实际上可以简单的归纳为状态同步的过程,收消息以及收取你好友状态更新都是相同的。在这样的模式之下,我们会也许会把交互的模式统一化,只需要推送一个消息到达的通知就可以了,终端收到这个通知就来做消息的同步。在这样的简化模式之下,安卓和塞班都可以得到统一。这样的系统本身的实现是更为复杂的,但是获得很多额外的好处。 让剩下系统实现的部分更加简单,简化了交互模式,状态同步可以通过状态同步的差值获得最小的数据变更,通过增量的传输得到最小的数据传输量。通过这样的协议设计,微信可以确保消息是稳定到达的,而且是按序到达。引用一句俗话:比它炫的没它简单,比它简单的没它快,没谁比他更快,哪怕在GPRS下,微信也能把进度条轻易推到底。 周颢介绍了在微信上具体容灾设计的做法。在所有的容灾中存储层的容灾是最难的,一个系统的设计分为三层:接入层、逻辑层、存储层。接入层和逻辑层的容灾都有比较成熟的方案。逻辑层的容灾相对来说比较简单,尽量不要有状态的设计,比如说当你做上一个请求的时候,会保持一些状态,要使得下一个请求发到下一个服务器。如果任何一个请求之间互相不关联的话,这个就是无状态的设计,只要做到这一点逻辑层的容灾可以随意的切换。在回到存储层本身的容灾设计上,相对来说困难一些,但是微信研发团队采用了一些技巧,叫分而治之,分离业务场景,寻求简单的设计,并不会寻求大而同一的解决方案,因为这样会使得系统的复杂度大幅度上升,而微信会尽可能把产品拆细,寻求简化的设计。 首先是主备容灾,这是最常见的方案。在有一些业务场景中是可以容忍最终一致性的,比如账号系统的设计,每天写入账号系统的请求是非常少的,但是访问的请求非常多,这个差异可能会达到数万倍的规模,在这样的场景下,微信会在账号系统中采用简化的方案,也可以获得比较大的稳定度。 SET模型+双写: 第二种容灾的模式叫双写,两台Master的机器,当一台机故障的时候,另外一台机还是可以接收到写请求,当两台机交错启动的时候,会得到数据的丢失。但是有一些场景是可以容忍轻度数据丢失的,比如说会有一个存储专门记录用户终端的类型,比如说安卓还是塞班以及他们使用终端的微信版本是什么,这样的数据是可以容忍轻度数据丢失的,因为偶尔有一些丢失的话,下一次访问会把这些数据带上来,会尽快的修复所有的数据。双写也是非常简单的模式。 微信的研发团队做了一个叫Simple Quorum的机制,在微信的后台中,同步协议有一个很重要的基石叫序列发生器,这样的一个序列发生器需要有极高的稳定度。首先可以看到序列号有一个特点永远是递增的,用递增方式往前推进的时候,最大的序列号就是最新的系列号。有一个毕业才加入广研的毕业生想到一个绝佳的方案,按SET分布,从2G减到200K。 周颢还谈到了轻重的概念。这个概念的提出主要是从终端本身的一些困境所带来的。首先在终端上需要表现最多的一个产品的逻辑,逻辑非常复杂,变更的成本也非常高,当需要修复的时候必须发布一个新版本,这个新版必须由自己下载才能完成,下载的成本非常高。在这样的前提下,如果手机终端产生了任何变化的时候,如果这个变化有非常大的问题就会有极大的困境,所以需要在每一个发布之前做一些充分的数据,确保不会发生致命问题。如果一旦出现致命问题难以修复,需要把关键的点从终端移到后台实现,把功能点后移,来充分发挥后台快速变更的能力。 接入优化:从GSLB到IP重定向 在接入层的优化,速度很重要的因素,是不是能够就近接入一个最优的节点,比如说移动用户最好接入移动的节点,海外的用户可能需要寻找更佳的路由,有的时候可能无法自动做到这一点,一点是在终端上做测速,微信会通过在后台IP逆向的能力,通过后台指挥微信终端联网的能力,寻找最优的接入点。上图就是每分钟收到同一项指令曲线的报表。 如何解决“偷流量”的问题 ——当国内类微信类产品发布的时候出现一个大的问题就是“偷流量”,当用户在某一些逻辑下进行一个死循环,不断访问某一些数据,这样的死循环是非常可怕的,如果在用户不知觉的情况之下,可能会在一个小时之内偷到数10兆甚至数百兆的流量。有非常多业内的同行都需要花大量的精力解决这个问题,微信研发团队用了非常强大的方式解决它。通过在后台建立起严厉的监控系统,对每一个用户的行为做一个监控,当发现异常的时候,后台会给终端发出指令,使得微信终端在一段时间无法联网,但是可以保证用户流量不会白白的使用掉。 功能适配的例子 ——第一期微信版本发布的时候,当时没有群聊的功能,第二版发布的时候做了这个功能。当时有两个选择,对于早期版本的用户,因为不支持群聊,就无法享用到这个功能,但是微信希望提供更好的选择,想让早期不支持群聊的版本,也可以被拉到一个群里面收消息、发消息,通过后台功能的适配也能做到这个事情。 对于一个海量系统来说,一个精密的仪表盘非常重要。监控是非常痛苦的,对于这样一个系统来说,每小时会产生数百G的监控日志。微信希望在1分钟之内监控的数据就能够显示在报表上,因为只有这样的精准和实时度才能够赢得处理故障的时间。微信会做关联统计,通过摇一摇加了好友,他们活跃度如何,过了一段时间他们的活跃度变化情况又是如何。这种需求是需要通过大量日志的关联统计来获得的。研发团队也花了一段时间来理解这个问题,发现了中间一个重要的经验叫做“鱼和熊掌不能兼得”。 为了让监控数值更敏感,需要把监控细化再细化,上面数据表示每一栏子系统的数据,下面这个是按微信版本号来划分的,这里的数据项是非常多。 微信还需要采集一些异常的点,如果有异常的话会发布紧急的版本,尽可能快的替换它。对收发消息延时做的监控,比如说0—1秒端到端的速度,会对不同的区段做一些统计,当某一个环节出现异常的时候,通常会在中间的延时上体现出来。有一个很重要的点叫自动报警,现在有数千项的数据,不可能每一项都靠人工去看的,必须要跟自动报警相关联,微信有一些智能的算法,是不是在正常的范围内,跟 历史 的数值进行对比,如果有异常的话,会通过短信、邮件还有微信本身来发出报警信息。 微信会把监控嵌入到基础框架里面去,因为并不是每一个人都会意识到在需要的地方嵌入一个监控点,所以在基础框架本身内置很重要的监控点,比如说这个表上的栏目,非常多的栏目大概会有数百项的栏目,都不需要程序员自己去写,当用基础组件搭建一个系统的时候,就可以直接观测系统数据。 在谈到微信未来的技术挑战时,周颢首先希望能够让微信成为可用性99.99%的系统;设计出面向现在10倍容量的系统以及完全的IDC容灾。 网上盛传的凌晨两点,腾讯大厦那多层大片大片的灯光和楼下那长长的出租车队伍说明了一切。引用一句话做结尾:“可怕的不是微信,真正可怕的是,比你领先比你更有天赋的团队比你更努力”。
2023-07-06 20:45:541

金丝雀发布的本质

金丝雀发布在国内也经常被叫做灰度发布。下文将使用”金丝雀发布“这一术语。 金丝雀发布是发布模式的一种。“发布”是什么意思?发布:即宣布,发表。有向外公开的意思。 说到“发布”,就不得不说“部署”。不少人将“发布”与“部署”两个概念混淆。 “部署”又是什么意思?在软件工程领域,“部署”指的是将(编译)打包好的程序发送到目标服务器上,并启动执行。 就是说,部署了,并不一定代表着向用户发布。 如果把软件产品比喻成一舞台剧。部署是将舞台提前布置好,但是幕布是拉上的。而发布则是把观众放进剧场,然后拉开幕布。注意:只有真正“拉开幕布”,才称为发布。 那金丝雀发布又是什么?接着刚刚说的比喻,指的是你并不是一次性将所有的观众都放进剧场。只是有条件的让一部分人进场并拉开幕布。你可以通过这些观众对于舞台剧的评价对舞台剧进行调整改进。最后,再选择合适的时机向所有的人开放消费。 回到技术领域。金丝雀发布就是你已经将程序部署到生产环境了,然后根据流量比例、用户ID、用户地域、用户类型等不同维度的条件,允许用户使用部署到生产环境上的程序上的功能。这个过程中,你可以观察这些”特权“用户的数据,以判断你是否需要对功能进行改进。当数据足以支撑全量发布时,就可以进行全量发布。 这就是我们文章开头强调的:金丝雀发布是发布模式的一种。以下是根据流量比例进行金丝雀发布的图示(来自flagger.app): Flagger是一种基于K8s的发布控制器。能以较低的成本实现金丝雀发布。本例中,它启动一个V2版本的程序的实例,并”放行“5%的用户请求进入V2版本的实例。 因为软件产品一次性全量发布后,你并不能确保它一定受大众喜爱,所以,一步步的试探用户的喜好的软件产品发布策略成为必然选择。 比起一次性全量发布,金丝雀是一种演进式的发布模式,也可以说是一种业务级别的决策。 说到”目的“,就不得不说与金丝雀发布容易混淆的”蓝绿部署“。 蓝绿部署也是一种发布模式。如下图。它的部署方式与金丝雀发布的部署方式几乎一样。 蓝绿部署与金丝雀发布之间存在两个区别。主要区别是”目的“。蓝绿部署的发布模式的目的是更安全的部署,金丝雀发布的目的是演进式的发布。 次要区别是决策维度的不同。蓝绿部署是技术维度的决策,而金丝雀是业务维度的决策。 如下图展示的是蓝绿部署的决策过程。如果V2版本的实例在生产环境经过多种验证方式验证过,即可把流量全部切到V2版本。在验证期间会保留V1实例,以保证可以随时回滚。 另,至于为什么是叫蓝绿部署(Blue-Green Deployments)而不是蓝绿发布。个人认为是因为从一开始蓝绿部署的出发点是零停机(Zero Downtime),而不是演进式的发布。当然,从名称上也体现了在蓝绿部署和金丝雀发布在”决策维度“上的区别。 参考Martin Fowler关于蓝绿部署的文章: https://martinfowler.com/bliki/BlueGreenDeployment.html 容易与金丝雀发布混淆的,还有”滚动更新“。它是一种将软件程序从一个版本平滑的升级到另一个的版本部署技术。如下图。属于技术决策。与业务无关。与金丝雀发布不是同一个维度的东西。 动态图来自: https://www.bluematador.com/blog/kubernetes-deployments-rolling-update-configuration 在厘清与金丝雀相关的各种概念定义之后,我们从设计者的角度思考金丝雀发布:如果让你设计一个金丝雀发布系统或者平台,你该如何实现? 笔者认为它至少要实现三个接口: 这三个接口与具体实现应该是无关的。比如你可以通过Prometheus实现指标的收集接口,也可以通过AWS的CloudWatch。 同时,金丝雀发布系统还需要一些用户体验性相关的功能,比如出现回滚时进行通知、滚动更新前进行人工审批、滚动更新的步骤大小等等。 金丝雀发布系统所需的接口后,我们发现,由于Service Mesh技术的兴起,让金丝雀发布的实现变得容易了很多。 因为Service Mesh技术天生就支持以上三个接口。所以,行业里一下就出现一些轻量级的发布系统,比如Argo Rollouts和Flagger。我们可以通过以下表格进行对比: Flagger的三个接口的实现更丰富,几乎完胜Argo Rollouts。Argo Rollouts除了UI,几乎没有优势。 虽说金丝雀的好处是看得见的,但是并不代表,你的每一次发布都能使用它。我们需要清楚的认识到,执行金丝雀发布的过程中,程序存在一个中间状态:就是两个版本同时存在,有时甚至是多个版本。在生产环境,如果你的程序无法同时运行两个版本,你就不能采用金丝雀发布。这个风险需要开发在开发过程就确定的。 所以,我们认为采用金丝雀发布的前提是:开发人员开发出来的程序必须有同时运行多个版本的能力。 而这一能力,对程序员本身的能力也有要求。比如它要求程序员在设计接口和DB schema时考虑向前兼容。在程序员能力不足时,也无法采用金丝雀发布。 金丝雀发布的概念的理解程度,决定了团队是否能采用金丝雀发布,也决定了金丝雀发布系统的设计。 开源的金丝雀系统倾向于基于标准化的Kubernates平台,大概率是因为它更标准,更容易实现。而大多企业的金丝雀系统可能与企业内部系统耦合严重,无法开源。
2023-07-06 20:46:421

灰度版本怎么过渡到正式版本

快速地切换。从灰度环境,不用再次上线,能够快速地切换到正式环境。灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。
2023-07-06 20:46:561

部署的几种方式

由于之前只接触了单服务应用,并且是自己做的,所以部署的方式也比较随意,想要部署的话直接打一个war包部署上去就好了。接触过分布式的多服务后,事情就没有这么简单了,如果还是采用之前的方式,会存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。 下面是对集中常见部署方式的了解: 蓝绿部署是我可以不看其他推荐,自己想到了部署方式。直接运行两个版本的应用,并不停止旧版本的运行,而是等新版本运行正常后将流量切到新版本,但是缺点也很明显,我需要双倍的资源,平时10台服务器就可以解决的问题现在需要20台了。 滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。在升级的时候不是把所有的服务都启动,而是启动一台新的服务就替换掉对应的老服务,这样正常需要10台服务器,现在只需要11台就好了,缺点也很明显,就是太不稳定了,出了问题不容易追溯。 灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。 在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。 当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。 如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。
2023-07-06 20:47:131

灰度英语怎么说

问题一:“灰度” 用英文怎么说? grayscale: 灰度 问题二:“灰度”用英文怎么说 灰度 [词典] [电] gray level; gray scale; [例句]该编码方法解决了再现过程中图像混叠的问题,适用于对所有灰度图像的编码。 It solved the problem of aliasing image and can is used in all gray images coding. 问题三:计算机术语中“灰度发布”的英文是什么? Gray released in puter terms是灰度分布 问题四:灰度化的英文翻译是什么? 灰度化的英文翻译 : Gray Grey or gray (see spelling differences) describes any shade between black and white. Collectively, white, black, and the range of greys between them are known as achromatic colors or neutral colors. Greys are seen monly in nature and fashion. Grey paints can be created by mixing plementary colors (that is colors directly opposite on the color wheel, e.g. yellow and violet). In the RGB color model used by puter displays, it is created by mixing equal amounts of red, green, and blue light. Images which consist wholly of neutral colors are called monochrome, black-and-white or greyscale. 问题五:对图像进行卷积操作 英语怎么说 convolution operation of image 可以表示“对图像进行卷积操作”的意思 问题六:b超 用英语怎么说 你好,我是医生。 Brightness mode是考专业试回答问题时才会用的,日常用语ultrasound examination或ultrasonography或B scan便可以了。 补充: 可以注明检查的部位,如: Ultrasound liver(肝脏超声波检查) Ultrasound abdomen(腹部超声波检查)等 问题七:翻译一下图里的英文 glsl shader是OpenGL着色语言的几何着色器,HQ是high quality高品质(输出),2X就是2倍,4X就是4倍,LCD是液晶显示器,scanlines是扫描线,motion blur是动态模糊,grayscale灰度级别 问题八:单墨盒打印单色 JPG 时灰色部分出不来,打印机要设置(英文),大侠帮帮忙啊!在线等,qq也行。谢谢!!! Media Type:Plain paper 纸张类型:普通纸 Paper Source:Anto Sheet Feeder 纸张来源: 自动 Print Quality: high 打印质量: 高级; Standard标准; Fast快速 Color / Intensity: Auto 颜色:自动 Manual手动 Grayscale Printing 灰度打印 Preview before printing 打印前预览 下面两个按钮是: Print advisor 打印建议 Defaults 取消 左边图里面的 Plain Paper A4 210.0 * 297.0mm 普通A4纸 210.0 * 297.0mm
2023-07-06 20:47:361

ServiceMesh & Istio

服务网格(ServiceMesh)号称是下一代微服务架构。 互联网公司,经常使用的是微服务分层架构。 画外音: 为什么要服务化,详见 服务化解决了什么问题? 随着数据量不断增大,吞吐量不断增加,业务越来越复杂,服务的个数会越来越多,分层会越来越细,除了数据服务层,还会衍生出业务服务层,前后端分离等各种层次结构。 画外音: 分层的细节,详见《 互联网分层架构演进 》。 不断发现主要矛盾,抽离主要矛盾,解决主要矛盾,架构自然演进了,微服务架构, 潜在的主要矛盾会是什么呢? 引入微服务架构,一般会引入一个RPC框架,来完成整个RPC的调用过程。 如上图粉色部分所示,RPC分为: 画外音: 《 离不开的微服务架构,脱不开的RPC细节 》。 不只是微服务,MQ也是类似的架构: 如上图粉色部分所示,MQ分为: 画外音: 《 MQ,互联网架构解耦神器 》。 框架只是第一步,越来越多和RPC,和微服务相关的功能,会被加入进来。 例如:负载均衡 如果要扩展多种负载均衡方案,例如: RPC-client需要进行升级。 例如:数据收集 如果要对RPC接口处理时间进行收集,来实施统一监控与告警,也需要对RPC-client进行升级。 画外音,处理时间分为: 客户端视角处理时间 服务端视角处理时间 如果要收集后者,RPC-server也要修改与上报。 又例如:服务发现 服务新增一个实例,通知配置中心,配置中心通知已注册的RPC-client,将流量打到新启动的服务实例上去,迅猛完成扩容。 再例如:调用链跟踪 如果要做全链路调用链跟踪,RPC-client和RPC-server都需要进行升级。 下面这些功能:负载均衡数据收集服务发现调用链跟踪…其实都不是业务功能,所以互联网公司一般会有一个类似于“架构部”的技术部门去研发和升级相关功能,而业务线的技术部门直接使用相关框架、工具与平台,享受各种“黑科技”带来的便利。 完美!!! 理想很丰满,现实却很骨感,由于: 往往会面临以下一些问题: 画外音: 兄弟,贵司推广一个技术新产品,周期要多长? 这些耦合,这些通用的痛点,有没有办法解决呢? 一个思路是,将服务拆分成两个进程,解耦。 画外音: 负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现。 这样就实现了“业务的归业务,技术的归技术”,实现了充分解耦,如果所有节点都实现了解耦,整个架构会演变为: 整个服务集群变成了网格状,这就是Service Mesh服务网格的由来。 要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的实践,今天说说Istio是干啥的。 画外音:不能落伍。 什么是Istio? Istio是ServiceMesh的产品化落地,它的一些关键性描述是: 画外音: Istio helps you to connect, secure, control, and observe microservices 画外音: 佩服,硬是凑齐了十条,其实SM还能提供更多基础服务功能。 画外音: 说的还是解耦。 Istio官网是怎么吹嘘自己的? 画外音: 这个问题的另一个问法是“为什么大家要来用Istio”。 Istio非常牛逼,如果要实施ServiceMesh,必须用Istio,因为: 画外音: 你信了么? Istio的核心特性是什么? Istio强调了它提供的五项关键特性: 画外音: 断路器(circuit breakers)、超时、重试、高可用、多路由规则、AB测试、灰度发布、按照百分比分配流量等。 Istio的吹嘘与特性,对于国外很多通过RESTful提供内网服务的公司,很有吸引力,但相对于国内微服务架构,未必达到了很好的拉拢效果: (1)国内基本都是TCP的RPC框架,多协议支持未必是必须的; (2)RPC框架里,路由、重试、故障转移、负载均衡、高可用都是最基础的; (3)流控、限速、配额管理,是服务治理的内容,在微服务架构初期是锦上添花; (4)自动度量,系统入口出口数据收集,调用跟踪,可观察和可操控的后台确实是最吸引人的; (5)服务到服务的身份认证,微服务基本是内网访问,在架构初期也只是锦上添花; 另外一个花边,为什么代理会叫sidecar proxy? Istio这么牛逼,它的核心架构如何呢? 关于Istio的架构设计,官网用了这样一句话: 逻辑上,Istio分为: 这两个词,是Istio架构核心,但又是大家被误导最多的地方。 数据平面和控制平面,不是ServiceMesh和Istio第一次提出,它是计算机网络,报文路由转发里很成熟的概念: 画外音:上两图为路由器架构。 它的设计原则是: 画外音: Istio的架构核心与路由器非常类似: (1)高效转发; (2)接收和实施来自mixer的策略; (1)管理和配置边车代理; (2)通过mixer实施策略与收集来自边车代理的数据; 画外音: (1)sidecar proxy,原文使用的是envoy,后文envoy表示代理; (2)mixer,不确定要怎么翻译了,有些文章叫“混音器”,后文直接叫mixer; (3)pilot,galley,citadel,不敢翻译为飞行员,厨房,堡垒,后文直接用英文; 如架构图所示,该两层架构中,有五个核心组件。 Envoy的核心职责是高效转发,更具体的,它具备这样一些能力: (1)服务发现 (2)负载均衡 (3)安全传输 (4)多协议支持,例如HTTP/2,gRPC (5)断路器(Circuit breakers) (6)健康检查 (7)百分比分流路由 (8)故障注入(Fault injection) (9)系统度量 大部分能力是RPC框架都具备,或者比较好理解的,这里面重点介绍下断路器和故障注入。 它是软件架构设计中,一个服务自我保护,或者说降级的设计思路。 举个例子:当系统检测出某个接口有大量超时时,断路器策略可以终止对这个接口的调用(断路器打开),经过一段时间后,再次尝试调用,如果接口不再超时,则慢慢恢复调用(断路器关闭)。 它是软件架构设计中,一种故意引入故障,以扩大测试覆盖范围,保障系统健壮性的方法,主要用于测试。 国内大部分互联网公司,架构设计中不太会考虑故障注入,在操作系统内核开发与调试,路由器开发与调试中经常使用,可以用来模拟内存分配失败、磁盘IO错误等一些非常难出现的异常,以确保测试覆盖度。 Mixer的一些核心能力是: (1)跨平台,作为其他组件的adapter,实现Istio跨平台的能力; (2)和Envoy通讯,实时各种策略 (3)和Envoy通讯,收集各种数据 Mixer的设计核心在于“插件化”,这种模型使得Istio能够适配各种复杂的主机环境,以及后端基础设施。 Pilot作为非常重要的控制平面组件,其核心能力是: (1)为Envoy提供服务发现能力; (2)为Envoy提供各种智能路由管理能力,例如A/B测试,灰度发布; (3)为Envoy提供各种弹性管理能力,例如超时,重试,断路策略; Pilot的设计核心在于“标准化”,它会将各种流控的控制命令转化为Envoy能够识别的配置,并在运行时,将这些指令扩散到所有的Envoy。Pilot将这些能力抽象成通用配置的好处是,所有符合这种标准的Envoy都能够接入到Pilot来。 潜台词是,任何第三方可以实现自己的proxy,只要符合相关的API标准,都可以和Pilot集成。 Citadel组件,它提供终端用户身份认证,以及服务到服务的访问控制。总之,这是一个和安全相关的组件。 Gally组件,它是一个配置获取、校验、处理、分发的组件,它的设计核心在于“解耦”,它将“从底层平台(例如:K8S)获取用户配置”与Istio解耦开来。 Istio采用二层架构,五大模块,进行微服务ServiceMesh解耦: 数据平面,主要负责高效转发 (1)envoy模块:即proxy; (2)mixer模块:支持跨平台,标准化API的adapter; (3)pilot模块:控制与配置envoy的大部分策略; (4)citadel模块:安全相关; (5)galley模块:与底层平台(例如:K8S)配置解耦; 实施与控制分离,经典的架构设计方法,GOT? 思路比结论重要。
2023-07-06 20:47:541

微信里面的理财通谁用过,收益怎么样,安不安全

不管对于哪款理财产品,投资者都会有一个问题,这个产品收益怎么样?有风险吗?安全吗?尤其是对于互联网的理财产品还存在账户是否安全,被盗了怎么办等等问题,下面分析一下微信理财通安全吗:“理财通”处于灰度发布的状态有关,在本次试运行期间只有华夏基金,在灰度发布期间,单日单卡申购金额不能够超过8000元,账户金额不超过100万。每个账户每日转出的金额不超过6000元。各项功能还在完善中。资金流动性的问题:目前华夏基金只提供产品,并不垫付资金。前期由腾讯先期垫资,最后在与华夏基金结算,随着流动资金量增大,可能会出现垫资困难。资金转出安全较高,理财宝的转入转出都是单卡操作,你绑定哪张卡,转入转出就必须是那张卡,这样减小了风险。微信理财通用户购买的是华夏基金的“财富宝”,“财富宝”属于货币基金,相对风险比较小。对于账号资金被盗是有补偿协议,但是仅限于在满足服务条款的条件下,像以下情况是不会给予赔偿的。
2023-07-06 20:48:2412

超赞!使用 argo-rollouts 实现kubernetes上的金丝雀、蓝绿发布

Argo-Rollout是一个Kubernetes Controller和对应一系列的CRD,提供更强大的Deployment能力。包括灰度发布、蓝绿部署、更新测试(experimentation)、渐进式交付(progressive delivery)等特性。 支持特性如下: Argo原理和Deployment差不多,只是加强rollout的策略和流量控制。当spec.template发送变化时,Argo-Rollout就会根据spec.strategy进行rollout,通常会产生一个新的ReplicaSet,逐步scale down之前的ReplicaSet的pod数量。 按官方文档进行安装,官方地址为:https://argoproj.github.io/argo-rollouts/installation/#kubectl-plugin-installation (1)在Kubernetes集群中安装argo-rollouts (2)安装argo-rollouts的kubectl plugin 金丝雀发布包含Replica Shifting和Traffic Shifting两个过程。 这里使用官方的demo来进行测试。例子:https://argoproj.github.io/argo-rollouts/getting-started/ 使用如下命令部署示例: 我们先看看第一个rollout.yaml的具体内容,如下: 可以看到除了apiVersion,kind以及strategy之外,其他和Deployment无异。 strategy字段定义的是发布策略,其中: 而service.yaml文件定义的就是普通的service,如下: 执行上面命令部署后,会在default命名空间下创建5个pod,如下: 可以使用kubectl-argo-rollouts get rollout rollouts-demo命令来查看部署状态,如下: 可以看到该版本被标记为stable,而且STATUS为healthy。还可以在命令后面加一个--watch来实时监控服务状态,完整命令为kubectl argo rollouts get rollout rollouts-demo --watch。 接下来对应用进行更新。对应用进行更新和更新用Deployment部署的应用一样,更新镜像即可。argo rollouts插件有一个set image命令来更新镜像,如下: 更新过后,我们可以通过观察kubectl argo rollouts get rollout rollouts-demo --watch服务状态,如下: 可以看到多了一个revision:2,而且该版本被标记为canary,而且状态是Status: Paused,canary接入流量为20%。 部署之所以处于Paused阶段,是因为我们在rollout.yaml中定义了发布第一个版本后会暂停,这时候需要手动接入接下来的更新。 argo rollouts提供了promote来进行后续的更新,命令如下: 然后我们可以在watch界面,看到如下的更新过程。 因为后续的更新在pause阶段只暂停10s,所以会依次自动更新完,不需要手动介入,待更新完后整体的状态如下: 可以看到第一个版本已经下线,第二个版本的状态为Healthy,而且镜像被标记为stable。 如果在更新应用的过程中,最新的应用有问题,需要终止更新需要怎么做呢? 我们先使用下面命令发布新版本应用,如下: 然后更新动作会在第一次更新的时候处于Paused状态,现在我们可以用abort来终止发布,如下: 待执行完命令后,可以在watch页面,看到如下信息: 最终应用会回退到稳定版本。 但是我们可以看到Status是Degraded状态而并非Healthy状态,我们有必须要将其变成Healthy状态。最简单的办法就是执行如下命令重新发布一下版本: 执行过后,可以看到其状态立即变成Healthy,并且没有创建新的副本、新的版本,如下: 有时候在应用上线过后,有些BUG并没有发现,这时候要回退怎么办呢?argo rollouts有一个undo命令,可以进行回退。 比如我们要将版本回退到第一个版本,则执行一下命令: 然后通过watch界面可以看到如下信息: 首先revision为1的版本标记没有,重新创建了一个为5的标记,而且第一步处于暂停状态,然后我们执行promote命令继续后续的更新,如下: 然后我们可以看到如下信息: 从Images可以看到回退到我们最初版本为blue的镜像了。 上面我们并没有接入外部流量,仅仅是在内部使用展示了金丝雀部署过程,下面我们接入外部流量进行测试。 Argo-Rollout主要集成了 Ingress 和 ServiceMesh 两种流量控制方法。 目前Ingress支持ALB和NGINX ingress。但是我使用的是nginx ingress。 我们依然使用官方的例子进行展示。 首先删除上面的例子。 然后重新部署一个官方的例子,如下: 这个例子包含1个rollout,2个service,1个ingress。 它们的配置文件分别如下。 rollout.yaml,为了便于测试,我将权重改为了50 services.yaml ingress.yaml 从配置文件可以看出Rollout里分别用canaryService和stableService分别定义了该应用灰度的Service Name(rollouts-demo-canary)和当前版本的Service Name(rollouts-demo-stable)。而且rollouts-demo-canary 和 rollouts-demo-stable的service的内容是一样的。selector中暂时没有填上pod-template-hash,Argo-Rollout Controller会根据实际的ReplicaSet hash来修改该值。 当我们创建完ingress后,Rollout Controller会根据ingress rollouts-demo-stable内容,自动创建一个ingress用了灰度的流量,名字为--canary,所以这里多了一个ingress rollouts-demo-rollouts-demo-stable-canary,将流量导向Canary Service(rollouts-demo-canary)。如下: rollouts-demo-rollouts-demo-stable-canary的内容如下: 通过域名访问,可以看到如下界面。 现在通过以下命令来进行应用更新操作。 然后通过状态窗口可以看到如下信息。 然后可以看到rollouts-demo-rollouts-demo-stable-canary的ingress的annotations中新增了两个参数,如下: 然后通过网页,可以看到如下的输出展示。 image.png 然后可以通过验证结果来判断是否继续还是终止。 如果继续使用如下命令: 如果终止使用如下命令: 目前我还在测试阶段,并没有实际接入使用。通过测试来看,Argo-Rollout提供更加强大的Deployment,包含比较适合运维的金丝雀发布和蓝绿发布功能,要使用蓝绿发布,仅需要配置rollout,如下: 整体使用还是比较丝滑,如果测试通过后续考虑集成进CD中。更多内容可以到https://argoproj.github.io/argo-rollouts/进行学习。
2023-07-06 20:50:501

微信不能发表情包了是怎么回事

微信朋友圈不能发表情包解决方法介绍这是因为现在开始进行灰度测试了,一部分用户更新到了7.0.9版本还是可以用的,所以说目前这个功能已经暂停了。灰度测试介绍灰度测试,又名金丝雀发布、灰度发布,是指在黑与白之间能够平滑过渡的一种发布方式。在这其中可以进行A/B testing,也就是说一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果使用B的没有意见,会逐步扩大范围,把所有用户迁移到B上面。灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
2023-07-06 20:50:581

需求在不同阶段的验证方式

图示中从左到右,有两个特性:团队对需求认知逐渐加深、验证成本越来越高 一、头脑风暴 往往用于,有一个被动需求出现初期,或者是出于自身灵感,此时大多数人对于此需求的认知程度很低,故此将围绕此需求作出较多潜在的假设和方案分析,此时需求仅存在于团队内部,尚未对外。 此阶段重点在于,准备相关素材以及数据,在讨论中得出需求认知的预设问题。 二、焦点小组 这里不一定非要按照严谨的焦点小组流程进行,其主要在于能够和用户面对面,坐下来深度聊他们对于某一需求的认知。量不在多,三天内约谈10名典型用户即可,特别提一句,此阶段未为了排除干扰,最好分开约用户,具体取决于用户配合度以及调研预算。 此阶段的重点在于,对需求定性,并且在脑中要形成大概的产品解决方案,面访中及时沟通。 三、问券调查 问卷也不一定是用于定量,也可以用于定性,看个人习惯。这里只是特指一个阶段。 一般而言,这个阶段你已经有了自己的原型想法,但是为防止前期调研用户数量限制带来的个体偏差,你需要做一份问卷来让用户给你一些信心,或者是把你从错误边缘及时拽回来。 有些人认为问卷的成本不高,但其实我认为是高于面访的,其原因有三:1、问卷的回收数量必须足够大才有意义,个人认为最少大于2000份,并且还需要从中筛选无效问卷,其实人工成本是比较高的。2、问卷的投放最好基于自有用户数据,而非外部,否则无法追踪,站在这一角度,问卷投放实际上是在消耗你的用户耐心,并且单位时间内不可投放过多问卷,这一成本是你必须要考虑的。3、问卷调查,RP不好的情况下,可能一轮投放完毕,回收到的信息根本不可用。 四、可用性测试 这一阶段,不一定要把产品开发出来才能做,成本太高,可以使用墨刀这类比较好做交互的原型产品做个可交互的原型demo,让UI润色一下,直接给用户试用,提出建议。 五、A/B Test或灰度发布 到了这一阶段,你对需求的认知已经很高,在前期的需求验证上已经完毕,只是为了获得更精细、优质的转化,保障功能铺开后承担更低的风险,需要完成的动作。 六、其他叨逼叨 1、不可能所有需求都按照这个流程来验证,累死人,也没必要。 2、其中每种验证方式网上有很多文章,就不在此特殊说明。 3、好需求永远是深度聊出来的,数据仅能做参考。 4、野蛮生长的产品经验,只博大家一笑~
2023-07-06 20:51:041

云原生应用是什么?它的特点有哪些?

云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩??一些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。云原生架构和云原生应用所涉及的技术很多,如容器技术、微服务等,而云原生应用最大的特点就是可以迅速部署新业务。在企业里,提供新的应用程序环境及部署软件新版本通常所需时间以日、周甚至以月计算。这种速度严重限制了软件发布所能承受的风险,因为犯错及改错也需要花费同样的时间成本,竞争优势就会由此产生。所以云原生不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。云原生包括DevOps、持续交付、微服务、敏捷基础设施、康威定律等,以及根据商业能力对公司进行重组的能力,既包含技术、也包含管理,可以说是一系列云技术和企业管理方法的集合,通过实践及与其他工具相结合更好地帮助用户实现数字化转型。CNCF(云原生计算基金会)认为云原生系统需包含的属性:1、容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。2、自动化管理:统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本。3、面向微服务:通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
2023-07-06 20:51:145

产品运营方法论

概述产品经理在发展过程中逐渐分化出策划和运营,现在的产品经理通常指的是策划。产品策划侧重洞察用户需求映射值落地产品,注重“体验和逻辑”,而运营则侧重“内容”与“人”,即“营销”。通过好看、好玩的手段,使用渠道,触达用户并完整呈现“好用”,继而转化与留存。因为运营人员使用的运营手段不同,所以诞生了不同的角色,但最终目的都是为了产品和企业服务没提供获客、活跃、营收的可持续支持。市面上关于运营有非常繁多的分类,包括:用户运营、活动运营、社群运营、产品运营、内容和运营、渠道运营、数据运营、新媒体运营等等。但除去运营载体、合并雷同概念之后,运营的角色主要为:用户运营、活动运营、内容运营和渠道运营。运营公共的方法论核心主要分为四个部分:运营节奏及策略、内容运营、活动运营、数据运营。在此以思维导图的方式对产品运营的方法论核心进行总结。1运营节奏及策略运营节奏一般分为五个阶段,分别为:运营策略制定、初始化运营、测试放量、全量推广、固化运营。每一个阶段都有其特有的方法论和策略。在运营策略制定阶段,首先要对运营数据进行收集,包括市场环境、行业数据、竞品数据、渠道数据、用户趋势、技术趋势等。基于收集到的数据进行策略分析,确定在目标用户群体中的机会和策略,随后输出运营计划,包括打发、时间、节奏等等,最后还要关注人力、物力、财力等运营资源的配置。在这个阶段,运营也需要输出竞品的分析,但与产品策划的关注点相比,运营更加侧重竞品的运营数据(转化、新增、留存、流失)、渠道矩阵、数据、运营策略、用户分层构成等。在初始化运营阶段,主要是人和内容的初始化,即培养种子用户,预埋内容,建立产品的基调在测试放量阶段,一般通过AB测试,内测等方式进行灰度发布,控制新产品版本隐藏缺陷的影响范围,进行快速地迭代,去伪存真,小步快跑。在全量推广阶段,要制定包装产品的方法,制造核心需求使用场景,塑造差异化壁垒,为产品加标签以及出入人格化的魅力。其次要做好用户的运营与管理,培养用户兴趣与认同,设计用户自我长大驱动,重视用户留存,建设用户流失预警机制,这个阶段是运营工作的重中之重。之后还要进行渠道的部署,制定推广矩阵,控制成本。最后通过数据研究,实现精细化运营。最后一个阶段就是将成熟地运营机制固化成一个产品,完善运营策略的过程其实就是一个产品的迭代过程。2内容运营内容运营的目的就是通过内容建立与用户之间的信任感,建立营销属性和使用场景,为自己的产品提供“溢价能力”,建立品牌属性,将产品融入用户的生活方式,这是一个长期的过程。以下以新媒体中的内容运营为例,来阐述内容运营的方法论。3活动运营活动运营以目的的不同分为不同的类型,不同的运营目的导致了运营策划的关注点和数据指标也不同,具体的展示在下面的脑图中。线上活动运营的SOP标准作业流程包括设定目标、形式策展,执行传播、话题延续。具体内容也展示在脑图之中。4数据运营简单来说就是通过分析研究运营的基础数据(PV、UV、GMV等等)来指导产品在获客、留存、回流等阶段的运营方法。通过数据的分析进行用户的分层,实现精细化运营。
2023-07-06 20:51:441

dubbo服务调用异常

dubbo服务调用异常有可能是以下原因造成:地址找不到、调用超时。地址找不到:No provideravailable。(1)Provider服务没启动,或者注册中心(比如ZooKeeper,Nacos,Consul)宕机了。(2)Dubbo的服务配置有误差,必须保证服务名,组别(默认是Dubbo),version三者都正确。(3)访问的环境有误:通常我们会有开发环境、测试环境、线上生产环境等多套环境。有时候发布的服务到了测试环境,而访问调用时却走了开发环境。调用超时:client-sidetimeout(1)服务端确实处理比较慢,无法在指定的时间返回结果,调用端就自动返回一个超时的异常响应来结束此次调用。(2)服务端如果响应的比较快,但当客户端Load很高,负载压力很大的时候,会因为客户端请求发不出去、响应卡在TCPBuffer等问题,造成超时。因为客户端接收到服务端发来的数据或者请求服务端的数据,都会在系统层面排队,如果系统负载比较高,在内核态的时间占比就会加长,从而造成客户端获取到值时已经超时。(3)通常是业务处理太慢,可在服务提供方机器上执行:jstack[PID]>jstack.log分析线程都卡在哪个方法调用上,这里就是慢的原因。如果不能调优性能,请调高timeout阈值。Dubbo的特性:面向接口代理的高性能RPC调用提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。智能负载均衡内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。服务自动注册与发现支持多种注册中心服务,服务实例上下线实时感知。高度可扩展能力遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。运行期流量调度内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。可视化的服务治理与运维提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。以上内容参考:百度百科-Dubbo
2023-07-06 20:51:511

手机银行灰度调整什么意思

用户更换了新的登录设备。手机银行灰度调整是用户更换了新的登录设备,将版本缺陷影响控制在有限的范围内,同时,结合业界实践经验及自身的企业环境,构建了适宜的灰度发布体系。
2023-07-06 20:52:101

如何架构一个合适的企业API网关?

技术选型企业api网关现在越来越多被大型企业选择,可以了解nginx体系下的openresty,openrestyedge,kong。java体系下的springcloudgateway作为选型。一般完全自研没必要的,门槛有点高。需求范围企业api网关是个统称,包含的功能很多,如数据路由,协议转换,熔断,限流,应用防火墙,灰度发布等等。如果要自主研发,先明确下需求范围。高可用企业网关作为一个流量入口,自身的高可用要求很高,有问题如同断网的影响。需应用和系统架构师商讨设计。
2023-07-06 20:52:171

因果推断——准实验法评估App新版本整体效果

做A/B实验相关工作中遇到一些问题,其中之一就是如何判断新版本对用户影响,以前的做法: 1.所有新功能都预埋开关(默认关),对新版本用户随机分桶后对实验组开启,用标准A/B实验方法评估。但是这在需要很高开发成本,而且容易出错; 2.同时构建两个新版本,a版本不包含任何新功能,b版本包含全部新功能,对用户随机分桶后,分别开放不同版本的升级,之后对a版本用户、b版本用户用随机实验法进行评估。这也需要较高成本,而且对第三方渠道不能自由控制用户是否可以,仅能用在灰度发布阶段,样本量较小; 3.随机分桶后,仅对实验组开放升级,之后与对照组对比,并可对实验组中升级用户作为训练集,通过机器学习方法判断对照组中愿意升级的用户,对他们进行评估。本方法同样存在2中的问题,只是免去了打a版本发布的过程。 上述问题都有实现难度、成本方面、样本量的问题,那么有没有办法不改变发布流程,科学的评估效果呢?有,LinkedIn用准实验方法做过相同的事情: Evaluating Mobile Apps with A/B and Quasi A/B tests 。下面记录下我的个人理解。 众所周知,相关不一定等于因果,判断因果效应的黄金工具是随机实验。准实验是在没有办法进行随机实验时,对观测数据因果推断的方法。一个详细的介绍可以参考: https://www.scribbr.com/methodology/quasi-experimental-design/ 。 LinkedIn发布了一个大的更新版本,没有办法把所有的功能做成开关,而且他们不能自己灰度升级发布。因此需要用准实验方法来进行评估。目的是研究版本效果差异,对比的是新版本用户与旧版本用户数据,但是用户是否会升级与个人意愿、是否有wifi、渠道策略等因素有关,直接做diff是有偏的,需要采用因果推断中的准实验法。 由于当时苹果市场只支持全量发布,是否升级对是用户自身影响因素决定的,所以是一个经典的准实验问题,可以用上述方法解决。关于方案效果测试,可以对之前没有附带新功能的版本进行" A/A ",看能否有效消除偏差。 测试结果: 从上图可看到,bias大幅降低,endogenous OLS模型效果最好。 图中A1、B1代表愿意升级的用户,其它为不愿意升级用户,而A1、A2代表有资格升级的用户(在分阶段发布里命中),也就是仅有A1群体成功升级。在用户意愿和分阶段发布共同作用下,上述iOS的方案会表现很差。 这种机制带来了另一种好处,比如在20%放量阶段,对每个升级者来说,期望有4个与他相似的用户。如果我们识别出其它相似用户,那就可以近似为随机实验。所以需要一种低假阳性的识别方法,哪怕假阴性较高(因为有4个相似用户,召回率没有那么重要)。 由于A1与B1是可比较的,S(A1)与S(B1)也是可以比较的,下面介绍两种基于此的策略。 思路是将愿意升级用户B1从未升级用户中识别出,不同于iOS那边将升级用户参与模型训练,这里仅使用历史数据来训练,对识别出的用户再按是否升级,判断是否属于B1。 由于随着时间推进,用户升级的概率越来越高,我们需要建模获取 ,代表i个用户t日升级概率。假设每日概率恒定为 ,则: ,其中 代表活跃天数。 基于历史数据,可以计算 的最大似然估计: 代表用户i在可以升级版本j到升级版本j前的活跃天数, 代表用户i是否升级了版本j。 最后,在发布新版本后,每个用户每天计算累计概率 。选择超过阈值的用户认为是会升级用户。 由于非升级组有更多的用户与升级用户相似,直接通过协变量将他们与升级用户匹配变得更容易。最基础的两种匹配方法: 两种策略都不容易通过GPU运算,尤其在有大量协变量时,带来性能上的问题。 因此,LinkedIn采取了“Doubly Robust” 方法,先进行匹配算法,在其基础之上进行线性回归。第一阶段仅适用10个重要的连续变量进行匹配分桶,线性回归阶段有大量的协变量,对偏斜进行补偿。此方法可以从第一天起就有不错的表现,是LinkedIn的最终方案。 结果看起来很棒,在第一天也只有很小的偏差。 大的变更会有强的新奇效应,用户开始阶段会进行很多探索。 需要判断两个问题:1.是否有新奇效应;2.新奇效应持续多久? 标准ab实验中,可以观测随着效果随着时间的推移是否变弱,以此来判断。在准实验方法中,结合上文相关方法,也可以进行类似的判断。 对因果推断来说,随机实验总是第一选择,但有时随机成本过高或者根本不可能。准实验方式是流行病学、经济学等领域常常用到的方法,它不失为不能A/B实验时的一种很好补充。
2023-07-06 20:52:231

面试时如何把项目经历说清楚?---产品、运营应该掌握的项目...

可能从来没有人告诉过你,“想清楚自己做了什么”是动手写简历前最重要的事儿。没有想清楚就动笔,结果会是:简历中项目经历盲目堆砌、逻辑混乱自我介绍平平无奇,无法从经历中提炼出自己的优势面试时被面试官问到哑口无言复盘会是贯穿于你“产品经理”或“互联网运营”整个职业生涯中,最重要的能力之一。锻炼这份能力,不妨就先从写简历时开始。1.回顾目标---为什么要做这个项目?诱发我们开展项目的原因是什么?回顾启动项目的背景,即“我们为什么要做这件事儿?”这应该是你向面试官介绍项目的第一句话,比如:针对某一个业务:因为“短视频应用”的快速发展挤压了我们这类图文平台的生存空间,所以公司决定也开展短视频业务跟进。针对某一个产品:因为现有后台的流程无法满足更复杂的业务需要,所以我们需要迭代后台功能。针对某一项功能:因为收到了大量关于“退款流程不合理”的用户反馈,甚至引发了工商投诉,所以我们需要优化退款流程。针对某一次活动:因为希望提升产品的知名度/新功能的使用率/节日期间的用户增长,所以我们设计了一次活动。项目想要达到的目标是什么?确定项目需要解决的核心问题,这可以是你向面试官介绍项目的第二句话,比如:针对某一个业务:我们希望加入短视频业务后,使APP的用户使用时长提升10%。针对某一个产品:我们希望新的后台产品相对老后台使人效提升30%。针对某一项功能:我们需要在优化退款流程后,将日投诉量从100条降低到10条。针对某一次活动:我们希望在618期间通过活动带来1500万GMV。我们希望在活动上线后,将新功能渗透率提升至20%以上。选择哪些结果指标?为什么选择这些指标?为什么定这么高?如果说上边两点是“知其然”,这里就是“知其所以然”。同时在你向面试官陈诉了目标后,这里提到的三个问题,也可能是面试官接下来大概率会问你的。结合上边提到的举例,我们虚拟一个场景:公司新增了短视频业务,而我作为一个“产品”、“运营”需要设计一个活动提升产品渗透率。在这个场景中,最终服务指标应该是“短视频业务带来APP使用时长提升”,但这个最终指标过于大/宽泛,且受多个因素影响无法直接归因到我们活动上。所以细化到我这里,会变成“短视频可以提升APP使用时长提升,所以我需要设计可以活动让更多用户使用这个功能”。那么针对这个目标,我们关注的指标是“功能渗透率”。对于整个公司来说“用户使用时长”是结果指标,“功能渗透率”是过程指标。对于我的项目来说“功能渗透率”是结果指标,“活动曝光、点击”是过程指标。为什么定1500万的目标GMV,或者20%的功能渗透为目标呢?可以是“参考往期活动”得来的、可以是基于“提升10%用户使用时长倒推的”。如果你只是实习生,也可以是“领导根据经验拍的”。2.列举结果---最终的数据表现如何?付出了多少成本,取得了怎样的结果?在用上面两句话介绍完项目背景和目标后,紧接着需要对结果和成本进行陈诉。结果可以是好的,也可以是坏的。面试官并不关心你在上家公司的项目是否成功(针对1年及以下经验),更关心你做了什么、学到了什么。举例:针对某一个业务:在经过对短视频功能半年的迭代后,我们使APP的用户使用时长提升10%。目前已经迭代了一年,最终提升稳定在了15%。针对某一个产品:在经过两个月的调研及研发后,新后台上线。使用新后台的整体人效相比老后台提升了70%。针对某一项功能:我们用了2周时间,紧急优化了退款流程,上线后日投诉量从100条降低到了20条。针对某一次活动:在筹备两个月后,2022年的618活动带来了1000万GMV。为什么取得这样的结果?结果可能是好的可能是不好的,为什么会导致这样的结果呢?从这里开始就是真正的复盘。举例:针对某一个业务:初步定在10%使我们倒推的结果,刚上线的时候因为“使用率低、功能体验不完整”等原因,对停留时长的提升只有5%,在我们不断优化后半年到了10%,最终停留在了15%。针对某一个产品:因为业务部门在使用新后台可以支持更便捷的硬件设备“如扫码枪”,所以最终的提升比预期的更高。针对某一项功能:日投诉量从100条降低到了20条距离10条目标有差距的原因,是因为时间紧迫,需要将完整优化拆成两期上线,一期只实现了部分功能,所以只降低到了20条。二期功能因为优先级降低了,所以目前没有实现。针对某一次活动:因疫情影响,商品产能整体较去年下降了约30%,所以今年的活动效果要比往年差一些。结果如何归因?这里讲的是“看数的方法”。在很多情况下,大的结果往往处于“纠缠态”,比如同时有N个功能上线可能影响结果,你无法保证变量唯一(时间也是变量)。常用的归因方法包括:AB实验,简单直接,足够严谨。但成本较高,小功能/活动不会使用。灰度发布,简单直接,相对严谨,成本较低,小功能可用,活动不可用。同期分群,选择几群初始行为相似的用户做切片,观测功能上线后的用户行为。例如“在功能上下前,用户的充值率稳定在3%。活动上线后充值率提升至5%。活动结束后恢复3%”。3.分析过程---如何实践?功能设计向(我为什么这么做?我的思考是?)介绍过项目背景、目标、结果后,下一步重点介绍自己的产品设计思路。即:通过什么功能、优化哪些指标、完成哪些结果。同样以设计一个活动提升短视频功能渗透举例。第一步,梳理设计思路,拆解业务流程与转化漏斗:假设我的设计思路是,举办“优秀短视频”投票大赛,为优质短视频制作聚合页,在APP首页banner投放,用户参与投票,投票的用户可获得积分。那么我的转化漏斗会是这样:banner曝光→banner点击→进入活动页→用户观看视频→为喜欢的视频投票第二步,找到关键节点,提升转化:banner点击率是第一个漏斗,我的banner图片如何设计?banner文案如何引起兴趣?用户观看视频,是向用户介绍短视频功能的可能节点,我该如何提升播放率?是否可以在进入页面时自动播放视频?第三步,确定过程指标,输出埋点:上边提到的两个转化节点确实很重要,但并不能决定你的“结果质量”。比如你做了自动播放功能,视频的播放率是100%,但90%的人看了两秒就跳出了。所以我们关注的核心过程指标一定是能表述结果质量的,在这个活动里,应该是“视频完播率”、“人均观看视频数量”。进而最终用户离开活动页后,对短视频功能的复访率。这几个指标说明白,才能证明你活动的价值。一定要提前想到,做好埋点项目管理向(如何确保结果交付质量?)在项目过程中,也因关注这些节点:1.需求输出是否完整无歧义?2.UI、UE、RD、QA对需求是否理解、明确、认同?3.UI设计产出是否符合预期?4.设计稿何时交付?5.是否有充分的时间做工期预估?是否有人力支持?6.开发测试的排期预估与实际开发时间是否有差异?7.是否出现需求无法实现的状况?原因是什么?8.是否出现团队成员变动情况?如何应对成员变动?后期如何避免?9.是否出现功能模块与需求不符的情况?出现原因是什么?10.上线时间是否符合预期?4.总结经验---做对/错了什么?优化空间在哪里?接下来该怎么做?在复盘结束后,反问自己以下问题:我从项目中学到了什么新东西?遇到了什么问题/困难?应该如何解决?如果再做一次,我会怎么做?如果有别人做一样的东西,我该如何建议?哪些经验是可以复用到其他项目的?接下来我该做些什么?哪些是我们可直接行动的?同时,这些总结也应该作为你向面试官讲项目最后的总结,用来突出你的复盘、学习能力。如果能把自己做过的项目想清楚、想明白,在多加几次面试练习,你也可以成为面霸。最后:如果你对互联网产品、运营感兴趣,欢迎留言、点赞、关注。我会经常分享些自己工作中踩过的坑和一些面向新人的求职、转行攻略。唐小刀:毕业生的第一份工作,如何选择?唐小刀:应届生、实习生,入职互联网大厂产品经理、运营岗的终极攻略!从简历、面试到offer选择,亲测有效,手把手教!(2022年7月更新)唐小刀:面试你时,面试官在想什么?---分析12道常见问题,送给0~3岁的产品/运营人
2023-07-06 20:52:301

K8S-pod之Deployment

Deployment是kubernetes在1.2版本中引入的新概念,用于更好的解决Pod的编排问题,为此,Deployment在内部使用了ReplicaSet来实现目的,我们可以把Deployment理解为ReplicaSet的一次升级,两者的相似度超过90% Deployment的使用场景有以下几个: 1)创建一个Deployment对象来生成对应的ReplicaSet并完成Pod副本的创建 2)检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到了预期的值) 3)更新Deployment以创建新的Pod(比如镜像升级) 4)如果当前Deployment不稳定,可以回滚到一个早先的Deployment版本 5)暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后在恢复Deployment,进行新的发布 6)扩展Deployment以应对高负载 7)查看Deployment的状态,以此作为发布是否成功的标志 8)清理不在需要的旧版本ReplicaSet 可以通过kubectl命令行方式获取更加详细信息 除了API生命与Kind类型有区别,Deployment的定义与Replica Set的定义很类似。 controller/deploymentdemo.yml 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布。 Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布(Canary Release) 默认情况下,kubernetes 会在系统中保存前两次的 Deployment 的 rollout 历史记录,以便可以随时回退(您可以修改 revision history limit 来更改保存的revision数)。 注意: 只要 Deployment 的 rollout 被触发就会创建一个 revision。也就是说当且仅当 Deployment 的 Pod template(如 .spec.template )被更改,例如更新template 中的 label 和容器镜像时,就会创建出一个新的 revision。 其他的更新,比如扩容 Deployment 不会创建 revision——因此我们可以很方便的手动或者自动扩容。这意味着当您回退到历史 revision 时,只有 Deployment 中的 Pod template 部分才会回退。 kubectl rollout history deployment deploymentdemo1 kubectl rollout status deployment deploymentdemo1 Deployment 可以保证在升级时只有一定数量的 Pod 是 down 的。默认的,它会确保至少有比期望的Pod数量少 一个是up状态(最多一个不可用) Deployment 同时也可以确保只创建出超过期望数量的一定数量的 Pod。默认的,它会确保最多比期望的Pod数 量多一个的 Pod 是 up 的(最多1个 surge ) Kuberentes 版本v1.17.5中,从1-1变成25%-25% Deployment为Pod和Replica Set(下一代Replication Controller)提供声明式更新。 只需要在 Deployment 中描述想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。也可以定义一个全新的 Deployment 来创建 ReplicaSet或者删除已有的 Deployment 并创建一个新的来替换。 Replicas(副本数量): .spec.replicas 是可以选字段,指定期望的pod数量,默认是1。 Selector(选择器): .spec.selector是可选字段,用来指定 label selector ,圈定Deployment管理的pod范围。如果被指定, .spec.selector 必须匹配 .spec.template.metadata.labels,否则它将被API拒绝。如果.spec.selector 没有被指定, .spec.selector.matchLabels 默认是.spec.template.metadata.labels。 在Pod的template跟.spec.template不同或者数量超过了.spec.replicas规定的数量的情况下,Deployment会杀掉label跟selector不同的Pod。 Pod Template(Pod模板): .spec.template 是 .spec中唯一要求的字段。 .spec.template 是 pod template. 它跟 Pod有一模一样的schema,除了它是嵌套的并且不需要apiVersion 和 kind字段。 另外为了划分Pod的范围,Deployment中的pod template必须指定适当的label(不要跟其他controller重复了,参考selector)和适当的重启策略。 .spec.template.spec.restartPolicy 可以设置为 Always , 如果不指定的话这就是默认配置。 strategy(更新策略): .spec.strategy 指定新的Pod替换旧的Pod的策略。 .spec.strategy.type 可以是"Recreate"或者是"RollingUpdate"。"RollingUpdate"是默认值。 Recreate: 重建式更新,就是删一个建一个。类似于ReplicaSet的更新方式,即首先删除现有的Pod对象,然后由控制器基于新模板重新创建新版本资源对象。 rollingUpdate: 滚动更新,简单定义 更新期间pod最多有几个等。可以指定 maxUnavailable 和 maxSurge 来控制 rolling update 进程。 maxSurge: .spec.strategy.rollingUpdate.maxSurge 是可选配置项,用来指定可以超过期望的Pod数量的最大个数。该值可以是一个绝对值(例如5)或者是期望的Pod数量的百分比(例如10%)。当 MaxUnavailable 为0时该值不可以为0。通过百分比计算的绝对值向上取整。默认值是1。 例如,该值设置成30%,启动rolling update后新的ReplicatSet将会立即扩容,新老Pod的总数不能超过期望的Pod数量的130%。旧的Pod被杀掉后,新的ReplicaSet将继续扩容,旧的ReplicaSet会进一步缩容,确保在升级的所有时刻所有的Pod数量和不会超过期望Pod数量的130%。 maxUnavailable: .spec.strategy.rollingUpdate.maxUnavailable 是可选配置项,用来指定在升级过程中不可用Pod的最大数量。该值可以是一个绝对值(例如5),也可以是期望Pod数量的百分比(例如10%)。通过计算百分比的绝对值向下取整。 如 果 .spec.strategy.rollingUpdate.maxSurge 为0时,这个值不可以为0。默认值是1。 例如,该值设置成30%,启动rolling update后旧的ReplicatSet将会立即缩容到期望的Pod数量的70%。新的Pod ready后,随着新的ReplicaSet的扩容,旧的ReplicaSet会进一步缩容确保在升级的所有时刻可以用的Pod数量至少是期望Pod数量的70%。 rollbackTo: .spec.rollbackTo 是一个可以选配置项,用来配置Deployment回退的配置。设置该参数将触发回退操作,每次回退完成后,该值就会被清除。 revision: .spec.rollbackTo.revision 是一个可选配置项,用来指定回退到的revision。默认是0,意味着回退到上一个revision。 progressDeadlineSeconds: .spec.progressDeadlineSeconds 是可选配置项,用来指定在系统报告Deployment的failed progressing一一表现为resource的状态中 type=Progressing 、 Status=False 、 Reason=ProgressDeadlineExceeded 前可以等待的Deployment进行的秒数。Deployment controller会继续重试该Deployment。未来,在实现了自动回滚后, deployment controller在观察到这种状态时就会自动回滚。 如果设置该参数,该值必须大于 .spec.minReadySeconds 。 paused: .spec.paused 是可以可选配置项,boolean值。用来指定暂停和恢复Deployment。Paused和没有paused的Deployment之间的唯一区别就是,所有对paused deployment中的PodTemplateSpec的修改都不会触发新的rollout。Deployment被创建之后默认是非paused。
2023-07-06 20:52:371

APP该如何顺应数字化时代?

C端App已死,有事烧纸在我们日常生活中,每天都会打开使用的App有几个?我们的手机上满屏的App,绝大部分都是僵尸App;作为消费者,我们日常使用的都是超级App而且数量不会超过十根手指。社交电商、衣食住行、银行服务、视频娱乐等较为高频的场景日益聚合在互联网大平台所提供的“超级App”中,独立第三方App即便聚焦细分领域的特定群体,依然不得不与大量其他竞争者激烈争夺消费者掌中那方寸之屏。B端App都是毫无生气的信息孤岛作为打工人,谁手机还没有那么几个东家或者甲方指定使用的App_移动办公、企业协同、与行业合作伙伴的商务连接、服务客户专用的展业工具等等。大部分这类App用起来都是很不爽的,例如体验差却迟迟等不到优化升级、想要的功能久久不能上线、完全是信息孤岛无法与其他常用工具打通、看不到其他同事的活动无法与之互动等等。导致我们打工人对同是打工人的IT同志们产生一定的误解和吐槽有没有?信息化的思维定式对于缺乏互联网基因的传统行业IT来说,迄今大部分还是沿着“信息化”时代的思维定式来看待App的开发:C端和B端的App都是手机应用、技术上并无差别,而App只不过是在一个更小的屏幕上以更友好的交互体验呈现应用逻辑_总不能让用户在几英寸的手机屏幕上打开浏览器敲网址吧?屏幕上的App其实就是一个个快捷链接这种思维定式下,无论用什么计算机语言开发App,跟30年前用HTML+CGI开发一个网站,没有什么区别,就是:我们公司已经有了这些那些系统,现在我们得给它们包一层,输出到网上给我们的客户、合作伙伴使用。这就是传说中的信息化,即在“电算化”(以本地软件系统替代手工劳作)的基础上,再接上网络从而使数据字节能够被提交进来、输送出去,形成“信息”。App是这么玩的吗?C端App该怎么玩?消费者侧,全部是互联网平台的天下,它们才是流量入口、超级应用,才是消费者日常高频使用的东西。对于大部分垂直行业的企业而言,研发App的能力有限、运营App流量日活的技能不足、互联网化的基因欠缺,要把自己的App做好,在应用市场脱颖而出,可谓艰难。研发的投入产出比也很差。但西谚有云:“如果你不能打败他们,那就加入他们”。所以更实际的策略只能如下:首先,拥抱消费者所在的互联网流量平台,采用该平台所开放的技术框架,把自己的产品与服务“进驻”到该平台上,让该平台的用户发现、使用。任何能称得上是“平台”的互联网产品,一定是有技术标准、技术接口、开放生态、欢迎第三方“进驻”的。典型例子,就是众所周知的“小程序”了;其次,我们还是可以向消费者提供App的。目标受众,是把通过上述平台“引流”过来并沉淀下来的存量用户,他们可能作为客户需要更直接、更权威、更功能强大的连接工具触达企业。所以我们的策略,是让自己变身“八爪鱼”,把自己的产品与服务像触须一样延伸到第三方流量平台,例如用户在第三方平台使用我们的小程序的时候,可以被提示去下载采用更强大更直接的App。别忘了,我们向消费者提供的App需要充分利用手机的社交通讯属性,让消费者通过App能找到我们的客服、客户经理、专家。如果用户在App里却无法联系到你的员工,有槽无法吐、有建议无法提,这一切明明在一个通讯设备上,是不是一件很愚蠢的事情?你的员工也应该在同一个App、或者另一个与之连接的所谓B端App上。B端App该怎么玩?这类App通常面向我们企业打工人、合作伙伴人员聚合专业性专门性比较高的工具或工具集合。例如银行、保险公司、地产公司可以向他们的网点客户经理、保险代理人、经纪中介人员提供移动端展业工具,聚合了CRM、ERP、行政管理、协同办公等等的各种应用,美其名曰“赋能”。这类App能否成功玩的起来,不仅取决于公司的“行政命令”逼迫员工们使用,最终取决于它是否“有用”。可怎么样才能有用呢?那不是产品经理拍脑袋拍成的,而是用户们拍砖拍出来的。如何才能让App不被拍死、活到成功的那天?诀窍只有一个:敏捷迭代、频繁升级、快速更新、响应拍砖。当用户吐槽某个功能的时候,马上给他改进,几天见效;当用户用的有点意思开始提出建议,迅速给他实现,一周搞定;当业务部门看到希望而逐渐增加业务创新的需求想法,快捷让他看到雏形试用用户的信心起来了,良性循环建立了,这个“赋能”的App就有点成功希望。乐高化的APP解决方案,是把App化整为零,功能点最大程度的模块化、松散耦合、互不干扰。修改一个功能模块不影响其他模块,增加或删除功能模块不影响整个App。理想的App构建方式,是让App像搭积木那样组装。“等等”,负责App研发的技术开发会说,“我们早就模块化了,没有人比我更懂模块化”。事实上的效果如何?是不是App越来越重、迭代周期越来越长、功能越多回归测试的负担越大?我们所谓的“乐高化”,必须做到这样的程度:每一块“乐高”都是独立生命周期_独立于App自身的生命周期之外,独立可测试、独立可发布、独立可监测、独立可下架;每一块“乐高”的开发者都可以是不同的人和团队,甚至可以和App组装者毫无关系,这正如iPhone上的应用商店里的应用开发者和苹果的技术团队可以没有半毛钱关系一样;每一块“乐高”自身的质量、稳定性,不影响其所在运行的App的性能与安全。一句话,功能模块与App实现极度的松散耦合。有这样的例子吗?我们熟知的小程序、手机厂商们尝试推动的快应用、苹果iOS14开始支持的Clip技术,都是。以微信App为例,它与它所支持运行的互联网上数以百万计的小程序之间,就是极度的松散耦合。每一个小程序都由不同的团队开发维护、独立上下架、独立升级、独立测试、独立运行,互不干扰。FinClip_超级App的开发运行平台好消息是,现在任何企业都可以轻松、简单的获得上述技术大厂们才具备的技术能力_解决方案就是一个100%可以私有化部署的、云原生的、融合DevOps能力的小程序开放生态平台FinClip,它让任何企业瞬间具备打造“乐高化”超级App的能力、变身小程序平台运营者,企业IT可以自行研发小程序、可以开放平台让第三方合作伙伴提供小程序,通过上下架管理,让丰富的小程序生态上架到自己的App中,任何业务部门的需求都能并行快速响应、任何创新功能的试错成本都最大程度可控,敏捷迭代、持续交付都不再只是口号。基于FinClip开发的App,具有以下强大之处:首先,采用这个平台的企业,天然拥有了一个名符其实的技术中台:100%全容器化,充分利用容器编排技术实现千万级别的并发支持,对前端“碎片”(小程序)和后端“碎片”(微服务)进行了高效的管控。后台的“上下架”管理能力,首次让企业拥有了内部“应用市场”的机制。引入了“上架”的概念,让企业内外的应用场景的数字化粒度完全可控,任何功能均可以作AB测试和灰度发布;任何的活动类、运营类的场景均可以快速实现、代码用完即扔。这样构建出来的App,具备强大的、中台主导的、云侧运营能力。其次,基于FinClip构建的App,不再是信息孤岛。这体现在三方面:App里面的任何一个业务场景,均可以被分享到主流的第三方互联网社交平台,从而产生传播、引流、获客的作用;支持应用内(in-app)搜索,让用户对本App里运行的任何内容、数据进行便利的索引;支持互联网上网络爬虫、搜索引擎能索引到App里的内容(范围粒度安全可控),类似对自身网站的seo实践,在App上同样可用。换句话说,如果我们希望自己的App中内容的透明程度跟普通网站一样,以便于互联网上的用户能搜索到,完全可以实现。因为在FinClip上可以随意实现任何粒度的数字化场景,通过算法去基于用户个性化特点进行各种“乐高”的组装,实现千人千面、智能推荐,不再是空话一句。在FinClip上的任何小程序,可以根据用户画像、客群分层,动态控制可见范围,例如一个仅针对某某地区的金牌会员可见的运营活动小程序,通过简单配置进行发布即可,无需编写任何复杂的应用逻辑代码。一个数字化生态化运营平台FinClip平台上的二次开发,完全建立在互联网主流技术标准或者既成事实标准之上,其设计逻辑是力求开发者无需专门学习掌握封闭的、小众的技术技能,即能迅速发挥生产力。使用FinClip的企业,聚焦业务运营,而不是App研发,因为他们可以轻易在市场上找到大量的开发人员,包括但不限于第三方开发商、外包工程师、自由技术职业者、实习生_只要有互联网上小程序开发的基本知识,以极低的技术门槛即可开发大量一次性、偶发性的运营活动场景,例如小游戏、简单供目标客户填写的临时活动登记表单、问卷调查等等。有商业生态的企业,可以开放自己的FinClip平台,让合作伙伴开发小程序上架到自己的App中,形成丰富多彩的场景与功能,服务客户。例如银行信用卡App可以上架大量的第三方消费场景类小程序,旅游App可以上架食住行类合作伙伴的小程序,最终实现的是以客户为中心的数字化服务闭环。FinClip,给任何企业App带来全新可能。
2023-07-06 20:52:441

微信朋友圈仅聊天什么意思?

微信发布了新版本,除了朋友圈支持图片评论外,还上线了一个权限功能。以前我们设置朋友权限的时候,智能设置朋友圈的权限。不看他的朋友圈,或者不让他看我的朋友圈。而微信新推出的这个功能,将会扩大权限的范围,除了朋友圈以为,我们的微信运动排名等也被包括在内了。这个功能被叫做“仅聊天”。一旦你将朋友的权限设置为了仅聊天,那么,你和你的这位好友,就仅仅剩下聊天的功能了。和原有的不让他看,不看他相比,仅聊天将会让你更加彻底的和你这位朋友之间的社交互动隔离。我个人自然是愿意有这样的功能的,毕竟微信里面还有很多的工作联系人,很多时候我并不想把自己的一些私生活都同步给这些工作联系人。可能对于很多年轻人来说,这个功能不一定那么的重要了。微信这次的更新,让微信的隐私性更加强了,我可以根据我个人的意愿来进行我信息的公开。个人觉得,这也算是微信的一个升级进步。微信一直都是对于社交网络的隔断做到很不错的一款产品,和QQ不一样,QQ要开放一点,微信更加的私密。而这次,微信再次升级私密性,我觉得是一大进步。虽然有的人说,“仅聊天”会让你没朋友,但是我很想说,我和仅聊天的这些人,本来也不是朋友。功能是挺好的一个功能,但是,可能微信这次又是灰度发布吧,我并不能将微信的版本升级,没能够第一时间体验这个功能,有点可惜了。
2023-07-06 20:52:501

王者荣耀8月1日更新了什么

王者荣耀8月1日又进行了一波更新,这次更新的内容还是蛮多的,有优化旧的玩法,也有更新新的活动,又要掀起一波热潮了,那么,王者荣耀8月1日更新了什么?下面就由铁骨网为大家带来王者荣耀8.1更新内容及活动汇总! 计划在2017年8月1日08:30-09:30对全服进行不停机更新。 【更新时间】2017年8月1日08:30-09:30 【更新方式】不停机更新 由于此次为不停机更新,维护完毕后即可正常进入;维护时已经登入游戏的玩家不受任何影响。 【更新范围】全服 【更新内容】 王者峡谷风云起,各路英雄显神通!峡谷英雄集结挑战,最终谁能拔得头筹?! 【热血峡谷】各路英雄显神通 活动时间:8月1日更新后~8月6日 热血峡谷,各路英雄显神通!使用指定英雄完成任务,即可获得好礼! 参与模式包括:5V5匹配(包含人机)及排位 【百发百中】胜利2次:铭文碎片*30(黄忠,狄仁杰,后羿) 【铮铮铁骨】胜利2次:铭文碎片*30(杨戬,项羽,孙悟空) 【鹰击长空】胜利2次:铭文碎片*30(吕布,刘邦,哪吒,赵云) 【海上雄鹰】胜利2次:铭文碎片*30(大乔,甄姬,王昭君) 【英姿飒爽】胜利2次:铭文碎片*30(花木兰,孙尚香,貂蝉) 【运筹帷幄】胜利2次:铭文碎片*30(诸葛亮,墨子,孙膑) 峡谷英雄看家本领大比拼(加速篇) 活动时间:8月4日~8月6日 峡谷英雄集结挑战,看家本领大比拼!第一回合比拼的是【加速本领】,使用指定英雄完成任务得好礼! 参与模式包括:5V5匹配(包含人机)及排位 【脆皮但是跑的快】胜利2次:铭文碎片*30(虞姬、高渐离、嬴政、蔡文姬) 【追击速度无人比】胜利2次:铭文碎片*30(亚瑟、老夫子、关羽、程咬金) 【打野抓人全靠快】胜利2次:铭文碎片*30(阿轲、兰陵王、铠、刘备) 【谁是单挑王】英雄信物兑换奖励开启 活动时间:8月1日更新后~8月7日 英雄信物兑换奖励开启了!英雄胜利场次越多,信物兑换奖励越好! 夺宝奖池更新 更新时间:8月1日版本更新后 点券夺宝奖池:李白、关羽替换为嬴政、杨戬 钻石夺宝奖池:李元芳、孙膑、甄姬、万圣前夜3天、爱心护理3天替换为达摩、鲁班七号、程咬金、精灵公主3天、金属狂潮3天 游戏相册灰度发布 一直以来,“炫耀一下”是游戏内一个受到大家欢迎的功能,召唤师们可以通过该功能把游戏内的精彩内容分享给好友或者保存至社交平台。但也有不少的召唤师表示,分享的内容没法在游戏很便利的展示和浏览,不够尽(zhuang)兴(bi)。 在这次更新中,我们将灰度开放个人图册功能,召唤师们可以在“炫耀一下”时,把炫耀内容保存到个人图册中,而其他召唤师可以通过游戏相册查看这些内容。下面我们来简单介绍一下这个功能: 1、 将分享内容保存至游戏相册 游戏内大部分可分享的内容,均可保存至游戏相册。当召唤师们获得新英雄/皮肤/成就,或者在对局中获得了超神等系列称号/战绩时,可通过“炫耀一下”中的“保存游戏相册”按钮,可将分享图片保存到游戏相册中。当前每个召唤师可保存三张图片,当超过上限时,系统会提示召唤师是否使用新图片替换已有图片。 2、 查看图册 召唤师们可以在个人资料—交友名片中查看自己或他人的游戏相册。点击游戏相册中的图片可查看大图哟~~ 3、 隐私与保护 如果召唤师不希望对外公布自己的游戏相册内容,可通过交友名片—隐藏名片功能,将相册隐藏,此时其他召唤师将无法查看该相册。 4、 灰度开放计划 为保证服务器稳定性,首批我们将开放以下四个服务器的相册功能: IOS微信1区,IOS手Q1区,安卓微信1区,安卓手Q1区;
2023-07-06 20:52:571

灰度推送一般时间多长

10分钟。灰度推送即灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在集上可以进行A/Btesting,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候,就可以发现、调整问题,以保证其影响度。灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。
2023-07-06 20:53:181

qq该功能灰度中是什么意思

灰度更新(又称灰度发布、灰度升级)是指在黑与白之间,能够平滑过渡的一种发布方式。ABtest就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
2023-07-06 20:53:251

灰度测试到底是什么?

灰度测试,就是在某项产品或应用正式发布前,选择特定人群试用,逐步扩大其试用者数量,以便及时发现和纠正其中的问题灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。及早获得用户的意见反馈,完善产品功能,提升产品质量 让用户参与产品测试,加强与用户互动 降低产品升级所影响的用户范围灰度发布与互联网公司常用A/B测试似乎比较类似,老外似乎并没有所谓的灰度发布的概念。按照wikipedia中对A/B测试的定义,A/B测试又叫:A/B/N Testing、Multivariate Testing,因此本质上灰度测试可以算作A/B测试的一种特例。只不过为了术语上不至于等同搞混淆,谈谈自己理解的两者的差异。灰度发布是对某一产品的发布逐步扩大使用群体范围,也叫灰度放量A/B测试重点是在几种方案中选择最优方案对于一般的小系统并不需要单独的灰度发布引擎,可以参考A/B测试中做法,在页面javascript或服务器端实现分流的规则即可。但对于大型的互联网应用而言,单独的用于管理用户分流的发布引擎就很有必要了。
2023-07-06 20:53:322

软件测试中如何理解灰度环境?

在测试中存在多套测试环境而灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是 一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户 对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。 灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问 题,以保证其影响度,灰度测试在黑马程序员技术社区上面有很详细的介绍。
2023-07-06 20:53:551

什么是灰度测试

1、灰度测试指的是在同一个时间段内,存在两个不同的应用版本,一个版本叫做黑色版本,而另一个版本叫做白色版本。然后我们通过观测两个同时存在的版本的表现来调整黑色版本和白色版本的比例,如果一切顺利,渐渐地就把所有用户的应用从黑色版本过渡到白色版本。2、而这种通过共存黑白版本的手段进行测试的过程就叫做灰度测试或灰度发布。
2023-07-06 20:54:031

仅聊天有什么用?

微信发布了新版本,除了朋友圈支持图片评论外,还上线了一个权限功能。以前我们设置朋友权限的时候,智能设置朋友圈的权限。不看他的朋友圈,或者不让他看我的朋友圈。而微信新推出的这个功能,将会扩大权限的范围,除了朋友圈以为,我们的微信运动排名等也被包括在内了。这个功能被叫做“仅聊天”。一旦你将朋友的权限设置为了仅聊天,那么,你和你的这位好友,就仅仅剩下聊天的功能了。和原有的不让他看,不看他相比,仅聊天将会让你更加彻底的和你这位朋友之间的社交互动隔离。我个人自然是愿意有这样的功能的,毕竟微信里面还有很多的工作联系人,很多时候我并不想把自己的一些私生活都同步给这些工作联系人。可能对于很多年轻人来说,这个功能不一定那么的重要了。微信这次的更新,让微信的隐私性更加强了,我可以根据我个人的意愿来进行我信息的公开。个人觉得,这也算是微信的一个升级进步。微信一直都是对于社交网络的隔断做到很不错的一款产品,和QQ不一样,QQ要开放一点,微信更加的私密。而这次,微信再次升级私密性,我觉得是一大进步。虽然有的人说,“仅聊天”会让你没朋友,但是我很想说,我和仅聊天的这些人,本来也不是朋友。功能是挺好的一个功能,但是,可能微信这次又是灰度发布吧,我并不能将微信的版本升级,没能够第一时间体验这个功能,有点可惜了。
2023-07-06 20:54:101

微信仅聊天是什么意思?

微信发布了新版本,除了朋友圈支持图片评论外,还上线了一个权限功能。以前我们设置朋友权限的时候,智能设置朋友圈的权限。不看他的朋友圈,或者不让他看我的朋友圈。而微信新推出的这个功能,将会扩大权限的范围,除了朋友圈以为,我们的微信运动排名等也被包括在内了。这个功能被叫做“仅聊天”。一旦你将朋友的权限设置为了仅聊天,那么,你和你的这位好友,就仅仅剩下聊天的功能了。和原有的不让他看,不看他相比,仅聊天将会让你更加彻底的和你这位朋友之间的社交互动隔离。我个人自然是愿意有这样的功能的,毕竟微信里面还有很多的工作联系人,很多时候我并不想把自己的一些私生活都同步给这些工作联系人。可能对于很多年轻人来说,这个功能不一定那么的重要了。微信这次的更新,让微信的隐私性更加强了,我可以根据我个人的意愿来进行我信息的公开。个人觉得,这也算是微信的一个升级进步。微信一直都是对于社交网络的隔断做到很不错的一款产品,和QQ不一样,QQ要开放一点,微信更加的私密。而这次,微信再次升级私密性,我觉得是一大进步。虽然有的人说,“仅聊天”会让你没朋友,但是我很想说,我和仅聊天的这些人,本来也不是朋友。功能是挺好的一个功能,但是,可能微信这次又是灰度发布吧,我并不能将微信的版本升级,没能够第一时间体验这个功能,有点可惜了。
2023-07-06 20:54:171

微信仅聊天是什么?

微信发布了新版本,除了朋友圈支持图片评论外,还上线了一个权限功能。以前我们设置朋友权限的时候,智能设置朋友圈的权限。不看他的朋友圈,或者不让他看我的朋友圈。而微信新推出的这个功能,将会扩大权限的范围,除了朋友圈以为,我们的微信运动排名等也被包括在内了。这个功能被叫做“仅聊天”。一旦你将朋友的权限设置为了仅聊天,那么,你和你的这位好友,就仅仅剩下聊天的功能了。和原有的不让他看,不看他相比,仅聊天将会让你更加彻底的和你这位朋友之间的社交互动隔离。我个人自然是愿意有这样的功能的,毕竟微信里面还有很多的工作联系人,很多时候我并不想把自己的一些私生活都同步给这些工作联系人。可能对于很多年轻人来说,这个功能不一定那么的重要了。微信这次的更新,让微信的隐私性更加强了,我可以根据我个人的意愿来进行我信息的公开。个人觉得,这也算是微信的一个升级进步。微信一直都是对于社交网络的隔断做到很不错的一款产品,和QQ不一样,QQ要开放一点,微信更加的私密。而这次,微信再次升级私密性,我觉得是一大进步。虽然有的人说,“仅聊天”会让你没朋友,但是我很想说,我和仅聊天的这些人,本来也不是朋友。功能是挺好的一个功能,但是,可能微信这次又是灰度发布吧,我并不能将微信的版本升级,没能够第一时间体验这个功能,有点可惜了。
2023-07-06 20:54:231

运营活动需求多怎么办?小程序模板用起来!

相信很多朋友和我一样,作为公司的小前端平时的工作主要就是实现运营活动页面。各种个样的节日营销、一个接一个的平台促销活动。每个月的需求都排得满满当当!一开始还行,久了就做烦了。其实运营活动的套路来来去去就那几个,每次改点UI,改点动效果。实在没有什么技术含量。当然,吐槽归吐槽,面对这种情况还是得想办法来解决,优化一些工作流程。以我公司举例子:我司作为一个电商企业,在平台运行的过程中,面临着大量的运营活动类需求。这类需求的特点可以总结为:1.需求频率较高2.项目开发时间短3.线上生命周期短4.部分活动还具有持续性,比如特定的时间会上线一次基于这些特点,每次耗费同样多的人力和时间去支持此类项目。为了更高效、低成本地处理这类需求,释放部分人力,我们近期选择一些低代码的小程序营销模版平台去进行一些简单的营销活动搭建。目前我们是通过FinClip小程序平台去实现的。简单介绍一下:FinClip是与“微信小程序”、“百度小应用”等其他小程序开放平台具有类似属性的技术平台。从技术的角度来说,FinClip的核心是提供一个小程序容器技术。简单来讲,这个技术最核心的功能是帮助你自己的APP搭建一个小程序运行的环境。当然官方也有很多小程序管理、IDE工具、sdk插件、数据统计等等都一系列功能。支持我们营销活动的就是平台的「营销模板」功能,据说平台有超过100万正版模板素材,覆盖了非常多的细分行业,包括:促销活动、互动游戏、海报、长页、表单等等模版,基本可以满足我司运营的需求了。而且平台的这些小程序可以放到我们自己的APP当中,节约了非常多的开发人力!推荐大家去试试。以下是具体的操作流程。第一步,创建营销页面在模板市场中选中想使用的内容,随后点击弹窗中的「立即使用」按钮。随后,在新的页面中完成相关内容的标记与配置,您可以通过拖拉拽的形式,对页面中的任意内容进行编辑与修改,随后点击右上角的「发布」按钮即可完成创建。由于FinClip小程序无法在微信环境中使用,因此请将参与条件设置中的「参与用户类型」设置为手机号授权,或自定义授权。第二步,关联营销模板与小程序创建营销模板完毕后,您可以选择将已经创建好的营销内容上传至已有小程序,或新建小程序添加内容。选择新增小程序内容时,将会自动复用营销页面中的名称。点击确认后,当前版本的营销内容即已经上传至对应小程序中,可以通过将对应的版本内容设置为体验版,线上版,或进行灰度发布。从而使小程序能够直接获得对应的营销页面能力。随后,就可以直接在集成了FinClip小程序SDK的App中打开当前页面了。
2023-07-06 20:54:311

三层结构中数据访问层的主要功能是什么

三层结构中数据访问层的主要功能是实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层BBL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写DataAccessCommon,保证数据访问层DAL数据处理功能。扩展资料:三层架构业务逻辑简单;没有真正的数据存储层,也就不需要数据访问层,这样简单的结构是不需要三层架构的。但是当业务复杂到一定程度之后,当数据存储在相应的数据库或者独立的存储介质时,既有业务逻辑层,又有数据访问层时,把数据访问脱离开业务逻辑,把业务逻辑脱离开UI,UI是需要呼叫业务访问层,就可以实现与用户的交互。
2023-07-06 20:54:383