【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

  • 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:271850

评论

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

【View系列】View事件分发源码探索,android高级开发实战

android 程序员 移动开发

【中级—,一线互联网架构师设计思想解读开源框架

android 程序员 移动开发

【干货】2021Android高级开发面试宝典以及答案整理1,透彻分析源码

android 程序员 移动开发

【性能优化实战】都知道小程序FMP优化实录,android音视频开发何俊林

android 程序员 移动开发

【译】使用Kotlin从零开始写一个现代Android-项目-Part1

android 程序员 移动开发

华为云·核心伙伴开发者训练营第七期开营,共赴产业云美好明天!

华为云开发者联盟

华为云 鲁班会

【自学Flutter】32 交错动画的使用,掌握这个提升路径,

android 程序员 移动开发

【译】使用Kotlin从零开始写一个现代Android-项目-Part1(1)

android 程序员 移动开发

【译】彻底理解 Android 中的阴影(1),apk优化签名

android 程序员 移动开发

【中级—(1),flutter面试题

android 程序员 移动开发

浪潮云说 | “缓”而不慢,内存数据库Redis

浪潮云

云计算

【扔物线】消失这半年,讲的真详细

android 程序员 移动开发

【收藏】2021年Android跳槽大厂必备宝典(2),移动混合开发技术

android 程序员 移动开发

【收藏】2021年Android跳槽大厂必备宝典,阿里大牛整理

android 程序员 移动开发

【最强】Android 项目集成 Flutter 实战分享,android开发笔试题

android 程序员 移动开发

【Kotlin篇】多方位处理协程的异常,Android高级工程师进阶学习—Android热修复原理

android 程序员 移动开发

Microchip推出面向家用电器市场的电容式触摸屏控制器系列产品

学会会声会影,轻松成为视频剪辑达人

懒得勤快

【自学Flutter】1,详解Android架构进阶面试题

android 程序员 移动开发

创新赋能助力品牌崛起 恒洁开启品质卫浴新未来

【干货】Android BAT高级面试必问36题以及算法合集,android视频开发框架

android 程序员 移动开发

【Java转Android】58,讲的太清楚了

android 程序员 移动开发

极光笔记丨数据质量建设实践

极光JIGUANG

大数据 数据质量 数据质量指标

【设计思想解读开源框架】热修复设计-,卑微打工人

android 程序员 移动开发

【译】彻底理解 Android 中的阴影,三年经验Android开发面经总结

android 程序员 移动开发

【Jetpack篇】协程,腾讯T3团队整理

android 程序员 移动开发

Java程序员必备的辅助开发神器(2022年版),建议收藏

Tom弹架构

Java 开发工具

【包学包会】从一次请求开始,android蓝牙开发视频

android 程序员 移动开发

【干货篇】Android各版本拦截进程对AMS的请求实战,移动互联网开发技术就业前景

android 程序员 移动开发

【开发12年码农教你】Android端简单易用的SPI框架-,写给程序员的Flutter详细教程

android 程序员 移动开发

【收藏】2021年Android跳槽大厂必备宝典(1),android教程零基础入门

android 程序员 移动开发

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