极客时间—架构实战营—第九期—模块一作业
1. 画出微信的业务架构图:
一开始掏出笔和纸,“张小龙附体”,准备兴致勃勃在草稿纸上,画出整个微信的架构图的。
结果画着画着意识到,看起来简单的微信,其包含的业务是如此的多。不管是分层,还是用思维导图画,其复杂度都远远不是当前的自己 cover 住的。
于是果断的断、舍、离,聚焦精力到和自己工作相关的“金融业务”层面。
以下是微信——我的模块——(金融)服务页的业务架构图
(仅仅是一个三级子页面的业务架构图,就是如此丰富。整个微信的业务架构图,最少有下面这个图的 20 倍):
2. “学生管理系统”毕设架构设计:
如下图所示,给出三种备选架构:
注:三种方案中的业务服务器均采用 Java 语言,由 3 人合作完成开发。
以下对不同方案进行分析:
方案一:
足够简单,足够省钱。只需要买一个域名,租一个服务器即可(SQLite 寄生于业务服务器)。但业务服务器存在单点问题,会影响系统的可用性;SQLite 作为嵌入式数据库,其性能存在瓶颈;同时只有一个主库,数据存在丢失毁坏的风险。
方案二:
较为合理。一台 Nginx 和两台业务服务器,在实现负载均衡的同时,满足了一定程度的高可用。MySQL 数据库具有较高的并发性,足以应对一千人的系统。同时主库备库的存在保证了数据的安全和稳定。
方案三:
确实很高性能、高可用。但太烧钱了,F5 和 Oracle 加起来够在二线城市买房首付了。等同学们慢慢演化发达了之后再采用这个方案,目前反正不推荐。
综上所述,在基于合适、简单、演化三原则和高性能、高可用、可扩展、安全、成本的角度综合考虑后,我们选择方案二作为定稿。
版权声明: 本文为 InfoQ 作者【阿梁】的原创文章。
原文链接:【http://xie.infoq.cn/article/34ce28aab991c224b1d89188a】。文章转载请联系作者。
评论