模块一作业
1 微信业务架构图
2 学生管理系统毕设架构设计
2.1 需求分析
复杂度分析:
高性能:能够支撑管理 1000 个学生,这对于一般系统来说没什么压力,基本不需要考虑性能问题。
高可用:数据高可用,不要全部丢失。
可扩展:业务需求比较复杂。
安全:公网域名可访问,要考虑数据安全问题。
成本:团队规模较小(3 人),经济条件一般。
总结:
数据高可用,不要全部丢失
可扩展
控制成本
要有一定复杂度,以满足答辩要求
2.2 备选方案
方案一的优点:
资源成本低,使用学校已有 DNS 节约资源;应用和存储可以最低占用两台机器。
架构简单,采用单体服务
缺点:
过于简单,答辩不占优势
优点:
资源成本低,使用已有的 DNS 节约资源;应用和存储可以最低占用两台机器。
垂直拆分,提高可扩展性;同时也符合毕业设计有一定复杂度的要求,容易通过答辩
拆分微服务,可复用性和扩展性增强
缺点:
架构略为复杂
开发难度稍高,开发周期长
运维难度大
2.3 最终方案
团队中仅有 1 人会 PHP,为保证团队协作,全员参与,因此两种方案都不考虑使用 PHP.
以上两种方案最终评估,选择方案二。分析如下:
合适原则:符合团队技术水平,也符合答辩要求。方案一虽然可以快速开发上线,但作为毕业设计,并不适合答辩,因为它过于简单。
简单原则:拆分为 3 个服务,且不需要其他基础设施,相对简单。
可演进:方案二可扩展性更强,即使将来面临更高的性能需求或更复杂的业务需求增长都可以应付。如果有更高性能需求,则不同微服务可以灵活伸缩;如果有其他更多业务需求,也可以在此基础上增加微服务。当然,方案一如果代码模块拆分得当(例如按业务分包,领域驱动等最佳实践)后期做垂直拆分微服务也并不是困难的事情。
评论