写点什么

架构师训练营第四周作业

用户头像
李日盛
关注
发布于: 2020 年 11 月 13 日
架构师训练营第四周作业



问题:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。



要解答这个问题,首先得从大型互联网应用系统的特点说起。一般的大型互联网应用,如淘宝,微信,头条等,有如下几个特点:

  • 用户量大

  • ‍请求量大

  • 数据量大

  • 业务复杂



从逻辑上来说,由于大型互联网应用服务的是用户基数足够大,也就会带来非常多的请求数据,顺带的结果就是海量的数据需要存储。同时由于用户的基数大,就能演化成越来越多的业务场景,也就意味着系统会变得越来越复杂,维护和开发成本也就越来越高。所以大型互联网的所有要解决的问题,出发点都是围绕的海量用户来解决。注意,这里的用户是广义的,表示的是数据的产生者和使用者。很多做物联网的企业,虽然实际用的人不多,但是需要管理的设备却是海量的,请求也是海量的,要解决的问题也非常类似。通常来说,大型互联网应用系统会有如下几个问题和对应的解决方案:

高可用

海量的用户意味着你的系统可能随时随地都会有用户上来访问,也就是说系统需要保证7x24小时可用。但是服务器总是有宕机的可能,系统也需要不停的升级迭代,停机升级维护是必须的。这个问题的常见的技术解决方案有:

  • 负载均衡

  • 主从灾备

  • 灰度发布

  • 多机房部署

高性能

海量用户会带来海量的请求,特别是某些特定的时间段,系统会受到高出平时很多倍的业务请求。比如双十一,可能一天的请求量是平时的几十倍。为了应对海量的业务请求,一方面要求整个业务处理链路的快速完成,另一方面要求整个系统需要有伸缩的能力,以应对不同时间段业务流量的变化。针对这两点要求,有如下不同的技术解决方案:

1. 业务处理链路的快速完成

  • 前端:CDN,反向代理,http优化,动态页面静态化,懒加载,本地存储

  • 后端:本地缓存,分布式缓存,异步处理,RPC调用

  • 存储:读写分离,冷热数据分离

  • 部署:提升单服务器性能(垂直伸缩),应用与数据部署分离



2. 系统可以根据业务水平伸缩

  • 集群部署

  • 注册中心

  • 公有云服务



海量数据存储

海量用户带来海量的数据,比如电商网站的订单数据,商品数据,搜索引擎的网页索引,快照,社交软件的图片和视频等等,都会产生以TB级增长的存储需求。数据的分发,存储和搜索主要有如下的技术解决方案:



  • 数据分发:分布式消息队列,ETL工具,分布式任务平台

  • 数据存储:分布式数据库,NoSQL,分布式文件存储

  • 数据搜索:分布式搜索引擎



复杂业务扩展

海量用户带来极其复杂的业务。如何快速开发业务,快速上线业务,对于一个体量庞大的互联网应用来说,是一个很核心的诉求。互联网的本质是快速占领市场,然后享受垄断带来的庞大红利。针对这个问题,有如下的技术解决方案:



  • 架构设计层面:业务拆分,微服务化,中台化

  • 交付层面:CI/CD,容器化部署,云原生

  • 开发层面:设计模式,TDD, 敏捷开发



复杂系统运维与安全

随着系统的微服务化,集群化,部署的服务器在千台以上,应用实例以万为单位,如何快速的发现生产问题,定位问题,和解决问题,变得越加艰难。同时由于互联网面向的是全部的用户,安全风险也随之增加,需要有相应的机制处理。具体有如下的技术手段:



1. 系统运维

  • 链路追踪:应用埋点,分布式日志收集,日志存储,搜索引擎

  • 监控报警:服务器监控,应用监控,监控指标,多渠道消息通知

  • 快速部署:容器化,云原生

2. 系统安全

  • 访问审计

  • 防火墙

  • 数据存储加密/解密



发布于: 2020 年 11 月 13 日阅读数: 28
用户头像

李日盛

关注

好架构=低成本+可实现 2018.01.22 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第四周作业