架构实战营模块一作业

/ 默认分类 / 没有评论 / 312浏览
  1. 画出微信的业务架构图

  1. “学生管理系统”毕设架构设计

需求分析:

提供学生/课程/考试/权限功能
要求可以通过公网域名访问
能够支撑管理 1000 个学生

面向复杂度分析:

高性能:除了很少的时间段可能会有高访问量,大部分时段访问量不高,因此不需要重点考虑高性能。
高可用:重点考虑,数据不允许丢失,服务允许短时间停用,不允许长时间停。
扩展性:不太需要考虑架构扩展性,因为学生人数不会短时间内暴涨。新增功能也不会很复杂。
成本/安全:公网访问需考虑网络安全,项目团队经济一般因此需考虑成本。

备选方案一:

公网访问由学校现有 DNS 服务提供转发。
业务服务器实现学生管理系统的主要业务功能(学生/课程/考试/权限管理),由于大家都会 Java,采用 Java 技术栈开发实现功能,团队成员分模块开发。
业务服务器配置两台虚拟机实现应用的高可用。
为保证存储的高可用、数据不丢失,数据库采用虚拟机部署 MySQL 主备节点的方式存储数据。
为避免在高峰时段,数据库压力过大,采用 Redis 作为缓存减轻数据库压力,提升系统处理能力。同时为了避免 Redis 单点故障,以三台虚拟机配置 Redis 集群。

备选方案二:

公网访问由学校现有 DNS 服务提供转发。
业务服务器实现学生管理系统的主要业务功能(学生/课程/考试/权限管理),由于大家都会 Java,采用 Java 技术栈开发实现功能,团队成员分模块开发。
在业务服务器的功能模块中增加“网关功能”,提供网络安全和限流的功能。系统面向公网提供服务,所以需要考虑网络安全策略。请求会有瞬时高峰,因此可以采用限流策略,一定程度上可以去掉缓存。所有提交到业务服务器的请求都需要先经过网关模块。网关模块不独立部署服务器而集成在业务服务模块,主要是出于部署简单和降低成本的角度考虑。
业务服务器配置两台虚拟机双活实现应用的高可用。
为保证存储的高可用、数据不丢失,数据库采用虚拟机部署 MySQL 主备节点的方式存储数据。

备选方案三:

公网访问由学校现有 DNS 服务提供转发。
用前置的独立服务器实现“网关功能”,提供网络安全和限流的功能。系统面向公网提供服务,所以需要考虑网络安全策略。针对瞬时的请求高峰,可以灵活地配置限流策略。所有提交到内部应用区的的请求都需要先经过网关服务器。
网关功能由 PHP 高手实现,服务器配置两台虚拟机实现高可用。
被网关允许的请求向后转发给业务服务器处理之前,部署 Ngnix 服务器实现负载均衡,采用 Keepalived 技术部署两台虚拟机实现双活。
业务服务器实现学生管理系统的主要业务功能(学生/课程/考试/权限管理),由团队的另外两位成员以 Java 技术栈分模块开发。
业务服务器配置两台虚拟机双活实现应用的高可用。
为保证存储的高可用、数据不丢失,数据库采用虚拟机部署 MySQL 主备节点的方式存储数据。
为避免在高峰时段,数据库压力过大,采用 Redis 作为缓存减轻数据库压力,提升系统处理能力。同时为了避免 Redis 单点故障,以三台虚拟机配置 Redis 集群。

最终方案:

方案二。

分别考虑架构设计三原则:合适、简单、演化。 合适:团队人员都有 Java 背景,所以虽然有 PHP 高手,还是优先考虑统一使用 Java 技术栈。团队经济条件一般,所以尽量避免采用方案三这种高成本的方案。 简单:方案三功能最齐全,但是最复杂;方案一和方案二功能差别不大,但方案二的架构更简单,运维压力更小。 演化:方案二虽然简单,但基本的功能需求都已经满足,且未来如果增加新的组件例如扩充到方案三的复杂程度也很容易,不需要对现有架构进行大改;如果未来没有增加组件的需求,只需要提高系统处理能力也很容易,复制业务服务器虚拟机节点即可。