流量暴增,掌门教育如何基于SpringCloudAlibaba构建微服务体系?

作者|童子龙掌门教育基础架构部架构师

阿里巴巴云原生公众号后台回复818即可获取直播回看地址和大会PPT合集。

掌门教育自2014年正式转型在线教育以来,秉承“让教育共享智能,让学习高效快乐”的宗旨和愿景,经历云计算、大数据、人工智能、AR/VR/MR以及现今最火的5G,一直坚持用科技赋能教育。掌门教育的业务近几年得到了快速发展,特别是今年的疫情,使在线教育成为了新的风口,也给掌门教育新的机遇。

随着业务规模进一步扩大,流量进一步暴增,微服务数目进一步增长,使老的微服务体系所采用的注册中心Eureka不堪重负,同时SpringCloud体系已经演进到第二代,第一代的Eureka注册中心已经不大适合现在的业务逻辑和规模,同时它目前被SpringCloud官方置于维护模式,将不再向前发展。如何选择一个更为优秀和适用的注册中心,这个课题就摆在了掌门人的面前。

经过对AlibabaNacos、HashiCorpConsul等开源注册中心做了深入的调研和比较,以下是各个注册中心的特性对比:

结论:Nacos满足目前掌门的服务治理技术栈,能实现注册中心的平滑迁移,社区发展非常活跃,所提供的特性,使得围绕SpringCloudAlibaba&Nacos能够非常方便的构建云原生应用的动态服务注册发现。

掌门的应用环境分为4套,DEV、FAT、UAT、PROD分别对应开发、测试、准生产环境、生产环境,因此NacosServer也分为4套独立环境。除了DEV环境是单机部署外,其他是集群方式部署。对外均以域名方式访问,SLB做负载均衡,包括SDK方式连接NacosServer和访问NacosServerDashboard控制台页面。

Nacos数据模型由namespace/group/service构成。可以通过创建不同的命名空间,做到同一个应用环境的基础上更细粒度的划分,隔离服务注册和发现。在某些场景下,开发本地有需要连接测试环境的NacosServer,但其他测试服务不能调用到开发本地,这时候可以将NacosDiscoveryProperties的enabled属性设置为false。

NacosServerDashboard用户首次登陆时,默认分配普通用户(即非ROLE_ADMIN)角色,对查询以外的按钮均无操作权限,以免出现误操作导致服务非正常上下线。

NacosServerDashboard页面增加服务总数及实例总数的统计,该信息每5秒刷新一次。

基于公司现有的Prometheus、Grafana、AlertManager从系统层监控Nacos。

根据Nacos监控手册,结合Prometheus和Grafana监控Nacos指标。

将Nacos多模块的日志统一按info、warn、error级别合并,定义schema字段标记不同模块,按JSON格式滚动输出到文件,供ELK采集展示。

总结:NacosServer是3台1C4G集群,同时承受1499个服务和12715个实例注册,而且CPU和内存长期保持在一个合适的范围内,果真Nacos性能是相当OK的。

经过研究,我们采取了官方的NacosEurekaSync方案,在小范围试用了一下,效果良好,但一部署到FAT环境后,发现根本不行,一台同步服务器无法抗住将近660个服务(非实例数)的频繁心跳,同时该方案不具备高可用特点。

既然一台不行,那么就多几台,但如何做高可用呢?

这个方案是个小插曲,当一台同步服务器挂掉后,由它的“备”顶上,当然主备切换也是基于Zookeeper临时节点的Watch机制来实现的。后面讨论下来,主备方案,机器的成本很高,实现也不如一致性Hash优雅,最后没采用。

折腾了这么几次后,发现同步业务服务列表是持久化在数据库,同步服务器挂掉后ReHash通知机制是由Zookeeper来负责,两者能否可以合并到一个中间件上以降低成本?于是我们想到了Etcd方案,即通过它实现同步业务服务列表持久化+业务服务列表增减的通知+同步服务器挂掉后ReHash通知。至此方案最终确定,即两个注册中心(Eureka和Nacos)的双向同步方案,通过Etcd来做桥梁。

注册中心迁移目标:

注册中心迁移原则:

服务一致性Hash分片路由:

同步节点宕机故障转移:

从如下界面可以保证,从Eureka或者Nacos上,新上线或者下线一个业务服务(非实例),都能让NacosEurekaSync实时感知。但我们做了更进一层的智能化和自动化:

从如下界面可以监控到,业务服务列表是否在同步服务的集群上呈现一致性Hash均衡分布。

Solar微服务体系,囊括微服务治理组件,中间件以及基础组件易用性封装,告警监控体系等,连接着掌门业务服务和底层基础设施,每项服务都遵守强有力的合约,向着云原生微服务架构方向演进。

THE END
1.微服务详解微服务架构是一种软件开发架构风格,它将系统功能拆分为多个独立的小型服务,每个服务专注于完成一个特定的业务功能,并通过轻量级通信协议(如 HTTP/REST、消息队列)进行交互。这种架构风格以模块化、解耦、独立部署为核心,广泛应用于现代软件开发中。 1.微服务的核心特点 https://blog.csdn.net/T_Y_F_/article/details/144245207
2.微服务架构设计模式:从服务拆分到服务组合,架构模式指南微服务架构设计模式 服务拆分 基于业务边界划分:将应用程序拆分为小型服务,每个服务都围绕着特定的业务边界进行构建。 基于功能拆分:根据应用程序的功能将服务进行拆分,例如用户管理服务、支付服务等。 通信机制 使用HTTP协议和RESTful风格的API进行服务之间的通信。 https://www.jianshu.com/p/71c55e46cae5
3.在线教育机构组织架构在线教育系统架构在线教育系统,分为前台网站系统和后台运营平台,B2C模式 开发。 项目前后端分离开发,后端采用SpringCloud微服务架构,持久层用的是MyBatis-Plus,微服务分库设计,使用Swagger生成接口文档。 前台用户系统包括:首页、课程、讲师、问答、文章等几大部分。 后台管理系统包括:讲师管理、课程分类管理、课程管理、统计分析、Banner管https://blog.51cto.com/u_56701/11553184
4.阿里云上云解决方案汇总,多种技术与行业解决方案助力企业上云阿里云上云解决方案有哪些? 目前阿里云发布的的解决方案有前端Web和移动应用程序开发、网站搭建、网络组网、数据库、迁云、云上运维、微服务、中间件、容器与K8S、Serverless、计算视觉、语音处理、自然语言处理、机器学习、数据分析、HPC、安全&合规、容灾&备份、CDN&视频云、安全办公、专有云、物联网等22种不同场景https://www.tengxunyun8.com/5468.html
5.基于Java的在线教育平台设计与实现.docx3.4.5微服务设置20 3.4.6数据库功能实现20 3.5安全问题21 3.6本章小结21 第4章系统测试22 4.1测试方法22 4.2人工测试22 4.3压力测试23 4.4性能优化24 4.5测试结论25 4.6本章小结27 结论28 致谢29 参考文献30 基于Java的在线教育平台摘要:现在的科技发展迅速,网络技术在不断的前进,随之而来的就是被网络技术所带https://max.book118.com/html/2022/0604/6015002220004153.shtm
6.通区扁担沟同利燕宝小学人人通空间教育信息化2.0是教育信息化发展到一定阶段的产物,可从三个维度来理解:一是时间维度的表象概念,将改革开放至今的教育信息化称为1.0时代,将开启新时代的教育信息化称为2.0时代[3];二是基于目标维度的内涵概念,教育信息化2.0是整个教育生态的重构,通过颠覆性地改变传统的教育模式和方法,最终致力于实现教育的现代化[4]http://tx.nxeduyun.com/index.php?r=space/school/theme/content/view&id=1048892
7.基于微服务和TCC分布式事务的在线教育平台设计方法研究第19 卷第 2 期 2020 年 6 月 南通航运职业技术学院学报 JOURNAL OF NANTON南G 通VO航CA运TI职ON业AL技&术T学EC院HN学IC报AL SHIPPING COLLEGE doi: 10.3969/j.issn.1671-9891.2020.02.011 Vol.19 No.2 Ju2n0.2200年20 基于微服务和 TCC 分布式事务的在线教育平台 设计方法研究 李经纬 1,韩树河 2 (1https://hyxb.jssc.edu.cn/oa/pdfdow.aspx?Sid=111
8.在线教育风口已来,这几个开源项目不能错过Gitee项目推荐项目简介:领课教育(roncoo-education)是基于领课网络多年的在线教育平台开发和运营经验打造出来的产品,致力于打造一个各行业都适用的分布式在线教育系统。系统采用前后端分离模式,前台采用vue.js为核心框架,后台采用Spring Cloud为核心框架。系统目前主要功能有课程点播功能,支持多家视频云的接入,课程附件管理功能,支持多家https://cloud.tencent.com/developer/article/1589844
9.天机学堂在线教育平台成功案例案例背景 天机学堂是一个基于微服务架构开发的在线教育平台,旨在为学生和教师提供高质量的教育资源和学习体验。平台包括视频课程、在线学习工具、互动讨论和学习社区等功能。学生可以根据自己的学习需求选择课程并参与在线学习。教师可以创建和管理课程内容,并与学生进行互动和评估。亮点https://www.zbj.com/al/682479.html
10.媒体融合论文要想让体育新闻有更多的观众,促进体育新闻的发展,就要积极转变原来传统的单一传播新闻模式,让大众也能够参与到新闻讨论中来,利用多种平台,让大众能够对体育赛事发表自己的看法与见解,让大众也有权利发表新闻,关注受众的精神需求。让消费者满意,这是任何一个商业社会都不能违背的真理,体育事业也如此,要满足大众的需要,https://www.ruiwen.com/lunwen/6434108.html
11.在线教育平台系统架构图流程图模板在线教育平台技术架构 spring cloud 微服务 在线教育 架构 系统架构 作者其他创作 大纲/内容 支付系统 路由分配 搜索服务 监控后台 公共服务 任务调度 Skywalking链路追踪 文档服务 网关 作业管理 终端设备 流程引擎 harbor 客户系统 在线教育平台架构 Sentinel熔断限流 触达中心 ELK日志中心 前端层 HDFS 报表服务 https://www.processon.com/view/5f05966c5653bb2925d44652
12.巨推学院【巨推学院】专注于营销、推广、运营、SEO人才的在线教育培训平台。有SEO培训,营销推广培训,新媒体营销培训,社群运营培训,网站运营培训等https://www.jutuiedu.com/
13.微服务教程:从入门到实践实际项目中的微服务应用微服务架构在实际项目中有着广泛的应用,例如:电商平台:将订单、支付、库存等业务拆分为多个微服务。 在线教育平台:将课程管理、用户管理、支付等业务拆分为多个微服务。微服务设计中的常见问题及解决方案服务间通信: 使用消息队列和异步通信可以提高系统的稳定性和响应速度。 示例代码:使用RabbitMQ进https://www.imooc.com/article/372841
14.山东省教育云平台登录入口官网(山东省教育云平台登录入口手机版家长关注“潍坊教育微服务”微信公众号,登录“潍坊教育微服务平台”后进行查询预约。成绩发布后,系统通过微信消息推送到预约查询的微信号(或通过短信发送到手机)。推送时间过后,家长也可再次登录该微信公众号查询成绩。 注意:必须微信关注“潍坊教育微服务”微信公众号,否则无法接收到微信消息推送。 https://www.vsaren.com/79601.html
15.停课不停学!高校开学首日授课平台集体“崩了”线上教育风口持续【停课不停学!高校开学首日授课平台集体“崩了” 线上教育风口持续】艾媒咨询数据显示,2018年中国在线教育用户规模超过2亿人,到2020年有望达到3亿;2018年中国在线教育市场规模超过2500亿元,2020年将超过5000亿元。(券商中国) 在东方财富看资讯行情,选东方财富证券一站式开户交易>> https://finance.eastmoney.com/a/202002181386766621.html
16.头条课头条课_智能在线教育平台提供在线教育私有化解决方案,包括网校系统搭建,在线学习系统源码,网课软件源码,在线教育系统搭建等,涵盖功能全面,直播点播,互动班级,作业打卡,考试题库,推广营销等。http://www.toutiaoke1688.com/
17.在线教育解决方案教育行业教育在线培训解决方案华为云在线培训平台可以智能地将一个云题库与学习需要对接,通过华为云在线协同服务帮助学生完成学习目标;例如学生可以在线学习与自助学习同步的课程云服务,然后同步作答题目,作答完成后由系统智能为你呈现解题过程辅助你提高学习成绩https://www.huaweicloud.com/solution/ces/
18.教育部《高等学校数字校园建设规范(试行)》为深入贯彻落实党的十九大和十九届二中、三中、四中、五中全会精神,扎实推进教育信息化2.0行动计划,积极发展“互联网+教育”,推动信息技术与教育教学深度融合,提升高等学校信息化建设与应用水平,支撑教育高质量发展,特制定《高等学校数字校园建设规范(试行)》。现予发布,请参照执行。 https://jjxy.sszss.com/zcfg/13693.htm
19.社区工作人员工作总结18篇总结是指对某一阶段的工作、学习或思想中的经验或情况加以总结和概括的书面材料,它可以帮助我们总结以往思想,发扬成绩,为此要我们写一份总结。那么总结要注意有什么内容呢?下面是小编收集整理的社区工作人员工作总结,供大家参考借鉴,希望可以帮助到有需要的朋友。 https://mip.oh100.com/a/202303/6312973.html
20.字节点点强大的考试管理系统,使用golang微服务高并发架构,从建立题库到发布考试操作简单快速,支持同时百万级别在线考试。 支持学校解决线上云教学、线下混合式教学;支持企业内部岗位培训、入职培训、学习成果检测;支持培训机构搭建自己的公开课培训平台。 立即免费试用 https://bytedots.cn/
21.学习通电脑版下载2024最新学习通pc版免费下载安装学习通电脑版是一款专业可靠的在线教育平台,基于微服务架构打造,旨在共享与传播知识。学习通电脑版内含超星20余年来积累的海量的图书、期刊、报纸、视频、原创等资源,支持图书馆藏书借阅查询、电子资源搜索下载、学习学校专业课程、小组讨论等功能。学习通电脑版涵盖的知识层面相当广泛,内置超过百万册电子图书、中外文献元数据http://www.onlinedown.net/soft/10002486.htm
22.智能在线教育系统开发:重塑教育未来的创新之路系统设计是智能在线教育系统开发的关键环节。在设计阶段,需要考虑系统架构、功能模块和数据模型等方面。选择合适的系统架构(如微服务架构或云架构)以确保系统的稳定性和可扩展性;划分功能模块(如用户管理、课程管理、学习管理、智能推荐、数据分析等)以明确系统的各项功能;设计合理的数据模型以确保数据的完整性和一致性。https://www.pbids.com/aboutUs/pbidsNews/1861300381218344960