写点什么

伴鱼英语基础架构怎么做?

2020 年 10 月 28 日

伴鱼英语基础架构怎么做?

今年年初的疫情,让线上教育平台都加大了线上宣传的力度,我也多多少少看过伴鱼英语的广告,于是就关注起来,原来这是一家刚过完了五周岁生日,专注于少儿英语的公司,也获得了 1.2 亿美金的 C 轮融资,目前覆盖 4000 万用户、160 万付费用户的产品矩阵。当然,我们更关注他们的技术积累。他们有自己的技术博客,由内部技术同学分享技术精进的内容,大家可以点击去看看


一家公司的技术水平如何,得从底层基础架构谈起,如果基础架构做的不好,是很难支撑业务增长的,也不可能有优质的用户体验。所以我们邀请伴鱼基础架构负责人徐成选来 QCon+案例研习社来分享伴鱼基础架构的细节,例如架构设计、迭代、优化等问题,希望大家能找到共鸣之处。我们也有幸提前采访了徐老师,聊了很多关于伴鱼英语基础架构的技术话题,以下是采访内容整理:


技术积累,不分公司大小


徐成选已经在基础架构领域工作了 6 年多,在每家公司的收获也是不一样的,正如他自己说的,基础架构比较特殊,跟公司的具体业务不直接相关,但是业务规模、流量特点会影响基础架构的规划建设思路。


最早从传统行业跳到一家创业公司开始做基础架构,那会儿困难比方法多,好多问题得不到答案,也解答不了别人的疑问。后来开始参与开源社区里的一些项目,多和业界技术人交流,开始有了一些思路。2016 年入职小米之后,分别开创、参与了 Redis 中间件集群、服务治理、MySQL 中间件集群等,这几年也不断学习,将所学知识应用到具体项目中。


小米自身的规模非常大,抢购具有流量洪峰,质量保障要求极高,在这种环境下做项目自己的架构设计、实现能力都得到了极大的提升。伴鱼英语量上虽然没有传统互联网公司大,但是对稳定性要求极高,并且是创业公司、时间紧张,系统建设需要找好切入点,依次展开。总之,在每个不同的公司,都保持持续学习的习惯,然后根据业务特点灵活开展项目,适合的才是最好的。


对于在线教育而言,2020 年业务应该是推动技术发展最快的一年吧,在这一年里,伴鱼技术上有哪些让你印象深刻的点?


2020 年对于整个中国、世界,不管是在线教育还是其他各行各业,都是令人难忘的一年。


徐成选说,作为一个教育行业的技术人,在经历阵痛的同时,也迎来了在线教育的爆发。这一年里伴鱼扩展基础设施(如专线建设);深耕服务治理、质量保证,提升服务研发效能,数据库稳定性;从 0 到 1 推出多个系统如 CMDB、PaaS、SQL 审核、OKR 平台、触达平台等等,不断提升业务、研发的自动化水平,减少人为介入。另外,伴鱼还非常重视技术影响力建设,推出了几十篇高质量的技术文章,跟 PingCAP 达成战略合作,参与、推出开源项目等,为下一个五年做好充足的准备。


基础架构要因地制宜的建设


基础架构团队是隶属于技术中台部门下的一个团队,主要负责服务治理、中间件、Kubernetes、部分在线数据设施的建设工作。伴鱼建设基础架构或者说整个技术中台部门都是围绕研发效能、稳定性、赋能业务来开展的。



月底在 QCon 会议上,徐老师会主讲服务治理话题,介绍伴鱼的技术效能、稳定性、规范化建设,感兴趣的可以关注一下。


在徐成选看来,基础架构挑战中最重要的一点是做出对的决策。基础架构核心比较标准,但是落地时是一个非标领域,各家都有自己的技术选型、现有系统等。这就需要基础架构负责人能够做出适合公司的选择,是自研还是选择开源,具体项目的架构层次如何划分,模块如何设计,项目完成后如何落地,如何权衡业务需求,系统建设之间的矛盾如何解决。这里面每一步的决策都比较有挑战。


有些公司的基础架构建设很难得到重视,伴鱼是怎样实施推进的呢?对于这一点,徐成选说,基础架构需要上层管理者的支持,上层不重视,基础架构工作很难开展。另外推拉结合,如果推是基础架构主动推动,拉就是业务系统对基础架构有所求。比如服务治理是很容易提升业务开发效率的,这就很容易得到业务的认可,建设、推动起来会比较方便。对于深层次的如基础设施、中间件这类业务感知不明显的系统,就需要基础研发的同学不断找存在感,打造内外影响力,让大家能够感知到这类系统带来的一些变化。另外技术债是永远不可避免的一个点,解决历史债务一是要有良好的指导文档,二是要重视小工具的建设,方便大家迁移。


伴鱼的基础架构研发更适合使用因地制宜的方式。首先,伴鱼是一家创业公司,并且教育类公司也有自己的特点。例如,伴鱼的服务有固定晚高峰,高峰期服务付费用户,那对于稳定性的要求要非常高,所以伴鱼开展稳定性建设比较早,如自研稳定性组件—Dolphin,提供限流、降级、熔断能力,TiDB、Mongo SDK 静默埋入表级别熔断能力,防止 DB 挂掉;伴鱼中台非常重视效能,现阶段经常会出现测试环境不够用的情况,于是就提供了泳道能力,流量在前端入口、网关处会打上标记,网关之后的服务实例都会带有泳道标识,具有相同泳道标识的流量、服务构成一个完整的测试环境,方便开发人员密集开发需求时,不同需求的测试。


基础架构稳定性措施


其实架构稳定性是个比较大而全的话题,往往也会包含了存储。单体应用时期,架构稳定性更多的是落实到具体组件,如 Nginx、PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)实例数是否够用,与 DB 之间的连通性是不是有问题,排查问题也比较简单。微服务之后,虽然带来了研发、部署的便利性,但也带来了一些问题。伴鱼未来解决这些问题做的如下几个点:


拆分。首先服务的依赖层次必须清晰,微服务经常出现循环调用,继而导致线上连锁反应,这是特别常见的事情。所以,先不用管服务拆分的粒度,循环依赖的事情不能有,层次必须清晰;拆分的另一方面是基础库、基础服务 SDK、业务代码库的层次关系,一定要逐层向上依赖,拆分清晰。


稳定性平台建设。伴鱼设计、开发了 Dolphin 稳定性平台,支持服务治理、SDK、基础服务、基础库的限流、降级、熔断需求,在应对业务突发、异常问题时非常有用。


推动单元测试框架。提升流程自动化水平、减少人为接入,推动业务监控大盘、APM 提升可视化能力,持续推动报警平台建设、接入,不断打磨、优化框架等。


服务治理的点非常多,在特定情况下如何寻找切入点,先做什么、后做什么,如何权衡呢?


“If you can’t measure it, you can’t improve it.” 其实服务治理也是一个研发效能、稳定性提升的过程,如果不可见、不能衡量,也就很难说做的是否正确。徐成选说:“我一般先从监控入手,比如统一业务监控大盘,每个业务系统都可以看到自己某个系统的运行情况。然后,报警也非常重要,尤其是业务发展比较快的时期,很容易出现各类问题。日志规范化越早做越好,为后续跟数据对接做准备。基本的服务治理框架必不可少,后面可以边对外支持,边迭代开发,复议代码生成工具(服务)可以很好的解决一些历史代码问题,剩下的就是根据公司需要推出一些基础服务、中间件、平台建设了。“


写在最后:


目前伴鱼已经开启了第二个五年,会继续深耕少儿英语,扩展多学科,走国际化路线,打造有粉丝的互联网教育品牌。在这里,也诚挚欢迎各路大牛加入,我们非常重视技术团队、氛围建设,希望为大家提供一个良好的平台,开心地做事情,感兴趣的同学可以联系。


讲师简介:


徐成选:伴鱼英语 技术中台/基础架构负责人,后端八年,基础架构方向六年,传统行业、互联网都有所经历,曾职于小米、阿里,目前在伴鱼负责基础架构团队。个人对支付系统、服务治理、中间件、分布式系统都有所涉猎,也在学习云原生相关的知识。热爱开源,在小米期间开源了 Gaea,在这之前作为核心开发参与过 Kingshard,目前也在和团队积极参与 TiDB 生态相关的一些孵化项目。


技术会议推荐:


传播前沿技术趋势,分享热门技术话题。阔别半年之久,InfoQ 线下技术大会正式回归!将在 12 月份和 2021 年 1 月份启动三站 QCon 全球软件开发大会,定位深圳、上海和北京。欢迎查看会议日程 https://qcon.infoq.cn/2020/shanghai/schedule


2020 年 10 月 28 日 12:27987

评论

发布
暂无评论
  • 专访蘑菇街七公:25 倍增长远非极限,优化需要偏执狂

    每秒能支撑的峰值订单数是衡量电商系统高并发可扩展能力的重要体现,在电商内提升每秒支撑订单数存在无数的方法,每一个方法都存在各自的优化角度和对应的障碍挑战,如何在一开始根据自身企业的特点选择最合适的优化路径,并其后在这路径上高效贯彻和执行,对于团队尤其是初创团队而言都不是简单的事情。

  • 从 1 到 1000,业务拉锯战中如何打造一支千人精英研发团队

    本文根据张海龙在中国技术开放日苏州站走进同程的演讲内容整理而成。

  • 专访好雨刘凡:甲方需求是云服务产品的驱动力

    8月31日,好雨科技公司推出应用管理平台——云帮社区免费版。该平台基于Docker和Kubernetes开源技术,自2015年3月开始开始正式商业化运作。这个应用管理平台的研发经历了怎样的过程,背后有怎样的故事,为什么现在免费开放使用;带着这些问题InfoQ对好雨的创始人CEO刘凡进行了采访。

  • 从 0 到 1 搭建技术中台之协作方式篇

    中台是最近两年才出现的组织架构形式,一种新的组织架构形式必然会带来协作方式的改变

  • 业务架构没那么容易

    业务架构是一个存在二十多年的概念,很多工程师认为业务架构与技术架构相比,缺乏技术含量,对于工程师的能力增长没有多少帮助。但对于大型科技公司而言,业务架构却非常重要。它是连接企业战略和技术实现的桥梁,是连接业务人员与技术人员的桥梁。基础架构有很多可以复用的通用能力,但业务架构却是千变万化需要针对企业自身业务去设计、生长的。

  • 架构师(3 月刊)

    当微博从一个现象级产品逐渐变成了大家生活中的一种习惯:当微博从明星大V45度仰望逐渐变成了兼容并包百花齐放的媒体平台;当微博见证过华夏大地的悲欢离合;当微博记录了我们每个人的喜怒哀乐;当微博登上春晚,当微博现身新闻联播;微博,早已超越了一个产品一个公司的存在,成为关于国计民生的平台。 在微博飞速发展的背后,是一支精干的技术团队在支撑,微博平台研发团队就是其中一员。我们负责微博的底层基础逻辑维护,以API的形式向PC网站,客户端以及第三方等提供服务,我们负责解决微博的性能、可用性、可扩展性等问题,比如元旦春晚的二十倍峰值的应对,比如高达千亿级别的数据高速存取,比如四个九的服务可用性。 在本期的专题中,我们将会从RPC服务、Redis使用、可扩展的架构等方面和您一同探讨微博的技术体系!

  • 蘑菇街顶天:真诚与尊重是技术团队的管理要点

    关于技术团队的相关话题,大家也都是在摸索中总结出怎样做是好的、怎样又是不可行的;但是可以确定的是:团队这个基础设施的建设是不容忽视的。 本次技术团队访谈,InfoQ 邀请了美丽联合集团副总裁顶天(曾宪杰),请他分享他关于技术团队话题的一些理解与思考。

  • QCon 讲师对对碰——洪小军采访梁宇鹏:就是爱 Golang

    QCon北京2015大会将于4月23日~25日在北京国际会议中心召开。在大会开始之前,InfoQ推出了讲师对对碰栏目,邀请一些技术专家相互采访,今天我们推出的是美图架构平台部门负责人洪小军对环信首席架构师梁宇鹏的采访。

  • 专访徐勇州:对运维工作时刻保持敬畏之心

    2016年7月15-16日,ArchSummit全球架构师峰会将在深圳举行,本届大会上,我们邀请了腾讯织云社交网络运营部平台技术运营中心总监徐勇州老师,前来分享《腾讯织云自动化高效运维体系演进》的内容。

  • 标准化体系建设(下):如何建立基础架构标准化及服务化体系?

    基础架构标准化至关重要,我们在建立标准化的过程中往往存在普遍问题,而这一部分又影响着后续一系列效率和稳定性平台的建设。

    2017 年 12 月 27 日

  • 空中金融 CTO 朱晔:公司初创阶段 CTO 需要做什么?(上篇)

    只有在正确的阶段做正确的事,才能更好地为公司做出贡献

  • SkyWalking 的发展之路:从无名小卒到拥抱全球

    演讲嘉宾 吴晟,华为软件开发云分布式追踪技术专家。 内容介绍 中国开源项目的全球化,起步晚,而且苦难重重。在OSS这个领域,国内更是很少涉猎。那么SkyWalking是怎么样从第一行代码,慢慢成长为如今的Apache孵化器项目,从CNCF OpenTracing到W3C trace context标准,都有SkyWalking的身影。在刚刚的美国之行中,更是得到Google、Microsoft、Zipkin、AppDynamic、New Relic、DynaTrace、Instana等一系列世界顶级公司的尊重与重视,还荣获本次Workshop的热门分享话题,以及MVP。 本次分享,将会复盘演绎SkyWalking发展,4次代码重构与技术升级,以及社区发展之路。希望能够帮助大家,更好的发展自己的开源项目。

    2018 年 9 月 12 日

  • 电商基础架构建设之路

    什么是基础架构?

  • 问题定义概念 - 别被 BuzzWord 给带偏了

    中台是什么?DevOps是什么?

  • 小米研发效能演进之路

    演讲嘉宾王福 小米人工智能与云平台架构师内容介绍在微服务、DevOps和人员扩张等背景下,如何在保证研发质量的情况下尽可能提升研发效率,成为通用架构与工具团队新的使命。小米通用架构与工具团队结合业界经验和小米实际情况,走过了一条从使用开源产品、采购商业软件到自研核心平台组件的实践道路。内容大纲 创业公司的开源研发效能工具采用之路; 商业软件采购与融合; 山穷水复:研发效能关键组件和平台研发; 小米研发效能能力落地与规划。

    2019 年 1 月 24 日

  • 我的移动互联网十年经历(二):新浪微博时期

    如果事情有变坏的可能,不管这种可能性有多小,它总会发生。

  • 小米移动端深度学习框架实践

    演讲嘉宾何亮亮,小米 深度学习框架负责人内容介绍随着深度学习领域的快速发展,以及移动端芯片计算能力的逐步提升,设备端上的深度学习推理正在变成一个趋势,一个好用的深度学习框架成为深度学习应用落地的关键。MACE是开源的专门为移动端芯片优化的深度学习框架。本次分享主要介绍MACE在开发和使用中的一些经验总结。内容大纲 设备端深度学习的趋势 设备端深度学习框架的优化方法 (1)性能优化(2)内存优化(3)框架精简(4)模型加载(5)模型安全 小米设备端深度学习应用场景举例

    2019 年 1 月 7 日

  • 互联网产品 + 大数据产品 = 大数据平台

    如何才能弥补这互联网和大数据系统之间的差异呢?解决方案就是将面向用户的互联网产品和后台的大数据系统整合起来,也就是今天我要讲的构建一个大数据平台。

    2018 年 12 月 27 日

  • 电商搜索系统质量保障体系建设

    演讲嘉宾李友科,京东 商城搜索与推荐平台部架构师内容介绍背景:电商搜索的主要对象是商品,目标是用户精确找到商品,卖家有机会曝光商品,商城构建良好的生态。围绕这个三个核心业务指标,系统稳定、结果精确、研发效率、排序效果,既是电商搜索系统研发的目标,也是挑战。几个具体的例子,从规模上,有30多个搜索系统,服务3亿+活跃用户;数据量上,商品量数十亿;人员上,开发和测试比 12:1,北京、深圳和硅谷多地协调。实施后效果:质量保障体系建设起来后,200+研发团队协同开发,平均每周上线40多个功能,平均迭代速度5-6天;其中算法ab,每天多次上线。快速把业务需求转化成收益,同时保证系统的稳定、业务的 KPI 和用户体验。解决方案选型:质量保障体系有几个特点:服务化、自动化、智能化。服务化,解决是 测试/开发占比低、异地协同的问题。自动化,主要是提高研发、测试和部署速度。智能化,主要是对搜索结果精确、排序效果的评估,发现业务 KPI 异常、badcase。方案介绍: 服务化(platform as a service),提供自助部署 All-in-one min 集群的服务、code review 服务、性能压测服务、diff 评估服务、搜索效果评估服务、个性化评估服务。 自动化:完整的持续集成流水线,包括:precomit、component、deploy、test;为了提高部署效率,对AB集群搭建持续部署流水线。智能化:是把人工标注的、用户投诉和反馈的体验问题,转化为人工智能识别的特征与标注类别,最终通过监督学习的方法进行模型训练,把训练好的模型用来检测搜索效果问题,最终人工对人工智能预测出的效果问题进行二次评价和处理,并反馈给模型持续训练。 另外,强调2点:一个是流程规范,一个是可运维和可运营。流程规范就是把研发有序组织起来研发和交付,是形成意识培养文化,服务化、自动化和智能化是帮助流程规范落地;整个质量保障体系,能否落地关键是可运维和可运营。内容大纲 质量保障体系 电商搜索业务场景和问题挑战 电商搜索质量保障体系实践 3.1 服务化 3.2 自动化 3.3 智能化 电商搜索质量保障体系难点 规范流程制定和落地、可运营和可运维

    2019 年 1 月 2 日

  • Uber 的 SRE 实践

    这几年,Uber成为了硅谷的一颗耀眼之星,它的全球业务呈现了爆发式增长,现在已经覆盖超过570座城市,如何为超过2000个微服务以提供稳定可靠高性能的计算存储支持是整个Infrastructure部门的工作重心,而其中SRE部门又是守护系统稳定的最后一道防线。Uber在很早之前就组建了SRE团队,为了了解Uber内部的SRE实践体系,InfoQ记者采访了Uber SRE存储部门高级工程师孟飞。

发现更多内容

if语句

拾贝

论一个前端工程师的自我修养

萧文翰

ios android 开发者 前端 Web

食堂就餐卡系统设计

Season

极客大学架构师训练营

[Go] 写一个守护协程的通用套路是什么?

eddix

golang pattern

架构课程心得

dj_cd

极客大学架构师训练营

食堂就餐卡系统设计

于成

食堂就餐卡系统设计

Lane

架构师训练营第1周学习总结

Season

极客大学架构师训练营

架构师训练营作业

邵帅

架构师训练营第一周总结

邵帅

游戏夜读 | 毛利率有多少?

game1night

架构设计作业1——食堂就餐卡系统设计

Andy风

剖析Golang Context:从使用场景到源码分析

伴鱼技术团队

golang 源码分析 并发编程 程序语言 Context

【大厂面试04期】讲讲一条MySQL更新语句是怎么执行的?

NotFound9

MySQL 数据库 后端

再下一城 三六零收购织语CCwork深化“智慧办公”生态布局

人称T客

讲一个程序员如何副业月赚三万的真实故事

非著名程序员

程序员 独立开发者 副业赚钱 提升认知

初步架构想法

极客大学架构师训练营

架构师训练营作业--Week1

吴炳华

极客时间第0期架构师训练营第一周总结

2流程序员

UML 建模

师哥

架构师训练营第一周总结

Hugo

8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

古时的风筝

函数式接口 Lambda stream Java 25 周年

switch 语句

拾贝

神奇的梦想

泰稳@极客邦科技

身心健康 个人成长 目标管理

比Webpack更高效的Rollup入门指南

费马

Rollup 打包 前端工程化 webpack

数据类型转换

拾贝

重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

小傅哥

设计模式 小傅哥 重构 代码质量 代码坏味道

「架构师训练营」Week01 作业+总结

PowerZhang

极客大学架构师训练营

第一周.UML课后作业

西柚

UML

四个和成长有关的小故事

泰稳@极客邦科技

团队管理 TGO鲲鹏会 团队组织 职业成长

解决出海网络难题 融云保障 MiniJoy 千万印度用户流畅互动

Geek_116789

伴鱼英语基础架构怎么做?-InfoQ