点击空白处退出提示
作品详情
技术模块简介
1、主要分为平台类型管理员、教师教务人员、学生等三大类用户角色。平台类型管理员可对平台资源进行管理,教师可创建属于自己的课程、资源,学生主要是对于教师分配的课程进行线上学习。使用 Spring Security 进行认证、授权、审计。
2、平台主要分为用户、权限、资源、题库、课程、考试、评测、学习引擎、毕业设计、样例课程、设置中心、标准中心、教学中心、日志中心、统计中心等模块。使用 SpringCloud Alibaba 等相关组件进行开发。
3、随着推广,学校老师学生的增加,一开始的单表承受不住系统访问存储压力;开始对数据进行分析,识别出核心数据和非核心数据,冷热数据等;强事务特性的核心数据还是采用 mysql 进行管理,从单表->分库分表,又经历了分库分表的扩容;随着数据量增多,单表或者分库分表都满足不了业务的检索需求,并引入 ES 进行所有;日志数据量大使用 Mongodb 进行存储;有部分快照信息使用 Hbase 进行存储;数据异构使用 Canal 监听 binlog 全量增量同步,并在增量同步一段时间后进行数据验证,验证数据一致后关闭原来的数据通道。
4、题库、资源数据量很大,这两项也是平时访问量最大的,所以引入了 Redis 分摊数据库的访问压力;在实践过程中发现了一些问题:缓存击穿、缓存穿透、缓存雪崩、修改并发冲突等,并采取了措施进行改善;对比基本 Redis 操作进行了优化:慢查询分析、基于 pipeline 和 lua 的多指令性能优化、连接池优化、持久化优化、缓存淘汰优化、基于缓存时间的数据冷热分离、节约内存使用优化等。
5、有些业务流程比较冗长,访问压力比较大时导致机器资源、数据库等压力过大,识别分析出业务流程出不需要实时完成的业务;很多服务之间通过 RPC 强耦合调用;通过Rocketmq 慢慢消费业务进行异步削峰处理,提高接口性能;通过 Rocketmq 事务消息实现本地事务和消息发送的最终一致性;平台有一些活动:比如给所有用户、指定用户赠送题库试卷、课程学习等,通过 Rocketmq 分批次异步消费,进行削峰处理;对于 Rocketmq 消息发送、消费等进行了性能调优:比如通过 tag 过滤、增加消费者实例、增加消费者并发消费线程数、批量发送消费消息等。
6、开发过程中使用标准化流程,DevOps + 持续集成 +持续交付相关组件,对于代码检测提交评审;使用 Docker、Kubernetes 进行容器化部署。
7、使用 Sentinel 进行多层级限流:网关流控、集群流控、资源流控、热点发现,对于业务中依赖服务出现故障进行熔断降级处理,保证整体系统的稳定性和可用性。
8、对微服务治理进行相关治理:使用 SkyWalking 进行服务调用链路的追踪;Prometheus 对中间件机器、服务机器的资源进行监控报警;使用 ELK 进行日志分析;异常治理、开发规范、MQ 治理等;
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论