写点什么

微信业务架构 | 架构实战营

用户头像
樊江。
关注
发布于: 4 小时前

微信业务架构

  1. 业务架构一般用于描述系统对用户提供了那些业务功能,并不会涉及到详细的功能实现等。

  • 微信系统从客户端来说,有对应的手机客户端,PC 客户端以及 web 页面客户端。

  • 核心功能应该算是好友及群聊。

  • 系统层面的功能可以如个性化设置,菜单,插件等管理。

  • 社交功能涉及朋友圈,视频号,订阅号,红包,热点等。

  • 金融理财主要是钱包,卡包以及微信的贷款保险产品。

  • 第三方接入主要是小程序及公众号,这里可以衍生出很多功能了,比如购物,游戏等。但是这些都是其他三方公司提供的功能,在微信的业务架构里统称为第三方。


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

项目需求

  • 可以通过公网域名访问

  • 至少三人合作完成

  • 支撑管理 1000 个学生

  • 不推荐太简单和太复杂的方案


复杂度分析

高性能

仅有 1000 名学生,数据量较少。不需要考虑高性能

高可用

学生管理系统一般仅有工作时间会使用。可以不需考虑高可用。

数据高可用

1000 名学生,数据量较少,不过数据全部丢失会有一定的影响。备份数据即可

可扩展

数据量较少,且学校扩招有一定的范围,暂不考虑可扩展性。

成本及安全

毕设项目,不宜使用太大成本。


备选架构

方案一 Nginx+业务服务器+MySql 主备

方案一采用,Nginx 将请求路由到业务服务器,由业务服务器对请求做处理。数据库做主备,保证数据高可用性。


方案二 DNS+业务服务器+MySql 主备

方案二与方案一的区别是采用了 dns 做路由转发,这样的好处就是可以少部署一个 Nginx,节省一台机器资源。

方案三 DNS+前后端分离+Mongo 主备

考虑到团队中有一人为 PHP 高手,由 PHP 高手来作为前端开发兼后端查询请求的开发,如果接收到查询请求(GET),PHP 前端直接请求数据库查询。如果接收到写请求(POST) 则将请求转发给 JAVA 后端的业务服务器做处理。JAVA 后端服务器由两位 java 同学开发。考虑到初期前后端交互过程中字段可能会频繁变更,使用 mongo db 作为持久层数据库。


方案选择

从成本来看,方案一需要多部署一个 nginx ,也就是需要多准备一台云主机,不考虑方案一。

方案二与方案三中主要区分是方案二采用了横向扩展的方式部署,方案三采用了纵向扩展,将业务服务器分为前端及后端。在数据高可用上均采用持久层主备的方式,不过在方案三中,如果 PHP 节点故障,会导致整个项目不可使用(JAVA 仅作为后端服务器,没有前端开放),而在方案二中,其中一个节点故障,另一个节点还可以支持业务访问。但是方案二中,三个人同时弄 java 这个业务架构,不能充分利用到 PHP 高手这个点,可能会导致毕设时间不够充裕。


综合来看,方案二及方案三成本相同,在可用性上方案二更胜一筹。但是在复杂度分析时分析到,学校管理系统,不需要特别高的可用性,在非工作时间甚至可宕机 10 小时以上。而毕设时间有限。最终考虑选择方案三,应用 PHP 高手这个点,加快毕设进度。用可用性换取时间。

用户头像

樊江。

关注

还未添加个人签名 2019.12.03 加入

还未添加个人简介

评论

发布
暂无评论
微信业务架构 | 架构实战营