[软件架构]互联网架构模板

架构图如下图所示。这个图基本涵盖了互联网科技公司的大部分技术点。不同公司只是在具体技术实现上略有差异,但不会跳出这个框架。

SQL: mysql通常用于存储业务数据。互联网发展初期,各种业务一般都是独立运营mysql集群。但是随着业务越来越多,mysql集群越来越大,就需要做sql平台。

NoSQL:不仅翻译成SQL作为mysql的补充。Nosql一般自己提供集群化,使用起来非常方便,所以在公司业务发展初期并不需要。Nosql集群总体来说越来越多,做Nosql平台很有必要。

小文件:网上有很多小文件,比如产品图片,脸书图片。这种小文件具有数据量小、数量巨大、访问量大的特点。如果每个业务都考虑小文件存储,会有重复造轮,所以做一个小文件平台很有必要。

大文件:互联网上的大文件主要分为两类:一类是商业大数据,比如Youtube视频,电影网站的电影;另一种是海量日志数据,比如各种访问日志。一些有实力的大公司会做基于开源解决方案的大数据平台。

开发框架:比如常见的Spring框架。

Web服务器:tomcat、jetty等比较常见。

容器:Docker可以大大降低运维成本,实现动态扩展非常方便。

配置中心:顾名思义,配置中心就是集中管理各个系统的配置。

服务中心:解决跨系统依赖的配置和调度问题。比如有10个系统依赖于系统A的X接口,而此时系统A已经实现了可以更好支持X接口的Y接口,那么直接更新10个系统的配置会很麻烦。

消息队列:支持系统解耦。

负载平衡:作为任务分配器的职责。

CDN:一些常用文件可以就近缓存,提高访问速度。

多机房:多机房的主要目的是备灾。当机房出现故障时,业务可以快速切换到另一个机房。这种切换操作允许一定的中断时间,例如10分钟和1小时。

多中心:多中心的要求更高,要求同时提供对外服务,业务可以在多中心之间自动切换,故障发生后无需人工干预或很少人工干预即可自动恢复。

用户管理:统一管理各个系统的用户。

消息推送:根据方式不同,分为短信、邮件、站内信、App推送。

存储云:实现了CDN+小文件存储。

图云:实现的也是CDN+小文件存储。为什么不将系统与存储云统一起来呢?这是由于图片业务的复杂性。图片会涉及更多的业务,包括剪切、压缩、美化、审计、水印等等。

服务千差万别,各种互联网服务面临的主要问题是越来越复杂。这时候就要用到拆解整合的技术了。反汇编就是把一个大系统拆分成多个子系统,降低复杂度。当子系统越来越多时,可能需要采用集成技术。

测试平台的核心目的是提高测试效率。

运维平台的核心职责分为四个部分:配置、部署、监控和应急响应。

数据平台的核心职责主要包括三个部分:数据管理、数据分析和数据应用。

管理平台的核心职责是权限管理。