微信业务架构,学生管理系统架构设计
微信业务架构
学生管理系统设计
系统根据以下原则进行设计:
使用学校已有的 DNS 获得公网域名。
1000 个学生,学生总数量也不会增加太多,因此无需太高性能。
但为防止数据丢失,需要数据备份,系统有可用性需求。
以后可能需要扩展系统功能,同时需要拆分系统模块实现协作,系统有可扩展性需求。
大部分学生信息是可公开的(比如注册课程,考试信息,学生基本信息),没有安全性需求。但系统需要管理权限,保证只有管理员可以修改学生信息,而学生登陆只可读和可选课。
设计方案一:
一台业务服务器足够支撑 1000 人的访问量(也容许短暂系统不可访问,不影响学校教学)
拆分子系统,统一使用 Java 开发所有子系统,放在同一台业务服务器。即便于协作,也节约成本。
数据库使用免费开源 MySQL,使用主备架构,保证数据不丢失。
设计方案二:
用 DNS 绑定单一服务器 IP 地址,节约成本。
分拆两个子系统协作,分别放在两台服务。学生管理子系统放在业务服务器 1,由组内 PHP 高手独立开发。课程考试子系统放在业务服务器 2,使用 Java 开发。业务服务器 1 需要把课程和考试相关的请求转发给业务服务器 2 处理。
两台服务器子系统间通过 HTTP/RESTful 协议通信协作
数据库仍然使用免费开源的 MySQL,主备架构,保证数据不丢失。
设计选择:
选择“设计方案二”,有以下几点原因,
方案二有两台业务服务器,系统复杂度会稍微增加,但优点是能充分利用组内 PHP 高手的能力,提升完成率和可扩展性,符合合适原则。两台服务器,无需过多系统拆分(符合简单原则)。
方案二另一个缺点是多一台业务服务器带来的成本增加,但两台服务器也带来性能提升,同时方便扩展,比如升级课程考试子系统时,学生管理仍可以在线服务,减少系统不可用时间(有利于系统演化)。
评论