第四周作业
作业一:
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
答:主要有如下这些手段
使用本地和分布式缓存,由于互联网应用中用户大部分时间是读取数据,所有对数据进行缓存,包括本地和外部的缓存,可以有些解决读取压力问题。
使用应用服务器集群,提升应用服务的并发处理能力,应用服务集群的使用需要在前端增加负载均衡服务将请求均匀分布到每台应用服务器。
数据库读写分离,也是对应于减去数据库服务器的负载,再就是提升数据库服务器的可用性。在传统的读写都在一台机器的情况和读写分离的情况,我理解数据库通过binlog日志来同步数据时,写入性能会大大提升,这样比单台服务既要处理写又要处理读性能要好。同时读写分离解决了机器宕机所导致的服务不可用问题,比如写服务宕机,那么可以自动从从服务器中选择一台做主服务,避免了的写失败的情况。当读服务器中的一台宕机的时候,可以通过服务屏蔽来去掉一台机器,来避免读取失败。
反向代理,反向代理服务相当于网关服务,通过配置可以更好的实现后端服务的扩展和转移。
CDN加速,CDN加速解决的问题是针对静态文件在浏览器端加载的时候需要从需要走很长的网络请求流程找到应用方的静态文件服务器的问题, 通过将远端的静态文件放在CDN上,然后用户请求时候通过智能DNS找到最近的CDN服务器进行请求,减少了中间网络请求过程,加快了网页的加载展现过程。
分布式文件系统, 分布式文件系统主要解决当图片很多,单台机器 or 小的集群无法承载的问题。本质上就是将大量的文件从单一的节点分散到很多服务器节点上,减轻单个集群和节点的负载压力。同时方便业务上的扩展,当服务不够用的时候可以继续进行划分。
分布式数据库,分布式数据库系统同样存在数据在单表单库数据量过大,无法承载请求压力。通过将单表通过水平划分分成很多张表,同时可以将单个库分化到多个库来扩展服务的处理能力。
使用Nosql, nosql服务很好的解决数据快速查询问题,通过简单的内存缓存和特殊的数据结构,很好的满足了现代应用的业务要求,包括Redis的list、key-val、Set等数据结构,还有mongodb数据库可以高性能处理一个document的写入和查询,某些场景甚至可以替换掉mysql。
搜索引擎技术,元素的搜索查询是通过数据库来实现,但是随着数据量的增大和业务越来越复杂,通过数据库的搜索完全不能再满足业务的需求,此时通过搜索引擎技术,大大提升查询性能和满足应用需求。
微服务,微服务说白了就是将业务or 功能打包出来,成为一个独立的小型服务,方便维护和升级,同时可以支持不同业务的访问,提升了功能的利用率,提升应用价值降低企业应用成本。
作业二:
根据当周学习情况,完成一篇学习总结
架构模式
互联网架构模式就是试图去描述哪些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案。
分层
分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分几个部分,每个部分负责一部分相对比较单一的职责,然后通过一层对下一层依赖和调用组成一个完整的系统。
分割
分割是对应分层来说的,分层是横向方向上进行切分,分割是纵向方向对软件进行切分。
系统越大、功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护,另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
分布式
对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机资源,能有更大的业务处理能力。
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
集群
在业务进行分层和分割后组成独立的模块进行部署,这样就可以组合成服务器集群化,通过负载均衡设备共同对外提供服务,提升服务的性能和稳定性。
缓存
缓存就是将数据存放在距离计算最近的位置以加速处理速度。
CDN
反向代理
本地缓存
远程缓存
异步
计算机软件发展的一个重要目标和驱动力是降低软件耦合性。事物之间越少直接关系,那么就越少被彼此影响,可以独立发展。系统解耦合的手段除分层、分割、分布等,还有异步,将一个业务操作分成多个阶段,每个阶段通过共享数据而不是直调用的方法进行协作。
冗余
服务器冗余、数据冗余,避免服务器宕机or 服务中断导致的服务中断问题。
自动化
自动化就是逐步实现业务的无人管理,实现自动化管理的理想状态。
评论