本文来源:腾讯技术工程(id:Tencent_TEG)
前言最近几年注定是不平凡的时间,虽疫情肆虐,但我国互联网产业展现出巨大韧性,不仅为精准有效防控疫情发挥了关键作用,还在数字基建、数字经济等方面取得了显著进展,成为我国应对新挑战、建设新经济的重要力量。
腾讯在线教育部后台中心团队,作为在线教育行业的从业者,我们尝试整理一下后端技术要点,以此窥探后台未来技术的发展趋势:
云计算进程提速,一切皆服务。云上安全越来越受到企业的重视。从资源云向业务云化转变,最终全面云原生化。微服务、DDD、中台技术并非企业技术架构设计的银弹。Python、Go、Rust成为后端未来最先考虑学习编程语言。Go语言生态发展稳健,越来越多企业在生产中使用Go语言落地业务。疫情催化在线教育行业产品升级转型,音视频技术不断迭代升级。云原生1.业内趋势云原生技术生态日趋完善,细分项目不断涌现
云原生关键技术正在被广泛采纳,如43.9%的用户已在生产环境中采纳容器技术,超过七成的用户已经或计划使用微服务架构进行业务开发部署。
容器云平台将传统云计算的IaaS层和PaaS层融合
从技术角度看,容器云平台采用容器、容器编排、服务网格,无服务等技术构建的一种轻量化PaaS平台,为应用提供了开发、编排、发布、治理和运维等全生命周期管理。
容器云平台的整体架构,自下而上包括交互(UI)层、接口(API)层、PaaS服务层、基础层。运维和安全则涵盖了从应用层到容器云引擎层的部分:
交互层:提供界面供用户使用接口层:提供OpenAPI能力供第三方调用PaaS服务层:提供数据服务、应用服务(微服务、中间件)、DevOps、平台管理、平台运营、应用管理能力,为实现业务应用其自身的生命周期管理基础层:以Kubernetes为核心,包括服务网格(ServiceMesh)、无服务计算(Serverless)、容器引擎(Docker)、容器镜像管理等,主要实现对计算、网络和存储资源的池化管理,以及以Pod为核心的调度和管理。服务网格为微服务带来新的变革
Mesh化加速业务逻辑与非业务逻辑的解耦,将非业务功能从客户端SDK中分离出来放入独立进程,利用Pod中容器共享资源的特性,实现用户无感知的治理接管。
从资源云向业务云化转变,最终全面云原生化
云原生技术通过标准化资源,轻量化弹性调度等特征,应用场景较为广泛,随着技术和生态不断成熟和完善,有效缓解企业上云顾虑,拉动全行业的上云程度。
云原生技术栈的标准统一化
架构标准统一(微服务之间标准API接口通信)、交付标准统一(标准容器化的打包方式实现真正的应用可移植)、研运过程标准统一(DevOps工具链标准统一),通过标准化后提整体研发运维效能。
2.在线教育实践enterimagedescriptionhere各类PaaS服务上云
年我们完成了IaaS、存储层、直播、回放以及各类PaaS服务的上云。
服务全面容器化升级
年我们重点进行服务全面的容器化升级,目前已经完成企鹅辅导和开心鼠英语两个产品的全面改造,到年底会完成腾讯课堂剩余部分的升级,实现全面完成改造。
完善DevOps流程
完善CI/CD/CO、蓝盾流水线、容器化、STKE、全链路监控等,提高研发效率,降低现网运营难度
业务中台架构演进
在整体架构上,我们依托腾讯云,确定了教育业务中台的架构演进方向,不断的进行重复模块的抽象和整合。我们在腾讯云上实现部署了接入中台、Push中台、支付中台、音视频中台、运营中台等服务,让各个业务之间的相似能力得以复用。
存储层上云
存储层上云后,一方面稳定性提高。
异地容灾。通过挂载异地的灾备机器,可以实现master主机异地灾备。负载均衡。服务连接RO组,RO组的多个实例会对请求进行负载均衡。数据备份。RO发生异常,将会被剔除RO组,恢复后自动加入RO组,保证了RO组的可用性。数据加密。提供透明数据加密(TransparentDataEncryption,TDE)功能,透明加密指数据的加解密操作对用户透明,支持对数据文件进行实时I/O加密和解密,在数据写入磁盘前进行加密,从磁盘读入内存时进行解密,可满足静态数据加密的合规性要求。另一方面运营能力也有所提升。
可以实时看到数据库连接情况,慢查询、全表扫描、查询、更新、删除、插入情况实时CPU、内存、磁盘使用情况,并根据设置阈值进行告警优化微服务架构下面是在线教育上云前后架构对比
微服务微服务,ServiceMesh在过去的一年依旧保持着热度。在已经过去的,微服务可以说有坚守也有破局,有对服务微化共识的形成也有对特殊场景的理性思考。我们可以看到服务框架依然在持续演进,奔向云原生,拥抱云化。越来越多的企业开始跟上服务化云化步伐。
微服务框架:加速奔向云原生
SpringCloud
年开始Hystrix、Ribbon等核心组件相继进入维护状态,开发者们一度变得忧心忡忡,时至今日我们回过头来再看一下,SpringCloud已经针对这些担忧给出了解决方案,Zuul由SpringCloudGateWay子项目替代,Hystrix由SpringCloudCircuitBreaker替代,同时也给出了长期的演进方案。在经历了这段小小的波折后,SpringCloud也改变了策略,将这些企业贡献的OSS库独立出来成为其子项目。目前我们可以看到有Azure,Alibaba,Amazon等3个带有企业名字的子项目,这种策略在某种程度上可以说解绑了企业开源策略对开源核心组件的影响。截至目前SpringCloud下面的子项目已经新增至34个,越来越庞大。供开发者选择的组件越来越多。
Dubbo
年05月20日Dubbo毕业,成为Apache的顶级项目,在过去的一年社区还是非常努力的,一年release5个版本,加速奔向云原生。在2.7.5版本中,其服务模型调整以及协议支持调整带来的新旧版本兼容问题,稳定性等问题值得我们持续