Categories
程式開發

伴鱼发布系统实践:集泳道、灰度、四端和多区域于一体的设计与权衡

在伴鱼发展早期,四端的系统发布实践比较简单、直接:web 端直接登录线上机器替换静态文件;服务端所有项目共用一个仓库,直接利用脚本部署不同仓库子目录到固定机器,并且在发布的时候才尝试解决代码冲突;移动端从打包到发版流程基本靠手动保证。尽管比较粗糙,但是在公司早期人员少、产品迭代频繁的大背景下,这些实践方案的确起到很大的作用。

随着公司业务逐步稳定,技术团队扩张,早期的发布实践方案逐渐暴露出问题:

直接登录线上机器替换文件是高危操作,运维团队也开始逐步收回所有主机访问权限服务端共享一个仓库,一个 go.mod,随着人员增加,代码冲突的概率也呈指数增加各端都有公共基础代码,这些基础库的版本控制、灰度控制问题需要各自解决测试环境需要支持不同泳道,生产环境中需要新增预发布环境,方便测试人员回归、冒烟生产环境除了全量发布,还需支持灰度发布,以减少新版本的影响范围,保证服务质量…

一个统一各端的发布系统呼之欲出,这便是技术中台各组通力协作,共同打造的东风发布系统。目前东风发布系统已经逐步接管各端的日常发布需求,成为伴鱼全体研发每天都需要访问的系统之一。

系统设计

基本流程

东风发布系统负责将各项目的仓库拉取到编译机器上,编译打包后发布到相应的环境,基本流程如下图所示:

伴鱼发布系统实践:集泳道、灰度、四端和多区域于一体的设计与权衡 1

由于历史原因,许多老项目都托管在 …

Categories
程式開發

作为 Java 开发者,这个基于云原生的编程框架你得了解一下

导读:随着各种开放云平台的出现,传统的基于 Java 和 J2EE 的编程模型和框架在云环境下无法适应,高内存需求和启动速度缓慢等限制了它们在云平台的扩展能力,面向云原生的编程框架需求变得越来越多。2019 年红帽发布了基于云原生的 Java 框架 Quarkus,本文作者冯征从

Categories
程式開發

不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏…

作为一名程序员,学习资源是必不可少的东西。昨天有一位朋友在读者群里,问:数据挖掘、分析相关的课程恰巧,最近梳理了一下 GitHub 上帮助人们学习编码的 12 个资源,以便大家在今后的时间里研究学习。

不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏... 8

下面进入正题:

1、30-seconds-of-code

GitHub Star:56084

GitHub:https://github.com/30-seconds/30-seconds-of-code…

Categories
程式開發

Sign in with Apple被曝零日漏洞,可远程劫持任意用户帐号

Sign in with Apple被曝零日漏洞,可远程劫持任意用户帐号 24

5月30日,印度漏洞安全研究专家Bhavuk Jain在官方博客中披露:Sign in with Apple(通过Apple登录)中存在一个零日漏洞,影响非常严重,因为它允许攻击者远程劫持任意用户账户。

Bhavuk Jain在博客中写道,“今年4月,我在Sign in with Apple中发现一个零日漏洞(zero-day)。如果第三方应用使用了Sign …

Categories
程式開發

没人比我更懂微服务:斗鱼开源Go微服务框架Jupiter

Jupiter 是斗鱼开源的,面向服务治理的Golang微服务框架,以开发效率和治理效率为核心目标,从统一开发规范、完善监控埋点、降低开发难度等多个维度来帮助Gopher开发高性能、高可靠性的微服务框架。

Jupiter在斗鱼内部经过三年打磨、几百个服务的线上验证,在多种应用场景中适配、历经多次基础架构迭代,有效地保障了服务应用的快速迭代、精确监控,并在异地多活、容器云、混沌工程等基础建设中,支撑服务的平滑迁移、平稳变更。近期,Jupiter Go v0.5.0 正式发布,与之同步发布的还有治理平台Juno。两者相得益彰,帮助开发者快速落地、并具备服务治理能力的微服务架构。我们致力于将Go微服务框架标准化,统一错误码、日志、监控、注册、流控的Schema。做到微服务的各个模块可观测、可治理,管理微服务研发侧的全套生命周期。以下是Jupiter的架构图。

没人比我更懂微服务:斗鱼开源Go微服务框架Jupiter 27

微服务基础框架

现代微服务架构是分布式的,业务逻辑被拆分到不同的服务中,服务之间通过RPC相互调用。随着业务规模的增大,服务的数量也随之增加,当增加到一定程度的时候,开发和运维效率将面临严重挑战。

斗鱼Web服务在服务化过程中为应对这种挑战,逐步形成了以Jupiter为核心的基础框架和以Juno为核心的治理平台。

Jupiter是作为面向服务治理的微服务基础框架,有四个核心关注点:…

Categories
程式開發

爱虫病毒二十年:一个蹩脚的病毒为什么影响如此深远?

菲律宾首都马尼拉奎松市,身穿条纹衬衫、戴着“黑客帝国式”墨镜的 Onel de Guzman 低着头,穿过一群记者摄影师,走进一场匆忙安排的新闻发布会。

他骨瘦如柴,一头蓬乱的黑发一直垂到眉梢,几乎没有注意到记者们的大声提问,他唯一的动作是偶尔用白毛巾抹去脸上的汗水。坐在右边的是他的律师 Rolando Quimbo。律师听着这位 23 岁的年轻人含含不清的回答,然后用英语向记者们重复一遍。…

Categories
程式開發

美团配送A/B评估体系建设与实践

2019年5月6日,美团正式推出新品牌“美团配送”,发布了美团配送新愿景:“每天完成一亿次值得信赖的配送服务,成为不可或缺的生活基础设施。”现在,美团配送已经服务于全国400多万商家和4亿多用户,覆盖2800余座市县,日活跃骑手超过70万人,成为全球领先的分钟级配送网络。
本文从评估体系建设的原因开始入手,重点阐述了美团配送技术团队在A/B评估体系构建过程中的一些思考和具体的实践,包括如何建立完备的指标体系、如何建立科学权威的评估方式等等。希望能够给大家一些启发和帮助。

即时配送的三要素是“效率”、“成本”、“体验”,通过精细化的策略迭代来提升效率,降低成本,提高体验,不断地扩大规模优势,从而实现正向循环。但是,策略的改变,不是由我们随便“拍脑袋”得出,而是一种建立在数据基础上的思维方式,数据反馈会告诉我们做的好不好,哪里有问题,以及衡量可以带来多少确定性的增长。

而A/B实验就是精细化迭代的一个“利器”,通过为同一个迭代目标制定两个或多个版本的方案,在同一时间维度,让组成成分相同(或相似)的A/B群组分别采用这些版本,然后收集各群组的体验数据和业务数据,最后分析、评估出最好的版本,帮助我们作出正确的决策,使迭代朝着更好的方向去演进。基于此,构建一个适用于配送业务的A/B平台就应运而生了。

1. A/B平台简介

美团配送A/B评估体系建设与实践 37

如上图所示,A/B实验可以看作一个“无尽”的学习环,我们通过提出假设、定义成功指标、检验假设(A/B实验)、分析学习、发布、建立另一个假设,这就形成一个完整的闭环,通过多轮实验迭代,使策略趋于更优。基于上述对A/B实验划分的5个步骤,我们将A/B实验的完整生命周期分为三个阶段:

  • 实验前,提出该实验假设,定义实验成功的指标,确定分流策略;
  • 实验中,即验证假设的阶段,根据配置阶段的分流策略进行分流和埋点上报;
  • 实验后,进行实验分析与学习,并基于实验报告决定是否发布。
Categories
程式開發

钢铁侠马斯克之仰望星空

《星际穿越》是我很喜欢的一部电影,常年放在 iPad 里,过段时间就会看一遍,因为这部电影里有我最喜欢的台词。

我们就这样坐在这里,要是没有下雨,我们就会说「明年吧」。可以是明年救不了我们,后年也是一样。我们曾经仰望星空,思考我们在宇宙中的位置,而现在我们却只能低垂着头,担心如何在尘埃中苟活。我们总是坚信自己有能力去完成不可能的事情。我们珍视这些我们敢于追求卓越、突破障碍、探索星空、揭开未知面纱的时刻,我们将这些时刻视为我们最值得骄傲的成就,现在我们已经失去了这一切。又或者,我们只是忘了自己仍然是开拓者,我们才刚刚开始。那些伟大的成就不只属于过去,因为我们的命运就在太空里!不要温和地走进那个良夜。白昼将尽,暮年仍应燃烧咆哮。怒斥吧,怒斥光的消逝。

这段话总会让人想起那个太空狂人马斯克。美国东部时间 5 月 30 日 15 …

Categories
程式開發

中国开源世界中的重要玩家

本文最初发表在 Interconnected,经原作者Kevin Xu授权,由InfoQ 中文站编辑并分享。

开源技术已经成为主流,被各种类型和规模的公司和组织采用。这种做法并不局限于美国,虽然起源活动多从美国开始,但它是全球性的。就国家而言,中国是最大的开源技术“消费国”之一,并且越来越成为最大的贡献者之一。本文是“中国的开源世界”专栏第一篇,主要介绍了开源生态系统中的主要玩家。

科技巨头

在中国,所有你可能听说过或没有听说过的大型科技公司都在使用开源技术来迅速扩展和发展自己的技术。其动机与任何快速发展的科技公司没有太大的区别,因为开源技术是免费的,透明的,灵活的,如果一个公司自己有能力和目标,可以对其进行修改、以满足公司本身的特殊需求,这也是吸引和留住技术人才的好方法。大多数开发者更喜欢使用开源技术,而且此外如果他们的雇主允许的话,他们也很愿意贡献奖励给开源社区;在这方面,中国的开发者没有什么不同。

为了在日益增长且竞争激烈的中国互联网经济中保持竞争力,一些中国科技公司比欧美同行更早地采用了新的开源技术。京东从2016年初开始就在使用Kuberentes,这距离该项目从谷歌开源还不到一年,现在,它运行着Kubernetes最大的生产集群之一。“吃”了优步中国的“中国优步”— 滴滴出行,也曾公开表示过,规模使用开源技术对于实现自己的雄心壮志至关重要。…

Categories
程式開發

程序员在报错时的30种常见反应

软件开发工作充满了挑战性。人无完人,对于程序员来说,写出有 bug 的代码是在所难免的。有些人很淡定,也有一些人会感到生气、沮丧、不安或气馁。在修复 bug 的过程中我们都经历了什么?这个值得我们一探究竟。

本文列出了程序员在修复 bug 时可能会说的一些话或者想法。我敢说很多程序员都曾经历过编程的艰辛,但在事后都会一笑而过。

1. “我不知道该把它删掉还是该重写”