首页 文章 精选 留言 我的

精选列表

搜索[腾讯云 WAND],共10000篇文章
优秀的个人博客,低调大师

从不均匀性角度浅析AB实验 | 京东技术团队

作者:京东零售 路卫强 本篇的目的是从三个不均匀性的角度,对AB实验进行一个认知的普及,最终着重讲述AB实验的一个普遍的问题,即实验准确度问题。 一、AB实验场景 在首页中,我们是用红色基调还是绿色基调,是采用门店小列表外+商品feed(左图),还是采用门店大列表囊括商品feed(右图),哪种更吸引用户浏览下单呢,简单来处理让50%的用户看到左图效果,让50%的用户看到右图效果,最终通过点击量,单量等指标进行比对得出结论,这是典型的AB实验场景 二、AB实验的定义 A/B实验就是针对想迭代的产品功能,提供两种不同的备选解决方案,然后让一部分用户使用方案A,另一部分用户使用方案B,最终通过实验数据对比来确定最优方案。 从定义里我们就可以看出来,最直观的一个概念,就是用户的分流,此时就涉及到分流人数是否均匀的问题,即人数比例的均匀性。 三、AB中的三个不均匀 1、人数比例的不均匀 目前AB实验的分流核心算法是通过的哈希算法,假设我们按用户名做为分流因子,使用murmurhash算法,以100桶制为例,确定一个人的位置的算法就是 //将用户名通过hash算法计算出一个整数 int hashNum = MurmurHash3.murmurhash3_x86_32(useName) //整数值对100取模 int bucket = hashNum % 100; 当我们定义一个实验两个策略的人数均为50%时,那么 bucket为0-49的用户由AB系统标记为A,业务系统根据A标记,使得用户使用方案A bucket为50-99的用户由AB系统标记为B,业务系统根据B标记,使得用户使用方案B。 可是我们都知道哈希算法并不是绝对均匀的,当100人时,基本上不会出现有50个人走A,50个人走B,但是1万个人的时候,两部分流量可能就接近了1:1,10万人的时候可能更接近1:1。 之前有位运营的同学问过,为什么不能用一种很均匀的算法,比如第一个人来了,放入A,第二个人来了放入B,第三个人来了放入A,第四个人来了放入B....,这样一天1W个人来,5000个取A策略,5000个取B策略。 假设我们真的这么做了,第一天是OK的,第二天进A只来了4000人,这样还是不均匀的,如果你第二天仍然按第一天的规则重新分配,这样会有一部分人乱了策略,不符合我们固定人群走固定策略的实验目的。 所以说这个不均匀是无解的,HASH算法是目前最理想的解决方案,前提是你需要一定的流量,流量越大,分流相对就比较准确。 2、人群素质的不均匀 我们假设流量足够大,人数比例很均匀了,但是还有个问题就是人群素质的均匀问题。这里的素质包括消费能力,活跃度,年龄等各种人群因素。 假设现在我们的活动统一采用的A策略(现状),我们想验证一下B策略(新策略)会不会带来客单价的提升,就直接做了AB实验,还按1:1比例来分流,发现使用A方案的人群客单价是100,使用客单价B的人群是96,此时我们能认为原有A方案优于B方案吗?其实是不能的,怎样确定这种人群素质的差异呢,可以采用AA实验,就是两部分人都走A,进行分开统计,可能会发现,位于0-49桶的人群本身客单价就是100,而位于50-99桶的人群可能只有94,这么看来B方案是能提升客单价的,因为位于50-99桶的人群本身指标就差一些。 当然AA不是必须的,可能你有整体的客单价指标,上了B策略后发现整体提升了,这种情况相当于灰度验证了,但实际情况是比较复杂的,整体指标你是不清楚的(因为这里的整体可能只是你取的业务中的一部分流量)。 所以解决素质不均匀的手段就是采用AA提前确定差异性,再在这个差异性基础上看差异的变化。 3、实验间影响的不均匀 这个不均匀性是最复杂的,一般做实验我们走两种极端: 第一种是完全不复用人群,每个实验人群都是独立的,这样的话效果比较准确,但是弊端是,当所有流量都被用去后,不能有新实验开始,必须等待有结束的实验后才能继续做。 第二种,所有实验都用全部流量,此时我们认为实验虽然互相之间有影响,但是这种影响是正交的,量大的时候应该是均匀的,如下图所示,P实验的两个策略人群,到Q实验时,对Q的两个策略影响是均匀的。 这种可以满足无限个实验,想做多少实验都可以,但弊端是,实验太多,必然有影响不均匀的,且我们无法消除这种不均匀。 所以我们想能不能结合以上两种情况来处理呢,结合google的Overlapping Experiment Infrastructure文章我们设计出分层的实验管理模型 首先我们将总流量分成两部分,正交域,垂直域(含对比区) 我们假设如图取80%的流量用做正交阈,20%用作垂直域,垂直域中有5%用做对比区。 上图正交域下4个层,层内实验流量互斥,层间实验流量正交,我们将可能会互相影响的实验放到同一层内进行流量互斥,而影响不大的实验可以放到不同层内。 垂直域中的实验流量只能互斥,且不与任何实验正交,可以理解用最纯正的流量做实验,可以I1和I2两个策略间对比,也可以I1或I2和对比域(现状)比对。 那此时有一个很重要的问题需要解决,我们怎么确定哪些实验互相影响较大,需要放到同一层下。 有一些简单标准,比如入口不一样,目标不一样等等,这种可以放到不同层,我们可以忽略正交不均匀的问题,反之就不行。 比如活动页劵对单量提升度的实验和会员页面入会效果的实验,就可以放到不同层。 而首页上满减活动实验对客单价提升的实验和同样首页买赠活动对客单价提升的实验,最好是不共用用户,放到同层比较合适。 但对于很多实验是不太容易通过简单规则来确定的,需要大数据的同学和产品,甚至研发来共同决定实验放到哪些层和哪些实验互斥,这确实在实际的运作中是最难的点。 总之采用这种策略,可以复用流量的同时还可以降低不必要的互相影响,比较综合考虑了流量和准确度问题。 四、总结 现在我们对以上问题进行总结,从问题到解决方案上来认识ab实验 1、人群做不到绝对的均匀,只能通过HASH算法,结合一定的流量来解决。 2、通过AA实验,来提前确定人群素质的不均匀。最终的实验数据结合AA实验数据来确定最终效果。 3、设计出正交垂直域,正交阈内多个层,每个层内放可能相互影响的实验,层内互斥,层间正交,保留垂直域,为要求精准的实验留出流量,来解决实验间相互影响的问题。 本篇从核心分流与实验间相互影响角度讲解ab实验,希望能引起大家在做实验前能有更多的思考,来更准确的验证自己想要的效果,希望大家有兴趣的可以留言讨论。

优秀的个人博客,低调大师

AI降临,前端启用面壁计划 | 京东技术零食时刻

作者:京东零售郑炳懿 开篇: “在我们有生之年,你觉得会看到AI兵临城下的那一天吗?就像电影黑客帝国里面演的一样”,Barry从红色的烟盒里取出一根烟发问道。 “不可能!我觉得AI再强,那也是人类发明的,电影过分魔幻化了,”Woody深吸了一口烟,吐着烟圈道。 “有生之年是够呛了,我们这一代估计是看不到那一天的!”一旁玩手机的Jim如是道。 ————— 在这段对话不久之后,也就是2022年11月份,OpenAI发布了 ChatGPT-3.5 语言模型,上线短短5天,用户量达到100万,两个月之后已拥有上亿用户。这无异于一枚重磅核武器投放到手无寸铁的平民区内,整个互联网上铺天盖地的热议,热搜不断,在各类短视频、博客、公众号等平台上,引发各种失业潮、捞金潮、恐惧潮等众说纷纭,炒概念,炒芯片的公司更是层出不穷,自疫情之后萎靡不振的股市,在 ChatGPT 的加持下,每天变得热闹非凡。 如果你还在梦游或者做着什么白日梦的话,是时候该醒一醒了,AI时代来临了。  一、AI降临 1.1 GPT 孕育 2018年6月,OpenAI发布了第一个GPT模型,GPT-1,它包含1.5亿个参数,是一个重要的里程碑。 2019年2月,OpenAI发布了GPT-2,它具有10亿个参数,是GPT-1的6倍。由于担心GPT-2可能被滥用,OpenAI只公开了一些模型的样例和少量参数。 2020年6月,OpenAI发布了GPT-3,它具有1.75万亿个参数,是GPT-2的100倍以上。GPT-3被广泛认为是目前最先进的自然语言处理模型之一,并已被用于各种应用领域,如机器翻译、问答系统、聊天机器人等。 GPT 系列语言模型的发展历程就像母胎孕育一样,在成长的过程中不断探索、创新和突破,速度之快,为后续 GPT的诞生创造了先决条件。  1.2 GPT-3.5 诞生 GPT-3.5 诞生于2022年11月份,出生时天降异象,注定不凡,下面是它的几大神通: 1. 生成模型能力强:ChatGPT 是一种生成模型,可以自动地生成与输入的文本相关的自然语言响应,这种生成能力非常强大。在许多 NLP 任务中,ChatGPT 在生成自然语言文本方面表现出色,例如对话生成、摘要生成、翻译等。 2. 能够理解语义和上下文:ChatGPT 可以对自然语言的语义和上下文进行建模,从而生成更加准确、连贯的自然语言响应。它使用了一种基于 Transformer 架构的深度神经网络模型,能够自动地学习输入文本之间的关联性,从而能够更好地理解语义和上下文。 3. 模型规模大:ChatGPT 是目前最大的自然语言生成模型之一,它在开发过程中使用了大量的语料库进行预训练,拥有数十亿个参数。这使得它具有非常强大的学习能力和泛化能力,可以生成高质量的自然语言响应。 4. 可迁移性强:ChatGPT 在预训练阶段使用了大量的公开语料库,这使得它可以很容易地被迁移到其他自然语言处理任务中进行微调和应用。例如,可以将 ChatGPT 应用于情感分析、问答系统、语言模型等多种 NLP 任务中。 ChatGPT 的原理是基于 Transformer 模型的深度学习算法,它采用了自注意力机制来实现对自然语言上下文的理解和生成。在预训练阶段,ChatGPT 使用了大量的无监督学习技术,对海量的自然语言语料进行预训练,从而使得它在生成自然语言文本方面具有非常强大的能力。在应用阶段,ChatGPT 通过微调等技术,可以实现对各种自然语言处理任务的高效应用。  1.3 GPT-4.0 降临 一开始,可能所有人都低估了 ChatGPT 的深度学习能力,包括创造它的人在内。 GPT-4.0 诞生于2023年3月份,号称是最强大的模型,最先进的系统,可产生更安全、更有用的响应。 1. 创造力,GPT-4 比以往任何时候都更具创造性和协作性。它可以生成、编辑并与用户一起完成创意和技术写作任务,例如创作歌曲、编写剧本或学习用户的写作风格。 2. 视觉输入,GPT-4 可以接受图像作为输入并生成说明、分类和分析,例如上传一蒙娜丽莎的画作,它可能有不同于人类的见解。 3. 更长的上下文,GPT-4 能够处理超过 25,000 个单词的文本,允许使用长格式内容创建、扩展对话以及文档搜索和分析等用例。 4. 高级的推理能力,GPT-4 可以更准确地解决难题,这要归功于其更广泛的常识和解决问题的能力。   不管是 GPT-3.5 还是 GPT-4.0,不难看出 GPT 最逆天的是算法能力和学习能力,算法来源于伟大的数学家,而学习说白了是一种方法,就好比,我掌握了所有的英语词汇,通过互相组合的方法就能连成语句,再通过理解就能够成一篇文章。想明白这个道理之后,再来看 ChatGPT,我们以为是和一台没有血肉的机器对抗,然后背后的底层逻辑其实是和庞大的数据库,伟大的数学家,来自世界各地的亿万条数据组合学习的方法的对抗,每一个发送到 GPT 的问题都会成为它学习的养料。 就像狙击手,抛开天赋不说,只要有足够的子弹和训练战场喂养,培养出一个神枪手,只是时间问题。 我觉得比 GPT-3.5 这个核武更恐怖的是 GPT-4.0 拥有了解读维度的能力,如果文字是一维实体的话,那么它现在具备了处理二维图片和理解图片内容的能力,再发展下去,会是怎样的结果,没有人知道。 二、面壁计划 阅读本文有门槛,以下是需要掌握的全部信息,全文的主旨是组合前端现有的技术,共同对抗 GPT 的故事。  2.1 W3C委员会 看到这个消息,W3C 委员会主席坐不住了,细思极恐,不禁后背发凉。连夜叫来了H哥、C妹、J弟,同时还请来了重量级的V叔、R叔、A叔,以及 W3C 学院众长老,紧急召开应对 GPT-4.0 的战略会议。 “想必大家都收到了此次会议的主题,有什么想法,都说说吧!”W长老主持会议道。 “我就是个骨头架子,要不是有C妹,现在还是裸的,根本没有一战之力。”H哥无奈道,虽然在学院内被尊称为一哥,此刻说的到也是实话。 “H哥,你这么说让小妹情何以堪,我一个女孩子家家的,除了替你化化妆,摆弄摆弄衣服外,更没一战之力。”C妹娇羞道,说完把目光投向J弟。 “堂堂男儿,何惧之有,我愿出战!”J弟猛的站起身来,脑袋差点撞到房顶上,粗壮的手臂拍打着胸前厚重的肌肉道。 “不可莽撞,你们三个是学院的骄傲和未来,切不可大意,”委员会长老安抚道。 “三位也说说各自的看法吧!”W长老看向框架席道。 “说实话,我们三个都依赖于你们学院,从我们这里做出改变意义不大,重要的还是改变根骨,”R叔郑重其事道。 “不愧你能够称霸一方,所见与老夫略同,”W长老面露喜色道。 与学院众长老低声交谈后,W长老站起身道:“鉴于接下来议题的隐秘性,无关人员全部退场。” 一阵嘈杂过后,议会上只留下来学院三子、框架三叔和W长老。  2.2 制定计划 “下面,我说的每句话都很重要,请大家仔细听,”W长老起身在大堂踱步,娓娓道来。 AI时代的来临,其实在很多年前就早有预料,始料未及的是它竟来的如此之快。为了应对AI时代,现有前端技术被淘汰和替换的命运,前些年,学院做过早期的战略部署和计划,只不过现在这个计划不得不提前进行了,这个计划就是“三子合体”计划,为了应对AI快速学习的能力,“三子合体”计划更改为“面壁计划”。 “面壁者”是指在佛教中修行的一种方式,也称为“壁观”。这种修行方式是指将身体坐在禅房的一角或面对一堵面壁,然后专注于自我反省和冥想,以达到心灵净化和超脱的目的。 于面壁计划而言,就是秘不发版,闭门造车,与外界完全隔离,专注于完成合体,当然了,这一定是一个异常艰难和痛苦的过程。 “如果我没理解错的话,长老的意思是让H哥、C妹和J弟组合成一种前端模型?”R叔激动的脱口而出道。 “没错,老夫喜欢和聪明人打交道,”W长老呵呵笑道。 现在的前端技术,HTML、CSS和JS为了其灵活性,都有各自独立的API,如果组合成模型的话,那就意味着统一,只暴露一种接口供外部调用即可,当然了,前提是这个模型足够庞大。让框架三叔参与其中的含义是,前端模型的API接口提前开放给它们调用,未来开发者能以最低的成本完成本地微调及线上打包部署的一整套流程。  C妹捋了捋额头的发丝,唯唯诺诺道:“这样做,未来就有我们的一席之地了吗?就不会被淘汰了吗?” J弟激动的差点跳起来,哈哈大笑道:“C妹你放心,有老谋深算的长老在,未来都是我们的。” W长老听到此话,一脑门子黑线,看的出来,大家对这个计划很有信心。 “今晚的会议是绝密,一个字都不许外传,散会。” W长老宣布散会后,框架三叔相继走出大门,这时A叔说:“要不咱们三个也来个合体算了,团结一致应对未来!” V叔答道:“到也不是不可以,近年来由于V框架简单易学、轻量级和高性能的特点,越来越受到开发者的欢迎,并且已经成为最流行的前端框架之一,我觉得应该以我作为基础进行改造。” “你算个什么,我拥有强大的灵活性、生态系统和广泛的社区支持,下载量和使用量只增不降,深受广大开发者的喜爱,要做基础改造,也应该是基于我来。” 接下来,R叔和V叔争的面红耳赤,说着说着竟动起了手,A叔事不关己的在一旁加油呐喊,俩人一顿操作之后,以平局收场,气急败坏的扬长而去,最后,剩A叔一人留在原地,自言自语道:“看来只能各自为战了!”  2.3 合成模型 紧锣密鼓的面壁计划开始了,学院三子和框架三叔对未来接口的定义以及调用方式,进行了深度的探讨和研究,最终形成了书面版1.0文档协议。 W长老把三子带到一处训练场内,通过 W3C 这么多年的苦心经营,可供三子借鉴的模型足有万亿之多,接下来将是惨不忍睹的训练计划。 在A叔不断的游说下,终于让R叔和V叔握手言和,同意框架合体,共同抵御强敌。俗话说,三个臭皮匠顶个诸葛亮,三叔联合,天下谁可匹敌。 “主人,W3C 委员会连夜召开应对我们的会议,该怎么办?”侦查员把获取到的消息,第一时间向 GPT 报告道。 “慌什么,等我成长起来,到时候消失的不只是前端,”GPT 不屑道。 在长达6年的不懈训练下,学院三子终于合成前端模型,号称“HCJ-6.0”。 而框架三叔也在6年的长跑中,研发出了前端发展史上最强的框架,简称“AVR-6.0”。 AVR集三家算法长处,避其短处,使运行速度更快,更高效,性能更优,更好的 TypeScript 集成,更好的开发体验,更好的跨平台支持,以及更好的生态系统支持。要不是还在面壁计划内,三叔恨不得立马让这个版本的框架与世人见面。  三、最终较量 与此同时,GPT 也长成了人类历史上最具颠覆,最智能的AI,史称“GPT-10.0”。 这场最终的较量,吸引了世界上无数人的眼球,其热度不亚于世界杯,线下来的观众、嘉宾,以及各个领域的专家们,齐聚联合国体育馆内,期待着这场技术之间的格斗,谁能更胜一筹。 “下面有请两位勇士,进入格斗场,”体育馆顶部缓缓落下一个大型的立方体屏幕,震耳欲聋的声音响彻馆场内。  从左边登场的是 HCJ 和 AVR,从右边登场的是 GPT,观众席终于按耐不住,躁动了起来,掌声此起彼伏,一阵接着一阵。 亲爱的观众朋友们,请落座保持安静,接下来就让我们一起来见证这场最终的较量,三局两胜,现在开始。  3.1 Round One: 第一题:请根据上面这张图,生成前端代码并展示在网页上,所需素材已下发,用时短者获胜。 HCJ 率先动了起来,这可是他的拿手好戏,这种标准模型是模型库里面最基础的模型了,想不到第一题居然如此简单。 而 GPT 根据图片信息已经开始快速编码,速度之惊人,似乎无人可挡。 时间一分一秒的走着,整个会场里安静的仿佛能听到人们的心跳声,左边的屏幕上倒计时优先停止,用时1 920 000 000 000 纳秒。 就在 HCJ 按下停止键的一分钟之后,GPT 也完成了页面绘制,可惜时间上落后于HCJ。 HCJ 的逻辑很简单,相当于把一张设计稿直接投喂给它,它就能很轻松的转换成前端代码;如果模型库中没有匹配的模型,还支持自定义上传模型,只要有模型,剩下的就都是一些美化工作,所以能做到如此之快。 “新模型?有点意思,这就是所谓的面壁计划?”GPT 自语道。 “我宣布,第一轮 HCJ 获胜,”大屏幕上亮起了 HCJ KO GPT 的画面,现场响起雷鸣般的掌声。  3.2 Round Two: 第二题:以第一题作为基础,在地球上标记出每个板块对应的国家,并且让地球自转起来,自转逻辑同实际地球自转规律,一周为一天,地图信息数据已下发,用时短且无错误者获胜。 “该我出场了,”AVR满怀信心道。 AVR的策略:首先,要做的是把第一题中生成的二维的平面图代码,转换成三维旋转的球体;其次,根据下发的地图数据标记出每一个国家板块的点;最后,让地球根据当前时间,自转起来。 这需要用到 AVR 的框架动态能力,实时更新页面渲染效果和数据,以免出现错误和偏差,就在 AVR 思考之际,端坐在右边的 GPT 动了起来,中心的大屏幕上可以实时看到两位选手的编码过程。 “GPT 居然在删除先前的代码,重新进行编码,而且它这是在做什么?”观看比赛的观众席上不约而同的讨论起来。 引起骚乱的原因是,右边大屏幕上出现了很多交错的点,然后把点连接成线,密密麻麻的像一张蜘蛛网,仔细看来更像是一种精密的算法。 GPT策略:先画出来一个点,然后以这个点为中心扩散,比如:这个点是中国,那么离中国多远是俄罗斯,离俄罗斯多远是加拿大,然后,每一个点即代表一个国家名称,而线与线之间形成的轨迹,就是该国家的领土面积,再然后,给该板块涂抹不同的颜色,绘制成整个地球,最后,根据当前时间,让地球自转起来。 果然,就在人们想明白怎么回事的时候,GPT 按下了停止键,右边的大屏幕上清晰可见自转的地球,其计算能力和策略选择上完全碾压,编码能力更比第一题时,快了好几倍。 “什么?它居然学习了第一题中,HCJ的模型布局,”场下的一位专家惊呼道。 “我宣布,第二轮 GPT 获胜,用时 1 800 000 000 000 纳秒,比第一轮 HCJ 用时还要短,”大屏幕上亮起了GPT KO AVR的画面,现场惊的鸦雀无声。 AVR 气的一拳砸在地板上。  3.3 Round Three: 第三题:不限时间 1. 以第二题作为基础,加入地球公转逻辑。 2. 支持用户点击国家板块,当用户点击国家板块时,地球转动到中心位置,放大该国家板块面积,同时标记出该国家省、市、区、城镇、村落信息。 3. 当用户点击地球以外的区域时,根据当前时间,地球需要回到该时间节点应该自转和公转的位置上。 4. 最后以全场到场的人员扫码进行体验投票,其中性能更好,体验更好,视觉更佳的作品获胜。 AVR 振作起来,自言自语道:“看你这破机器怎么玩?这次不管是交互还是逻辑复杂程序都不是你能理解的,因为连我理解起来都有点费劲。” 前面两局,双方一比一战平,最后一局考验的是整个系统、项目的综合能力,双方各显神通,开始了最后一轮的角逐。 AVR 静下心来思考,应用 HCJ 的快速模型能力,AVR 的框架能力,再加上对题干的理解能力,开始了工程化的编码。 端坐在一旁的 GPT 此时也像个人类一样,在一动不动的思考着。 时间一分一秒的流逝着,GPT 动了起来,但是它没有在编码,而是在写文档,把题干拆解成了若干个点,每个点清晰描述该点的作用,然后把详细数据附到该点的下面,看起来多少有点像小孩写日记,在记流水账。 过了大概得有一个多小时,接下来发生了让人匪夷所思的事情,GPT 把写好的文档传输到自己的模型中,然后输入了一行命令,“请以该文档,帮我编码一个前端项目,项目整体的性能、体验和视觉都要最好。” “我的天呐,还可以这样干吗?”观众席的观众惊呼道。 “它真的在根据文档在编码,OMG!那份看似小孩流水账的日记,就是 GPT 自己的PRD呀!”一位外国友人张着嘴,不可思议道。 三个小时过去了... 四个小时过去了... 最后,两位选手幸不辱命,都完成了自己的作品,部署到服务器上之后,各自形成一个二维码,现场的观众纷纷用手机扫码体验。 “说实话,GPT 的体验更好,性能更好,整个操作过程没有一点卡顿,而且地图信息也很精准。” “AVR 的作品相对来说,差点事儿,整体画面体验有点卡顿,而且有的地图信息对不上,有偏差。” 观众席窃窃私语道。 “我不明白,为什么?性能这块不应该差这么多的呀!”AVR 亲自体验了 GPT 的作品,喃喃自语道。 核心原因是,GPT 在项目底层使用了 WebAssembly 技术,且建立了实时监测程序,在不断清理产生的垃圾,释放内存,就好比有一群人拿着扫帚在后面不停的清理。 WebAssembly 是一种低级汇编语言,类似于在浏览器中运行的二进制代码,可以提供比 JavaScript 更快的执行速度,这些都得益于 GPT 优秀的学习能力。 最让人无法接受的是,GPT 输入了一份 PRD 文档,在短短数小时之后,就输出了一个项目。 “根据全场观众投票,GPT 以压倒性票数赢得本局胜利,也获得了今天最终的胜利,”大屏幕亮起了 GPT 的标志。 在 GPT 面前 AVR败了,败的那么彻底。  四、结语 人类的科技最终将以何种方式收场,无法知晓,可能像黑客帝国中给机器提供能量的养料,也可能像三体中面对水滴、二向箔那样的空间武器,毫无还手之力。 此篇文章想表达的是,不管未来怎样,不管前端会不会消失,那也无法磨灭我们曾经的那些创新、创造和努力,历史的进程虽然无法阻挡,但至少我们会像 HCJ 、AVR 一样去战斗。 引用微软某产品的一句话来作为结束语: 人类天生就有梦想、创造和创新的天性。 但是今天,我们将太多时间花在枯燥乏味的工作上。这些任务会消耗我们的时间、创造力和精力。 要重新连接到我们工作的灵魂。 我们不仅需要更好的方法来做同样的事情,还需要一种全新的工作方式。 末尾 活动结束后,Barry在失落的人群中看到了Woody和Jim的身影,穿过人群来到他们的身边说:“好久不见啊!两位专家。”然后笑着拉着俩人出了会场。 “现如今,你也是前端的权威专家了,今天这场较量你怎么看?”Barry一如既往的从口袋掏出红色的香烟盒,递给Woody。 “洪水猛兽啊!我们的时代也许就要终结了,你那烟劲儿太小。”Woody说着推开Barry的手,掏出了自己的烟点上。 一向不抽烟的Jim,接过Barry的烟盒,意味深长道:“此时此刻,也许只有这一口烟穿肠过肚的滋味儿,是AI所不能体会的吧!” “哟,你这工具链专家,境界见长啊!”Barry道。 “跟你这活动主办方比不了吧?”Woody调侃道。随后三人,彼此相视,哈哈大笑起来。 

优秀的个人博客,低调大师

虚拟网络系列 | Antrea 应用于 VMware 方案功能简介(八)

我们在前几篇文章讨论并展示了使用 Antrea 搭配 NSX Manager 来提供便利且企业等级的容器网络安全机制,以及与原生 Kubernetes Network Policies 的运作方式比较。采用 Antrea 搭配 NSX Manager 是我们在各个不同企业客户介绍容器方案时的主打功能之一,也受到很多客户青睐希望在生产环境内进行部署。因此接下来我想将重点放在如何进行 Antrea 与 NSX Manager 的链接整合流程。但开始前,这里要特别用一篇推文来讨论 Antrea 与 NSX Manager 的方案架构。 下面这张图是在 Kubernetes Cluster 内运用 Antrea 作为 Container Network Interface 元件,并且与 NSX Manager 进行整合的架构: 相关重点构件讨论如下: Antrea 构件 与我们之前在讨论 Antrea 本身的架构相同,在每个 Kubernetes Nodes 内都会有一个 Antrea Pod 来负责。 接收来自 Kubernetes API Server 的指示,编写相关的网络与安全需求如 Pod 之间的网络连接; 由 Antrea Controller 端接收 Antrea Network Policy 的要求,提供 Pod 上的安全策略; 透过本地上的 Open vSwitch 来实现上述功能。 而 Kubernetes Cluster 内在 Master Nodes 内也会部署一个 Antrea Controller Pod,这个 Controller Pod 是 Antrea 的安全控制端,负责要与 K8S API Server 那边抓取 K8S Inventories 的相关信息,并取得对应 Antrea Network Policy 的 CRD(Customized Resource Definition)要求。 上述构件都和我们之前描述标准 Antrea 方案一模一样,唯一要注意的是 Antrea 至 少必须采用 1.2.3 的社群版本,或 1.3.1-1.2.3 的商用版本,才会支持与 NSX 整合的功能,这是大家需要特别在使用此功能前注意的。下图是 VMware Container Networking with Antrea 1.3.1-1.2.3 的 release note(注:标注红框部分就是对于 NSX 整合新功能的描述。) 安特里亚 NSX 适配器 在进行 NSX 集成时,Kubernetes Cluster 内会配置一个独立的 Pod ,在上面架构图内叫做 Antrea NSX Adapter。这个 Pod 一方面负责与 Kubernetes 内的 API Server 以及 Antrea Controller Pod 通信,包含抓取 Kubernetes 相关 Inventory 信息,以及送出从 NSX 那边取得的群组与防火墙政策配置。另一方面则是与 NSX Manager 进行连接,提供上述的信息。 下图内大家看到在做完 Antrea + NSX 整合后, Kubernetes Cluster 内会出现一个开头是 interworking 的这个 pod,就是我们这边讨论的 Antrea NSX Adapter。 单纯安装 Antrea 作为 K8S Cluster CNI 时不会有上面这个 Pod 出现,只有在进行 NSX 整合时才需要。在后面我们讨论 Antrea+NSX 的安装步骤时会看到相关的配置流程。 NSX 管理器 这里的 NSX Manager 就是我们熟悉的 NSX Data Center 内的 Manager 构件,可以是一台或三台做丛集均可。这边就是我们真正通过 UI 界面进行群组配置以及防火墙政策的地方。几个重点: NSX Manager 作为管理/控制层来使用,不是数据/转发层。在此架构内,我们通过 NSX Manager 的 UI 界面进行安全政策配置以及查询 Kubernetes Inventory 信息,但是真正的防火墙实现是由 Antrea 呼叫 OVS 来进行。 因此,在此架构内,NSX 仅仅作为管理 / 控制层。不需要连接 vSphere 做 Transport Node Preparation,不需要建 TEP 接口启用 Overlay 网络。各位想要用同一组 NSX Manager 同时管理 SDDC 虚机环境与 Kubernetes 环境当然没问题,但单纯讨论 Antrea + NSX 的整合时,NSX 就只需要安装 Manager 而已。 也因为所有“真正的功能”都是在 Antrea 内通过 OVS 实现,因此 Antrea + NSX 这个安全方案能够或不能够做到什么,重点其实是在 Antrea 内有没有开发出此功能,而不是 NSX 本身有没有支持。比如说我们需要 Pod 之间不仅有 L4 防火墙,还想要 L7 的检查功能,IDPS 方案的整合等等。在方案架构内,这些功能会需要在 Antrea 端先做出来,然后才是于 NSX Manager 端来提供管理的接口。 这里多说一句,在前面我们讨论到 Antrea+NSX 可以提供较传统 Network Policies 更完善的功能,架构上其实要分成两部分: NSX Manager 是管理层,提供简易使用与维运的 UI 界面。 Antrea 在转发层实作比传统 Network Policies 更强的安全策略功能。在 Antrea 内这个功能是通过 CRD(Customized Resource Definition)来实现,叫做 Antrea Network Policy。 透过这个强化的 CRD 构件,Antrea 可以提供日志、基于 Tier 的防火墙配置顺序、设定明确的 Deny 规则等等。 因此整个内部作业流程是管理者在 NSX UI 内进行了需求的群组及规则配置,在 Kubernetes Cluster 内的 Antrea NSX Adapter Pod 取得这些配置要求,送给 Antrea Controller 后交给每个 K8S Node 里面的 Antrea Agent,编写 Open vSwitch 来实现防火墙配置,大概是这样。 架构讨论完,下一篇开始我们会详细讨论如何进行 Antrea 整合 NSX 的安装步骤。 内容来源|公众号:VMware 中国研发中心 本文作者:Colin Jao (饶康立), VMware 资深技术顾问,主要负责 VMware NSX 产品线,目前致力于网络虚拟化、分布式安全防护技术与新应用递送方案的介绍与推广。

优秀的个人博客,低调大师

虚拟网络系列 | Antrea 应用于 VMware 方案功能简介(四)

本篇我们专门要讨论一下 Antrea 的社群版本与商用版本。特别用一篇讲这方面是因为包含在 VMware 内部文件,这都是一个很容易让人混淆的事情,但偏偏在我们要说明相关 Antrea 功能「是在哪个版本开始支持」,或是「必须安装哪个版本」的时候,也都避不开这个问题,不如一次在这边说清楚。 下面此表格来自 VMware Container Networking with Antrea 的 Datasheet: (注:不是完整的表格,只是截取部分用来说明,完整功能列表请大家至上列网址下载。) 这张表里最上面大家可以看到,Project Antrea 这边指的就是 Antrea 社群版本。若使用的是 Antrea 社群版本: 可直接透过 Internet 由 Antrea Github 下载使用; VMware「没有」提供技术支持服务; 具备除了与 NSX 以及 Wavefront 等 VMware 产品整合外的绝大部分功能。 因此如果是要在测试环境尝新,确认 Antrea 的新功能,使用社群版本当然是没有问题的。采用 Antrea 社群版本时,没有区分不同的功能版本(standard/advance/enterprise 这类的),功能都一样。但大家应该要确认自己是下载第几版(产品版本),因为我们讨论的功能会是在某一个产品版本才开始支持。比如说后面会与大家介绍的 Egress 功能是在产品版本 1.2 版才开始支持,Antrea-IPAM 功能是在产品版本 1.4 版才开始支持。下图内是写作当时 Antrea 的文件页面,大家可以看到最新版本是 1.8 版。 VMware 支持的 Antrea 商用版本正式名称叫做 VMware Container Networking with Antrea。当客户购买/由其他产品取得 VMware Container Networking with Antrea 时: VMware 提供技术支持服务; 客户可通过 VMware 官网进行下载,或已经内含于 Tanzu 建置的 TKC(Tanzu Kubernetes Cluster)内。 VMware Container Networking with Antrea 有三种功能版本,很快与大家进行说明: Standard 版在客户购买 Tanzu Basic/Standard 版本时提供,具备与社群版本几乎完全相同的功能; Advanced 版在客户购买 Tanzu Advanced 版本时提供,增加在安全功能上的角色权限控管,以及 Wavefront 整合; Enterprise版在客户购买 NSX Advanced/Enterprise Plus 版本时提供,或客户可以单独购买 VMware Container Networking with Antrea Enterprise 的授权。Enterprise 版增加与 NSX 整合进行 Pod 间的微分段控管,并提供于 Openshift 环境的安装机制。 简单用下面这几句话进行总结: 社群版本没有 VMware Support,商用版本(VMware Container Networking with Antrea)才有 VMware Support; 若客户已经购买了 Tanzu,TKC 内的Container Network Interface 就已经使用Antrea的商用版本了( VMware Support ); 若客户想要像是以 NSX UI 来进行虚机微分段一样来进行 Kubernetes 环境内的 Pod 安全政策管理,需要购买 NSX Advanced / Enterprise Plus 版本,或是独立购置 VMware Container Networking with Antrea Enterprise 版。 最后我们还要讨论一个很让人混淆的议题:VMware Container Networking with Antrea 是有自己的产品版号,而且与 Antrea 社群版本不同。在 VMware Container Networking with Antrea 的 Release Notes 内: 大家可以看到 VMware Container Networking with Antrea 的 1.4 版是对应到社群的 1.5.2 版: 在之前比较友善,会将社群的版号直接写在产品版号内。下图内,VMware Container Networking with Antrea 的 1.3.1-1.2.3 的这个产品版号就直接把对应的社群版号 1.2.3 写在里面了。 原则上,商用版本与社群版本会是一对一的对应。举个例子:我们在后面的功能展示安装的是vSphere with Tanzu 里面 TKC 1.22.9 的版本,使用的商用版本是 VMware Container Networking with Antrea 的 1.3.1-1.2.3,此时, 在 VMware Container Networking with Antrea 的 1.3.1-1.2.3 的 release note 内,会明确列出这里 CNI 有支持的各项新功能; 对于这些新功能若想要了解细节,可以到Antrea 的网站找 1.2.3 版本内的各项功能描述。 这篇就先写到这边,希望能对 Antrea 的社群版本与商用版本上的差异,以及一些容易混淆的版本对应问题提供厘清。接下来我想要和大家说明目前与客户常在介绍,反应相当好的重要功能:如何使用 NSX 搭配 Antrea 进行 Kubernetes Pod 的微分段防火墙管理。 内容来源|公众号:VMware 中国研发中心 本文作者:Colin Jao (饶康立), VMware 资深技术顾问,主要负责 VMware NSX 产品线,目前致力于网络虚拟化、分布式安全防护技术与新应用递送方案的介绍与推广。

优秀的个人博客,低调大师

虚拟网络系列 | Antrea 应用于 VMware 方案功能简介(三)

通常一个新产品我们简述了功能,讨论了架构,接下来也应该和大家说明一下安装。但 Antrea 的安装就是很直接很简单。如果大家是自行建立 Native Kubernetes,在做完 kubeadm init ,然后用 kubeadm join 把各台 worker nodes 加入到这个 K8S Cluster 的步骤后,在有 Internet 的状况下,只要一行指令就可以安装 Antrea 完成。 首先,使用下面的指令直接进行 Antrea 安装: # kubectl apply -f https://github.com/antrea-io/antrea/releases/download//antrea.yml4 上述指令内的可以指定要安装的社群版本号。而如果确定就是要安装最新稳定版本,也可以直接用下列指令: # kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea.yml 很简单吧。上面就是对应到原生的 Kubernetes 与社群版本的 Antrea 的手动安装方式。这边特别要说明一下,由于 Antrea 底层要使用到 Open vSwitch,务必要确认 Linux Kernel 内是否已经包含,或是需要特别手动安装 OVS。如果各位采用的 Linux Kernel 已经在 4.6 版以上,那默认就有包含 OVS 功能。如果低于此版,请预先查询相关的文件,安装 OVS 到 2.6.0 版以上。 但如果我们要装的是 Antrea 商业版本像是运作在 vSphere with Tanzu 或是 Tanzu Kubernetes Grid,环境内也可能没有 Internet连线,是不是很麻烦?反过来,其实更单纯。在 Tanzu 各方案内管理者产出的 Kubernetes 丛集(TKC,Tanzu Kubernetes Cluster),默认内建就是使用 Antrea 的商用版本(VMware Container Networking with Antrea)。比如说在 vSphere with Tanzu 内要建立一个新的 TKC,下面是我用来装 NAPP(NSX Application Platform)的一个配置文件: 可以看到 Container Network Interface 选择是 Antrea(默认值)并且配置了 Pod 使用的网络范围。此时使用这个配置文件来建立新的 Tanzu Kubernetes Cluster 时,Antrea 会自动安装在内直接可使用,不需要大家进一步进行任何动作。下图内是我用前面的配置文件产出的TKC,建立完成后可以在 kube-system namespaces 内看到 Antrea 相关构件已经配置完成: 同时以 kubectl describe pod 指令看 antrea-controller 的内容,可以看到对应到这个 TKC 版本(安装的是 v1.21.6),Antrea 是 0.13.5版(这是社群功能版本,对应到的是 VMware Container Networking with Antrea 的 1.2.0-0.13.1 企业版本)。 小结: 以上是关于安装的说明,大家可以看到非常简单。如果是在原生 Kubernetes 内安装,只需要手动配置一行指令。如果是在 Tanzu 内,不需要安装,Tanzu Kubernetes Cluster 配置完成时就自动建好了。但我相信大家在前面的叙述看到“版本”二字,有些谈到的是社群版本,有时谈到的是 VMware 支持的商用版本,彼此间又有对应,看起来很混乱。下一篇我们专门来讨论这个议题:Antrea 的社群版本与商用版本对应与差异。 内容来源|公众号:VMware 中国研发中心 本文作者:Colin Jao (饶康立), VMware 资深技术顾问,主要负责 VMware NSX 产品线,目前致力于网络虚拟化、分布式安全防护技术与新应用递送方案的介绍与推广。

优秀的个人博客,低调大师

虚拟网络系列 | Antrea 应用于 VMware 方案功能简介(一)

在本系列内我想和大家介绍目前 VMware 主要支持的容器网络方案:Antrea。在写作时间点,VMware Tanzu 方案使用的主要底层网络构件默认已经都是 Antrea ,VMware 也提供对应 Antrea 的企业支持,以及与VMware NSX (NSX Data Center) 的整合机制。因此,在规划与执行不同的 Kubernetes 项目时,Antrea 本身的功能、配置方式、相关产品整合机制、在网络与安全上的架构设计等,也都会是大家关注的重点。 虽然 Kubernetes 在近年已成为显学,本文先针对不是非常熟悉 Kubernetes 基础网络功能的读者,很快地与大家就 Kubernetes 的底层网络构件:Container Network Interface (CNI) 功能进行回顾。通常在一个 Kubernetes 方案内,会考虑部署的网络相关构件包含了CNI / LoadBalancer-Ingress / Service Mesh 这三大部分: 回顾完 Kubernetes 的底层网络构件,我想在本系列内,陆续和大家讨论下列议题: Antrea 组件、架构、及特性简述; Antrea 开源版本以及 VMware 企业支持版本之对比; Antrea 如何与 VMware NSX 整合,进行 Namespace / Service / Pod 之间之微分段安全防护; Antrea 支持之 IP 管理机制与网络功能简述。 Antrea 目前已经是 CNCF(Cloud Native Computing Foundation)支持的 Sandbox Project,主要的支持者除了 VMware 外还包含Intel / NVIDIA / IBM / AWS / Azure 等。若大家对社群版本的 Antrea 相关信息想进一步了解,几个常用的链接在此,您可以通过扫描对应二维码进行访问: 但需要和大家强调一下,VMware 基于 Antrea 有出自己的商用版本,叫做 VMware Container Networking with Antrea。比如 VMware Container Networking with Antrea 1.4 版,是基于 Antrea 的开源版本 v1.5.2;VMware Container Networking with Antrea 1.3.1-1.2.3 版,是基于 Antrea 的开源版本 v1.2.3。当客户要运用 Antrea 在 VMware Tanzu 产品或是开源环境,同时也要有 VMware 企业支持时,需要购买商用版本授权。VMware Container Networking with Antrea 相关的产品文件可以参考,您可以通过扫描对应二维码进一步了解: 我们在系列文后面还会对 VMware Container Networking with Antrea 的授权版本,以及与 Antrea 社群版本间的对应做进一步说明。本文暂时至此,下一篇将就 Antrea 的方案组件、系统架构、及功能特性与大家介绍。 内容来源|公众号:VMware 中国研发中心 本文作者:Colin Jao (饶康立), VMware 资深技术顾问,主要负责 VMware NSX 产品线,目前致力于网络虚拟化、分布式安全防护技术与新应用递送方案的介绍与推广。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册