闲鱼应用迁移实践

发表于 3年以前  | 总阅读数:384 次

背景

idlecenter是闲鱼服务端元老级应用,在2013年6月idlecenter写下了第一行代码,随后陪伴闲鱼走过了8年的时间。

随着闲鱼业务规模的不断庞大,业务复杂度的不断增加,idlecenter逐渐暴露出一些问题:

  • 应用的垂直业务边界划分和架构分层不清晰,不同领域的业务代码都在idlecenter上迭代,业务代码深度耦合
  • 新的业务不断叠加,老的业务不能及时清理下线,应用规模不断膨胀

直接引发的影响是研发效率:多个团队几十个研发共同维护上百个业务,每次发布都会有十几个分支,每增加一个分支,都会面临代码冲突的风险。据统计一次应用发布构建加部署需要半个小时,分支冲突解决需要二十分钟,严重影响开发效率。

长远影响:

  • 稳定性:业务不能隔离,核心业务与非核心业务都在一个应用上,相互干扰,稳定性不能保障。例如一个非核心业务把资源池打满,就会导致核心服务不能提供服务,引发线上故障
  • 业务垂直化冲突:闲鱼在业务规模快速发展的过程也会进行人员与组织架构的调整。而idlecenter作为一个单体应用,应用架构和人员结构不同态。导致权限不能收口,规范不能拉齐。随着没有规范的业务代码不断迭代,应用的维护成本指数级的增加。

为了解决idlecenter的各种问题,我们从7月份开始对idlecenter进行拆分迁移。到目前我们idlecenter整体迁移进度过半,人力投入成本不到20d,迁移零故障。

本文把我们这次迁移的思路和实践经验沉淀下来,希望能为做应用迁移的同学提供一些思路。

迁移总体分为两个部分:

  • 开发期的代码迁移
  • 运行期的流量迁移

代码迁移

在开发期的代码迁移环节,我们需要思考的问题是:

  • 代码哪些要迁?
  • 怎么迁?

这里我们沉淀了关于代码迁移的普适性原则:

  • 明确迁移的边界,这里的边界包含两个部分:迁移方案的局限性、迁移粒度

  • 明确迁移方案的局限性,明确支持迁移的服务与不支持迁移的服务。例如在我们这次迁移过程中,明确了对消费端服务RPC框架版本的要求,明确了不支持消息的迁移。在做迁移服务梳理的时候,我们就需要初步识别并择出这部分边界外的服务,在代码迁移过程中,也要留意是否有遗漏的没有排除干净的服务。

  • 明确迁移粒度,固定迁移的粒度后能够将应用垂直进行拆解,合理规划应用拆分后的边界。例如在我们方案中,迁移明确的以RPC服务为粒度,做迁移梳理时每个迁移模块的都是一个垂直的RPC服务,每个RPC服务的归属领域清晰,同时迁移方案调研时能明确的从RPC服务出发,来输出一个横向解决所有RPC服务迁移的解决方案。

  • 关注拆分本身,迁移过程保持新老应用代码的一致性,需要做到:

  • 不做代码重构。代码迁移过程也是一次代码review过程,中间或许会发现以前写的代码不优雅不简洁,或有设计缺陷,这时我们应该做的是保持代码的一致性。线上运行的代码往往有QA的测试用例与回归验证覆盖,保证风险收敛在可控的范围内。而迁移过程的每一行代码变更,都有可能成为逃逸在测试用例与回归验证外的“地雷”。

  • 不夹带私货。这与不做代码重构略有重叠,说的是代码迁移过程要干净,杜绝在代码迁移过程中顺带实现额外的业务逻辑,做“功能拓展”。

  • 要迁的干净,代码迁移不仅包含应用内的代码,还需要关注应用外的与应用绑定的配置与逻辑:

  • 中间件相关配置:例如应用上的RPC框架配置,数据库中间件配置,开关配置,配置中心的配置等都需要关注是否和应用绑定,在代码迁移的时候也要将相关配置迁出

  • 中台相关配置:例如闲鱼可能依赖了关键词过滤中台,将代码迁移过程,也需要迁移中台相关配置,为新应用配置中台权限。

流量迁移

在运行期的流量迁移环节,我们主要考虑的两个问题是:

  • 迁移成本:idlecenter中的服务依赖拓扑复杂。推动一个服务迁移可能牵涉到多个上游消费端服务,需要多个团队人员的配合,需要极高的时间与人力成本。如何减少迁移的成本。
  • 稳定性:流量迁移就是高速公路上边跑边换引擎,我们需要如何保障流量迁移过程的稳定性。

迁移方案

太高昂的迁移成本会为迁移项目的推进增加很多阻力,因此在方案调研阶段,需要关注迁移成本问题。我们在方案调研阶段明确了目标:

  • 迁移过程流量可控,具备灰度切流的能力,这是流量迁移稳定性的基础
  • 迁移不需要改造服务消费方代码。改造成本尽可能低
  • 迁移过程能够对服务消费方透明,可以在服务消费方无感知的情况下完成平滑迁移

最终我们设计了基于HSF路由功能的平迁方案。

HSF全称High-Speed Service Framework, 是一个集团内的RPC框架。直接对标的产品是Dubbo。其运行机制总体如下:

引用自hsf-guide文档

涉及核心组件:

  • 注册中心:用于服务注册发现
  • 规则中心:可以配置和推送服务治理规则。应用开发人员可以在控制台编辑保存规则,规则中心中间件会推送到所有指定服务端。

我们方案复用了HSF框架中的服务调用路由规则能力。通过路由规则介入服务消费方的选址逻辑,完成服务提供方的流量迁移。

基于HSF的平迁方案,我们实现了:

  • 服务消费方零改造成本。
  • 迁移过程对服务消费方透明。

最终体现在人力成本上的结果是:迁移成本降到最低,一个人一个星期可以完成一个服务的迁移上线。

解决了迁移成本的问题后,我们需要解决迁移最重要的问题:稳定性保障。

稳定性建设

关于流量迁移过程的稳定性,我们的思路是复用集团内部沉淀的安全生产方法论——安全生产三板斧:可灰度、可观测、可回滚。围绕安全生产三板斧构建稳定性体系。

可灰度实际就是对HSF平迁方案的灰度能力做验证,确保应用在平迁过程中流量分布能符合预期。我们需要考虑的问题有:

  • 灰度能力:HSF平迁方案是否具备灰度能力
  • 流量倾斜验证:HSF路由规则是否会导致流量倾斜。逻辑机房之间的流量,逻辑机房内机器的流量是否均匀分布。
  • RT影响验证:HSF路由规则额外带来的路由选址环节,带来的RT影响有多少,是否在可接受范围内
  • 切流流量无损验证:调整灰度权重过程中,是否能平滑,是否会导致流量损失

其次,我们需要验证HSF平迁方案的可回滚能力:

  • 回滚能力:HSF平迁方案是否具备回滚能力
  • 回滚生效时间:HSF平迁方案回滚生效时间

针对以上待验证点,我们在测试环境做方案POC验证,输出了《HSF平迁方案可行性报告》。简单总结验证结果:

  • 方案具备灰度能力、回滚能力
  • RT影响在3ms以内,可以忽略不计
  • 机房间、机房内流量均匀分布,不会带来切流流量损失或导致流量倾斜问题
  • 路由回滚生效时间在1s以内

可灰度与可回滚能力解决了发布过程中影响面可控的问题。而可观测性是我们稳定性保障的最后一道屏障。可观测性是否准确细致决定了我们灰度平迁过程能否平稳落地。

在我们实践中可观测性建设分为两个部分:

  • 从监控告警出发,我们需要case by case梳理业务背景,针对性的配置监控告警,例如对于敏感词过滤服务,我们不仅需要关注它的调用成功率,也要关注服务的敏感词命中率。除了业务层面的监控,我们再配合配置资源层面的监控,例如流量分布、QPS、CPU内存使用率,来整体的把握服务健康状态
  • 新服务发布上线后,我们需要QA介入对服务进行回归验证。平迁服务我们关注的是新老服务提供的代码逻辑是否是一致的。为此我们接入了集团内的凤凰回归平台,凤凰能够录制线上流量,并在指定的灰度机器上回放,能快速验证新老应用服务逻辑是否保持一致。

在稳定性体系的建设下,我们最终实现了迁移零故障的成绩。

写在最后

最后,要做好应用迁移还有非常重要的一点:做好checklist。提前制定好迁移步骤,切流放量节奏;每次放量时能对影响面有大概量级的评估,在上线前能在测试环境完整演练一遍流程。这里我列出我们程的checklist模板:

  • 迁移确认

  • RPC框架版本、与路由规则互斥的其他规则

  • 中间件配置、中台配置迁出确认

  • 新应用权限确认

  • 消费端服务消费场景

  • 消费场景、QPS量级

  • 资源评估

  • 监控告警配置

  • 回归策略

  • 应急预案

  • 发布流程

  • 切流时间、切流权重

  • 影响请求量

  • 切流路由规则

本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/QgxykbQwOPFf7icSK9aTFg

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  237328次阅读
vscode超好用的代码书签插件Bookmarks 2年以前  |  8175次阅读
 目录