笔记 2022-12-06
微信业务功能架构
如下图所示
架构设计
架构方案一
单节点-单层-多服务-本地内网穿透
方案一说明
"能够支撑管理 1000 个学生",4 个核心模块左右。按性能能估算,开发测试用的普通机器能够直接承担业务量。整体的技术复杂度和业务复杂度都低。符合合适原则为主,符合演化原则;
"大家都会 Java, 但是有一个是 PHP 高手" & "要求至少 3 人合作完成",前端展示可直接使用 php 开发,部分业务实现功能也可以使用 php 开发,直接入库。其余模块功能直接开发 java 单机服务,无需引入微服务等复杂功能。符合简单原则,但不符合合适原则;
"今年学校毕业设计要求提升,要求做真正可运行的学生管理系统",考虑到为毕业设计级别的项目,理论上无需考虑复杂的扩展性,符合演化原则,但不符合合适原则;
"要求可以通过公网域名访问", 需要使用 dns 服务,目前国内外均有不少免费的 dns 服务,或者可通过免费二级域名进行直接使用,满足合适原则。
"答辩的时候会根据架构方家来进行打分,不推荐太简单和太复杂的方案",防止过于简单还是,拆分了两个 nginx 服务,一个 nginx 服务处理 web 页面,一个 nginx 反向代理 java 服务,供 php 主体服务使用,内部需要处理跨域等,符合合适原则,不符合简单原则。
"大家经济条件一般",此处采用内网穿透临时方案,本机运行模拟测试,减少购买至少一个月的云主机量,仅使用最低配云主机,做公网转发。如果学院可提供公网地址,此步骤可省略,符合合适原则、简单原则,不符合演化原则。
架构方案二
多节点-多层-多服务-云主机
方案二说明
"能够支撑管理 1000 个学生",考虑到学校总人数虽然可能只有这么多,但是每年会不断有新生加入和学生毕业、长期运行下各种数据总量会不断上升,增加云数据上的主从实现读写分离,同时定期备份从库数据到冷数据。部分数据符合合适原则为主,不符合演化原则,不符合简单原则;
"大家都会 Java, 但是有一个是 PHP 高手" & "要求至少 3 人合作完成",前端展示直接使用 php 开发,前后端分离,前端部分单独部署。其余模块功能直接开发 java 集群服务,4 个核心模块左右,逻辑不复杂,暂时无需引入微服务等复杂功能。符合合适原则,但不符合简单原则;
"今年学校毕业设计要求提升,要求做真正可运行的学生管理系统",全部服务上云主机,可直接公网访问,集群部分可增加减少主机以满足性能要求,符合演化原则,但不符合简单原则;
"要求可以通过公网域名访问", 需要使用 dns 服务,目前国内外均有不少免费的 dns 服务,或者可通过免费二级域名进行直接使用,满足合适原则。加上全部上云后,可直接使用云主机厂商对应服务。不符合简单原则
"答辩的时候会根据架构方家来进行打分,不推荐太简单和太复杂的方案",拆分了一个 nginx 服务处理 web 页面,多个 java 服务集群,供 php 前端使用,内部需要处理跨域等,符合合适原则,不符合简单原则,不符合演化原则。
"大家经济条件一般",此处采用完整的线上云主机部署模式,费用增加陡升,部署难度增加,不和符合合适原则、简单原则,符合演化原则。
版权声明: 本文为 InfoQ 作者【mklop】的原创文章。
原文链接:【http://xie.infoq.cn/article/4872ff9047459e90c13e9e94d】。文章转载请联系作者。
评论