高可用高并发的技术架构
推荐人 |
梅雨 |
推荐日期 |
7.5 |
完成日期 |
7.9 |
概要 |
介绍性能测试的目的 |
网址 |
https://www.toutiao.com/a6573556407403020814/?tt_from=dingtalk&utm_campaign=client_share×tamp=1530754415&app=news_article&utm_source=dingtalk&iid=36003853797&utm_medium= toutiao_ios&dtshare_count=1 |
性质 |
读书笔记 |
备注 |
需要加强学习的进度(教师考试耽误了) |
一、 关键字分析
1. 数据灾备:
数据灾备全称为数据灾难备份,是指为防止出现操作失误或系统故障导致数据丢失,而将全系统或部分数据集合,从应用主机的硬盘或阵列复制到其他存储介质的过程。亚洲最大灾备数据中心万国数据成都数据中心
2.冗余
指人为增加重复部分,目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的
3.高内聚低耦合:
内聚是从功能角度来度量模块内的联系。它描述的是模块内的功能联系;(功能)
耦合各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度(接口)
4.Hadoop:
Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
5.CDN
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术
6.反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
1、分层(横)
1.1逻辑分层,企业应用系统中最常一种架构模式,分3层
在网站的分层架构中,即应用层、服务层、数据层。应用层(业务和视图的展示);服务层(应用层提供服务支持);数据库(提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等[阮1] )。
1.2物理部署,三层架构可以部署在同一个物理机器上
随着网站业务的发展,要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,(目的:网站拥有更多的计算资源以应对越来越多的用户访问。)
2、冗余(集群,备份,灾备)
原因:网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问
2.1服务集群
至少2台以上服务器---实现服务高可用。
2.2数据备份(定期,冷热)
2.3数据容灾
甚至可以在全球范围内部署灾备数据中心。
3、分隔(纵向)
网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分隔开来
3.1分隔作用
有助于软件的开发维护也便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
3.2如何分割
高内聚低耦合的模块单元;
大型网站分隔的粒度可能会很小。比如在应用层,将不同业务进行分隔,例如将购物、论坛、搜索、广告分隔成不同的应用,有对立的团队负责,部署在不同的服务器[阮4] 上。
4、异步
使用异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方法异步执行进行协作[阮5] 。
具体实现则在单一服务器内部可用通过多线程共享内存对了的方式处理;在分布式系统中可用通过分布式消息队列来实现异步。
异步架构的典型就是生产者消费者方式,两者不存在直接调用。
5、分布式
5.1分布式作用
对于大型网站,分层和分隔的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完同样的工作,计算机越多,CPU、内存、存储资源就越多,能过处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。
5.2分布式方案
1.分布式应用和服务:
将分层和分隔后的应用和服务模块分布式部署,可以改善网站性能和并发性、加快开发和发布速度、减少数据库连接资源消耗。
2.分布式静态资源:
网站的静态资源如JS、CSS、Logo图片等资源对立分布式部署,并采用独立的域名,即人们常说的动静分离。静态资源分布式部署可以减轻应用服务器的负载压力;通过使用独立域名加快浏览器并发加载的速度。
3.分布式数据和存储:
大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,这些数据库需要分布式存储。
4.分布式计算:
目前网站普遍使用Hadoop和MapReduce分布式计算框架进行此类批处理计算,其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算和分布式计算。
6、安全
网站在安全架构方面有许多模式:
通过密码和手机校验码进行身份认证;
为了防止机器人程序滥用资源,需要使用验证码进行识别[阮7] ;
对常见的XSS攻击、SQL注入需要编码转换;
垃圾信息需要过滤等。
7、自动化
具体有自动化发布过程,自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等。
8、集群
对于用户访问集中的模块需要将独立部署的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务。
服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可;另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因此可以提高系统的可用性。
9、缓存
9.1缓存目的
减轻服务器的计算,使数据直接返回给用户。
在现在的软件设计中,缓存已经无处不在。具体实现有CDN、反向代理、本地缓存、分布式缓存等[阮8] 。
9.2使用缓存有两个条件
访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,不过很快过期,否在会因为数据过期而脏读,影响数据的正确性。
[阮1]缓存,文件等是直接放在数据库里面的吗?
[阮2]定期备份的时间?是否冷热备份?
[阮3]什么是冷热备份?
[阮4]插入不同的应用是为了大并发?防止服务奔溃吗?
[阮6]如何加密?
[阮7]什么意思?
[阮8]缓存实现