写点什么

架构训练营第四周作业

用户头像
一期一会
关注
发布于: 2020 年 11 月 15 日

作业:


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

举描述。


解答


这里会以问题为切入点,谈谈该问题下对应的方案和手段。


海量数据

大型互联网应用有大量用户,这些用户会生成海量数据,例如照片,订单,帖子评论等等。存储并管理这样海量的数据就是一个区别于传统应用的第一个点。

技术

分布式文件系统

如 HDFS,按照一定规则把文件存储在多个服务器,并且有一个负责统一管理,调度这些服务器的 manager。实现海量数据的分布式存储。这样的系统一般还具有冗余备份,有很好的分区容错性和可用性。


分布式数据库

数据库存储数据到了一定程度,性能会大幅下降。而且本身数据库也有容量极限。这时就需要考虑使用分布式数据库。这种手段一般是单表数据太大,不得已是才使用。一般考虑按业务拆分,技术复杂性比较低,不容易踩坑。


业务拆分

根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署维护。每个应用也可以有自己的数据库,用消息队列进行数据分发。


架构模式

分层

将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护。

分割

将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。在存储方面,分割也可以做到将不同业务的数据分散到各自对应的服务器,实现不同数据间的隔离。


分布式

计算机越多,CPU、内存、存储资源也就越多,能够存储、处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。


高并发,大流量

大量用户会在同一时间访问服务。单个数据库完全不能支撑这样高并发的大流量访问。这个问题也是互联网应用最重要的一点。


技术

缓存

“二八定律”:80%的业务访问集中在 20%的数据上。按照这个定律,将二成的热点数据缓存到速度远高于硬盘的内存的方法,可以大幅提高应对高并发的性能。


CDN 和反向代理

CDN 和反向代理的基本原理都是缓存,区别在于 CDN 部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。


服务器集群

通过负载均衡调度服务器,可将来自用户的访问请求分发到应用服务器集群中的任何一台服务器上,实现压力分摊,可以显著提高应对高并发的能力


数据库读写分离


目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。


架构模式

集群

将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。这样可以提供更好的并发特性。并且集群易扩展,当有更多用户访问的时候,只需要向集群中加入新的机器即可。


缓存

缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段。内存可以作为硬盘的缓存,因此可以用 Redis 这样的内存数据库来提高性能,同时保护后台数据库;本地硬盘的缓存又可以当作远程数据库服务器的缓存;而离用户距离很近,网络访问速度快的 CDN、以及部署在前端架构的反向代理,又可以作为服务系统的缓存。


高可用

技术

服务器集群

集群间可以实现很好的替补作用,当某台服务器发生宕机时,负载均衡服务器不再向其发送请求、转交给其余的机器,等待该机器恢复。

读写分离

极端情况下,主数据库宕机时,仍然可以用从数据库提供读的请求支撑。这样可以保证一部分服务依然可用。


分布式数据库

作用类似服务器集群

异步

业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

这样可以很好的将系统各部分解耦,显著降低故障率和可维护性。也是应对快速需求变更的一个架构模式。


网络情况复杂,安全问题

由于互联网的特点,用户分布范围广,各地网络情况千差万别。网站容易受到攻击,大型网站几乎每天都会被黑客攻击。

架构模式

通过密码和手机校验码进行身份认证;加密处理;使用验证码进行识别防止滥用网络资源;处理 XSS 攻击、SQL 注入、进行编码转换等;对于垃圾信息、敏感信息进行过滤;对交易转账等重要操作根据交易模式和交易信息进行风险控制。


快速需求变更,发布频繁

为快速适应市场,满足用户需求,互联网应用的需求变更,产品发布频率是极高的。


技术

分布式服务,微服务

将应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。

使用 NoSQL 和搜索引擎

NoSQL 和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。


架构模式

自动化

自动化代码管理,代码版本控制、代码分支创建合并等过程自动化;自动化测试;自动化安全检测;自动化部署。这些自动化机制大大减少了需求变更,发布的认为干预,提高了效率。


学习总结

本周课程分析了互联网应用的一般分布式架构演化过程,讲述了架构模式和架构要素等。结合本周内容,我也阅读了《大型网站技术架构》,两边结合着学习,获得了很多架构模式、要素的知识;也大概了解了譬如淘宝,wiki 这样的大型网站的架构哲学;结合宅米网的例子,更加详细的了解了一个互联网新兴网站如何从零到 1,再到做大的架构演变。


本周理论的东西比较多,架构模式,要素就好似人的骨架。喜欢后面的学习能够有一些技术方面的肌肉,二者结合能够组成一个健康、完整的身体。


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

一期一会

关注

还未添加个人签名 2018.01.08 加入

还未添加个人简介

评论

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