发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

  • 2020-10-28
  • 本文字数:3155 字

    阅读完需:约 10 分钟

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

今年年初的疫情,让线上教育平台都加大了线上宣传的力度,我也多多少少看过伴鱼英语的广告,于是就关注起来,原来这是一家刚过完了五周岁生日,专注于少儿英语的公司,也获得了 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:271840

评论

发布
暂无评论
发现更多内容

【架构师训练营 1 期】第十二周学习总结

诺乐

数据类型· 第1篇《元组和列表的性能分析、命名元组》

清菡软件测试

测试开发

以理性不断的崇敬 - 对DDD之后复杂业务软件系统设计的思考

冯文辉

领域驱动设计 DDD 架构设计

ReactNative | 项目复盘,涉及环境、RN版本升级、安全等方案

梁龙先森

大前端 混合应用开发 React Native

从面试角度分析ArrayList源码

Java旅途

Java List 面试 ArrayList

新增原创标签相关改动

sean77

aa bb cc

我国一项物联网安全测试技术成为国际标准;Windows 10将支持安卓应用

京东科技开发者

如何搭积木式的快速开发H5页面?

徐小夕

Java 大前端 React 数据可视化

领域驱动设计(DDD)实践之路(四):领域驱动在微服务设计中的应用

vivo互联网技术

架构 领域驱动设计 DDD 领域驱动设计DDD

一鼓作气学会“一致性哈希”,就靠这 18 张图了

四猿外

分布式 算法 一致性哈希 一致性Hash算法 哈希算法

金融科技 | 建设中台能力,助力开放生态

xcbeyond

金融科技 中台战略 中台架构

架构师训练营第四周总结

Geek_xq

喜大普奔,FL Studio终于出官方中文版了!

懒得勤快

编曲 编曲宿主 mid flstudio 汉化

新增原创标签相关改动

sean77

测试 个人 aa bb

【架构师训练营 1 期】第十二周作业

诺乐

Sentinel 是如何做限流的

vivo互联网技术

高可用 限流 底层

Mybatis是如何解析配置文件的?

田维常

mybatis

还在手写Operator?是时候使用Kubebuilder了

Java架构师迁哥

Week_12 作业

golangboy

极客大学架构师训练营

《逻辑和计算机设计基础》第五版(英文原版)PDF免费下载

计算机与AI

计算机基础 计算机组成原理

FORSAGE智能合约矩阵系统软件APP开发

系统开发

浅谈产品与项目之间的爱恨情仇

求求你,别再用wait和notify了!

王磊

Java

数据上链,区块链技术平台搭建

t13823115967

数据上链 区块链应用

Java虚拟机科普系列—元空间Metaspace的内存结构

Java老k

Java JVM Java虚拟机 metaspace

生产环境全链路压测建设历程之九 淘宝网全链路压测的原理

数列科技杨德华

区块链发展前景广阔,要紧跟时代步伐

13828808769

区块链发展 时代发展

时序数据库DolphinDB和TimescaleDB 性能对比测试报告

DolphinDB

大数据 分布式系统 时序数据库 DolphinDB 数据库开发

关于敏捷开发的最佳实践和工具

PingCode

程序人生 敏捷开发 研发管理 管理工具 开发平台

公安一体化警务系统搭建,微警务APP开发

t13823115967

App 智慧公安

京东智联云与CDA携手 共同打造电商领域数字化人才认证标准

京东科技开发者

大数据 数据分析 数据分析师

伴鱼英语基础架构怎么做?_架构_Lucien_InfoQ精选文章