公众号回复'架构'获取架构师电子书及视频课程
目录
背景
架构设计目标
架构设计原则
架构设计方案
背景介绍
(1)历史欠债:现有多条产品线,历史悠久,覆盖用户广,业务量大。但之前的产品受限于时间人力,系统架构简单,且各自为战,不成体系。维护,学习成本高。
(2)问题爆发:2020年在线教育业务爆发增长之下,历史系统架构面对高速增长的流量,力不从心,设计弊端凸显,问题频发,制约业务发展。
(3)未来规划:今年将推出战略级产品智慧教育大脑,整合各产品线;探索开拓C端市场,直面互联网海量用户。
架构目标
(1)高可用:整体系统可用率大于99%,全年系统不可用时间小于12小时。
(2)易伸缩:架构清晰,简单;应用系统之间低耦合,业务功能灵活增减;可以通过水平扩展,快速提升整体性能和可用性。
(3)低成本:开放平台,便捷接入外部服务,同时可对外赋能,创造价值;增强代码复用性,提升开发效率;利用成熟开源技术,降低软硬件成本;
(4)高性能:TOP90的接口响应小于200ms,TOP99的接口响应小于500ms
(5)高安全:防范互联网已知常见威胁和攻击手段;及时响应防范新威胁。
架构设计原则
(1)合适原则:合适优于业界领先。在企业当前人力、条件、业务等各种约束下设计出来的,能够合理地将资源整合在一起并发挥出最大功效,并且能够快速落地。
(2)简单原则:简单优于复杂。如果简单方案和复杂方案都可以满足要求,架构设计应选择简单方案
(3)演化原则:演化优于一步到位。不要贪大求全;软件需要不断变化;不符合业务的架构再领先也没用
(4)稳定原则:稳定高于一切。以稳定为中心,不过度设计
(5)容错原则:容错才能持久。任何架构方案,软硬件平台都会有几率出错。好的架构能抵御错误的影响,从而能给出时间去修复错误。
架构设计方案
(1)应用架构
应用架构
(2)基础架构
(3)服务网络拓扑
负载均衡,网关,微服务,注册中心,配置中心,存储集群,其他
服务网络拓扑
(4)前后端服务框架
简单,稳定,根据业务发展,逐步演进;以微服务为最终目标,逐步迭代。
架构演进
统一技术栈
前端:VUE,APP跨平台框架(uniapp,React native)
后端:JAVA8,SpringBoot,Mysql ,MongoDB,Redis,RabbitMq,Elastic search
标准化,规范化
脚手架:用户管理,角色管理,部门管理,字典管理,代码生成,多数据库适配
管理:建立产品项目研发规范流程:需求,设计,开发,测试,上线。执行编码规范。
模块化公共服务
公共包管理&服务:maven私服,SSO单点登录,工作流,短信,邮件,OAuth2登录,任务调度,推送,规则引擎,配置中心,消息中心
微服务化
微服务&服务治理:注册中心,调用中心,部署中心,日志中心,监控中心,追踪中心。
(5)数据库架构
主流数据库
支持MySQL,MongoDB,Redis ,ES 等主流数据库。
覆盖关系型,nosql型。
满足不同存储需求,支持OLAP,OLTP 业务场景。
服务高可用
一主多从,主库故障,从库自动切换。
数据库实时监控预警。
数据高可靠
定期快照备份,增量备份,快速恢复数据
最小数据权限管控
高性能易扩展
多数据源,读写分离:sharding-jdbc
分区分库分表:sharding-jdbc
(6)研发基础设施架构
代码库规范管理,jenkins自动化部署
测试,生产 环境隔离
持续集成(可选)
基础设施架构
更多推荐
什么是软件和软件架构
软件架构到底是要解决什么问题?
系统架构设计:进程缓存和缓存服务,如何抉择?
架构腐化之谜
“架构”到底指什么
集中式架构与分布式架构,你了解多少?
免责声明:
本公众号部分分享的资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,且仅代表作者个人观点,与本公众号无关,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除。
戳“阅读原文”海量文档免费阅读下载