写点什么

架构师训练营 - 第四周 - 作业一

用户头像
行者
关注
发布于: 2020 年 10 月 11 日

题目

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

大型互联网应用系统面对的挑战

在回答方法之前,我们需要首先搞清楚都有哪些问题需要解决。

高并发,大流量

面对高并发,大流量访问。

微信月活用户数10亿+

Google日均PV数35亿

阿里2019年双11当天交易创建峰值 54.4万笔/秒

高可用

系统需要7*24小时不间断服务,宕机事件损失很大。

5·27支付宝大规模宕机事故,对公司造成了很大负面影响

海量数据

需要存储、管理海量数据。

快手每日上传4000万+视频

Facebook每周上传照片数目接近10亿

用户分布广泛,网络情况复杂

服务全球用户,用户分布广泛,所在地网络情况不同。

安全环境恶劣

大型互联网应用容易受到攻击,国内外多个网站出现用户信息泄漏问题。

需求快速变更,发布频繁

为了适应市场,发布频繁,周发布甚至天发布。

渐进式发展

系统是随着市场不断发展而来的,而非最开始就设计出来的。

技术方案

针对上面列出的七大挑战,发展出了以下技术来解决这些问题。

CDN

CDN全称Content Delivery Network,内容分发网络。

通常网站应用会有大量的静态文件 图片、视频等,这些文件体积较大,需要克服 用户分布广泛,网络情况复杂|海量数据 2个挑战。

而通过使用CDN技术,把用户需要访问的内容预存储在用户附近。

举个栗子,假设A市只有一家超市,所有人买东西都要到这家超市,费事费力;优化后在每条街道上设置一个小卖部,小卖部去超市进货,大家买东西只需要去小卖部,这样就方便很多。



业界有很多成熟的第三方服务商,例如 阿里云CDN 腾讯云CDN

HTTPDNS

HTTPDNS,基于HTTP协议的DNS服务,是对传统DNS服务的改良。

网站应用因为需要面对全球用户,需要克服 用户分布广泛,网络情况复杂的问题,需要根据实际情况及时给用户切换合适的机房。

传统DNS服务存在缓存问题、转发问题、更新问题、解析问题。

基于此,开发了HTTPDNS技术,由网站自行决定如何进行机房映射。

反向代理

反向代理,对客户端流量分发,避免单点故障,提升服务可用性

常用开源方案是 Nginx;此外还有第三方服务商,例如 阿里云SLB

多机房部署

顾名思义,就是服务多机房部署,鸡蛋放在多个篮子里。

虽然当前类似阿里云机房稳定性很高,但是目前为止依然出现过少量的机房故障,导致服务不可用,对于网站来说是不小的损失;所以多机房部署是更为稳妥的方案,提升服务可用性

分布式存储

单台机器存储存在物理上线,但是数据没有,每天,网站服务都会产生海量的数据;分布式存储就是解决如何多机安全、可靠的存储。

当前较常用的分布式存储方案有Elasticsearch Mongodb TiDB等。

安全认证

网站服务涉及到用户信息、甚至钱,所以安全非常重要,常用的有HTTPS证书加密,甚至SHA来进行非对称加密。

DDD

Domain-Driven Design,领域驱动设计;相比传统的开发模式,DDD提供了一整套方法论来使服务高内聚、低耦合。

重构

随着业务的不断发展,需要定期对架构进行梳理,对于不合理的地方及时重构,避免问题越积越多。

用户头像

行者

关注

还未添加个人签名 2018.03.09 加入

还未添加个人简介

评论

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