架构师训练营第四周作业
问题:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
要解答这个问题,首先得从大型互联网应用系统的特点说起。一般的大型互联网应用,如淘宝,微信,头条等,有如下几个特点:
用户量大
请求量大
数据量大
业务复杂
从逻辑上来说,由于大型互联网应用服务的是用户基数足够大,也就会带来非常多的请求数据,顺带的结果就是海量的数据需要存储。同时由于用户的基数大,就能演化成越来越多的业务场景,也就意味着系统会变得越来越复杂,维护和开发成本也就越来越高。所以大型互联网的所有要解决的问题,出发点都是围绕的海量用户来解决。注意,这里的用户是广义的,表示的是数据的产生者和使用者。很多做物联网的企业,虽然实际用的人不多,但是需要管理的设备却是海量的,请求也是海量的,要解决的问题也非常类似。通常来说,大型互联网应用系统会有如下几个问题和对应的解决方案:
高可用
海量的用户意味着你的系统可能随时随地都会有用户上来访问,也就是说系统需要保证7x24小时可用。但是服务器总是有宕机的可能,系统也需要不停的升级迭代,停机升级维护是必须的。这个问题的常见的技术解决方案有:
负载均衡
主从灾备
灰度发布
多机房部署
高性能
海量用户会带来海量的请求,特别是某些特定的时间段,系统会受到高出平时很多倍的业务请求。比如双十一,可能一天的请求量是平时的几十倍。为了应对海量的业务请求,一方面要求整个业务处理链路的快速完成,另一方面要求整个系统需要有伸缩的能力,以应对不同时间段业务流量的变化。针对这两点要求,有如下不同的技术解决方案:
1. 业务处理链路的快速完成
前端:CDN,反向代理,http优化,动态页面静态化,懒加载,本地存储
后端:本地缓存,分布式缓存,异步处理,RPC调用
存储:读写分离,冷热数据分离
部署:提升单服务器性能(垂直伸缩),应用与数据部署分离
2. 系统可以根据业务水平伸缩
集群部署
注册中心
公有云服务
海量数据存储
海量用户带来海量的数据,比如电商网站的订单数据,商品数据,搜索引擎的网页索引,快照,社交软件的图片和视频等等,都会产生以TB级增长的存储需求。数据的分发,存储和搜索主要有如下的技术解决方案:
数据分发:分布式消息队列,ETL工具,分布式任务平台
数据存储:分布式数据库,NoSQL,分布式文件存储
数据搜索:分布式搜索引擎
复杂业务扩展
海量用户带来极其复杂的业务。如何快速开发业务,快速上线业务,对于一个体量庞大的互联网应用来说,是一个很核心的诉求。互联网的本质是快速占领市场,然后享受垄断带来的庞大红利。针对这个问题,有如下的技术解决方案:
架构设计层面:业务拆分,微服务化,中台化
交付层面:CI/CD,容器化部署,云原生
开发层面:设计模式,TDD, 敏捷开发
复杂系统运维与安全
随着系统的微服务化,集群化,部署的服务器在千台以上,应用实例以万为单位,如何快速的发现生产问题,定位问题,和解决问题,变得越加艰难。同时由于互联网面向的是全部的用户,安全风险也随之增加,需要有相应的机制处理。具体有如下的技术手段:
1. 系统运维
链路追踪:应用埋点,分布式日志收集,日志存储,搜索引擎
监控报警:服务器监控,应用监控,监控指标,多渠道消息通知
快速部署:容器化,云原生
2. 系统安全
访问审计
防火墙
数据存储加密/解密
版权声明: 本文为 InfoQ 作者【李日盛】的原创文章。
原文链接:【http://xie.infoq.cn/article/3257614c2aac882bead124051】。文章转载请联系作者。
评论