大型网站技术架构核心原理与案例分析教学课件_第1页
大型网站技术架构核心原理与案例分析教学课件_第2页
大型网站技术架构核心原理与案例分析教学课件_第3页
大型网站技术架构核心原理与案例分析教学课件_第4页
大型网站技术架构核心原理与案例分析教学课件_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大型网站技术架构 核心原理与案例分析INFORMATION SHARE方阳 2019.02金融核心研发信息技术中心目录 网站的演化1 大型网站的架构模式2 核心要素分析3CONTENTS什么样的网站才算是大型网站?高并发,大流量高可用海量的数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式的发展 网站的演化1大型网站都是由小型网站发展而来,架构也是如此初始阶段的网站,一台服务器包含应用、数据库等应用与数据分离使用缓存改善性能使用服务器集群改善网站的并发处理能力数据库读写分离使用反向代理和CDN加速网站相应使用分布式文件系统和分布式数据库系统使用NoSQL和搜索引擎业务拆分分

2、布式服务 网站的演化1网站架构的演化 网站的演化1大型网站的价值观大型网站架构技术的价值观是随网站所需灵活应对驱动大型网站技术发展的主要力量是网站的业务发展网站技术是为了业务而存在的,脱离业务发展的实际,可能会将技术发展引入小道技术是用来解决业务问题的,而业务问题,也可以通过业务的手段解决网站架构架构是什么?最高层次的规划,难以改变的决定。这些规划和决定奠定了事务未来发展的方向和最终的蓝图软件架构是什么?有管软件整体结果与组件的抽象描述,用于知道大型软件系统各个方面的设计大型网站的架构模式架构模式分层分割分布式集群缓存异步冗余自动化安全分层将系统横向维度上切分成几个部分,每个部分负责比较单一的

3、职责,通过上层对下层的依赖和调用组成一个完整的系统禁止跨层次的调用和逆向调用 大型网站的架构模式2分割如果说分层是将软件在横向方面进行切分,那么分隔就是在纵向方面对软件进行切分大型网站分隔的粒度可能会很小。比如在应用层,将不同业务进行分隔,例如将购物、论坛、搜索、广告分隔成不同的应用,有对立的团队负责,部署在不同的服务器上 大型网站的架构模式2分布式分布式是指将不同的业务分布在不同的地方分布式应用和服务,把应用和服务模块分布式部署分布式静态资源:把JS,CSS,JPG图片等资源独立分布式部署,并采用独立的域名分布式数据和存储:大型网站的海量数据,单台计算机无法提供空间时,需要分布式部署分布式计

4、算:应用、服务、数据处理都是计算,这些计算量非常庞大,目前很多网站采用hadoop及其MapRedcuce分布式计算框架 大型网站的架构模式2集群集群是指将多台服务器集中在一起,实现同一业务对于用户访问集中的模块需要将独立部署的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可;另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因此可以提高系统的可用性 大型网站的架构模式2缓存缓存目的就是减轻服务器的计

5、算,使数据直接返回给用户。在现在的软件设计中,缓存已经无处不在。具体实现有CDN、反向代理、本地缓存、分布式缓存等使用缓存有两个条件:访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,不过很快过期,否则会因为数据过期而脏读,影响数据的正确性缓存除了可以加快数据的访问速度,还可以减轻后端应用和数据存储的负载压力 大型网站的架构模式2异步使用异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方法异步执行进行协作异步调用可以提高系统的可用性,加快网站的响应速度,消除并发访问高峰。但是可能会对用户体验及业务流程造成影响 大型网

6、站的架构模式2冗余网站需要724小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余则可以通过部署至少两台服务器构成一个集群实现服务高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心 大型网站的架构模式2自动化具体有自动化发布过程,自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等 大型网站的架构模式2安全身份验证、加密、防火墙等 大型网站的架构模式2 核心要素3二三四可用性伸缩性扩展性五安全性高性能一用户眼中的网站性能 高性能3开发眼中的网站性能开发人员关注的是应用程序本身和相

7、关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等。主要优化手段有:使用缓存加速数据读取,使用集群提高吞吐能力,使用异步消息加快请求相应,使用代码优化改善性能 高性能3运维眼中的网站性能运维人员关注的基础设施性能和资源利用率,比如服务器硬件,数据中心网络,网络运营商主要优化手段有:建设优化骨干网,使用高性价比的服务器等 高性能3判断一个网站性能好不好有哪些指标响应时间,从发出请求到收到数据所需要的时间并发数,系统能同时处理请求的数目吞吐量,单位时间内,系统能处理的请求数量性能计数器,一些数据指标,包括对象与线程数,内存使用,CPU使用等 高性能3 高性能3性能测试方法性能测试

8、负载测试压力测试稳定性测试 高性能3 WEB前端性能优化1 应用服务器性能优化2 存储性能优化3 高性能3Web前端优化浏览器端优化减少http请求,合并CSS,JS,图片等使用浏览器缓存,静态资源可以缓存在浏览器中启用压缩,对文件压缩,减少传输的数据量,浏览器端解压,这对服务器和浏览器端都有压力CSS放在页面最上,js放在页面最下面减少Cookie传输 高性能3Web前端优化CDN加速CDN本质就是缓存,而且将数据缓存在离用户最近的地方。CDN就部署在网络营运商的机房中反向代理传统代理服务器位于浏览器一侧,而反向代理服务器位于网站机房一侧。反向代理服务器通过配置缓存功能,加速网站响应另外,反

9、向代理具有保护网站安全的作用,所有请求都须经过反代服务器。反代还可以实现负载均衡 高性能3反向代理 高性能3应用服务器性能优化分布式缓存分布式缓存架构有两种,一种以Jboss 为代表需要更新同步的分布式缓存,一种一Memcached为代表的不互相通信的分布式缓存异步操作使用集群存储性能优化(硬件)高性能的代码多线程,需要注意线程安全问题资源复用数据结构垃圾回收 高可用性3 高可用的应用1 高可用的服务2 高可用的数据3 软件质量保证4 网站运行监控5 高可用3高可用的网站可用性度量网站年度不可用时间=(1-网站不可用时间/年度时间) 100%可用性考核 高可用3应用层、服务层、数据层的划分粒度

10、会很小很详细,结构复杂、服务器规模庞大。通常情况下,不同的业务产品会部署在不同的服务器集群上,互不干扰 高可用3高可用的应用通过负载均衡进行无状态的失效转移Session管理早期网站使用session复制,在集群中同步Session绑定在某台服务器上,但是一旦宕机,session就不存在利用cookie记录session,保存在客户端上,但是受限于cookie的大小和用户是否开启cookieSession服务器,部署独立的session服务器集群,每次读写都访问session服务器 高可用3高可用的服务分级管理核心应用和服务优先的使用更好的硬件,其他次之超时设置服务调用时间设置超时时间异步调用

11、通过消息队列方式完成服务降级网站访问高峰期,可对非重要服务降级:拒绝服务和关闭服务幂等性设计 高可用3高可用的数据CAP原理数据持久性 Partition Tolerance数据可访问性 Availibility数据一致性 Consistency数据强一致,数据更新结果和操作响应总是一致的数据用户一致,数据在存储中可能是不一致的,但是用户访问时,通过就错和校验,可以确定一个一直的数据给用户数据最终一致,物理存储的数据可能是不一致的,用户访问时也可能是不一致的,但是经过一段时间后,数据最终会达到一致。 高可用3 高可用3高可用的数据数据备份失效转移 高可用3运行监控监控数据采集用户行为日志收集服

12、务器性能监控运行数据报告监控管理系统报警失效转移自动优雅降级不同功能物理分离纵向分离 横向分离 高伸缩性3单一功能通过集群实现伸缩 高伸缩性3 高伸缩性3HTTP重定向负载均衡DNS域名解析负载均衡反向代理负载均衡IP负载均衡数据链路层负载均衡负载均衡算法简介集群的伸缩性设计:http重定向负载均衡DNS域名解析负载均衡反向代理负载均衡IP负载均衡数据链路层负载均衡 高伸缩性3数据存储服务器集群的伸缩性设计关系数据库集群的伸缩性设计NoSQL数据库的伸缩性设计 高可扩展性3 分布式消息队列降低系统耦合性1 分布式服务2 可扩展的数据结构3 开放平台4 高扩展性3分布式消息队列事件驱动架构通过在

13、低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的架构就是生产者消费者模式。在大型网站架构中,具体实现手段很多,最常用的就是分布式消息队列 高扩展性3 高扩展性3目前开源的和商业的分布式消息队列产品有很多,比较著名的有Apache ActiveMQ等,如下是分布式消息队列的架构原理 高扩展性3巨无霸系统面临的麻烦编译部署困难代码分支管理困难数据库连接耗尽新增业务困难 高扩展性3利用分布式服务打造可复用的业务平台负载均衡失效转移高效的远程通信整合异构系统对应用最少侵入版本管理实时监控 高扩展性3目前国内有较多成功实施案例的开源分布式服务框架是阿里巴巴的Dubbo,下图是Dubbo的架构原理服务框架客户端模块通过服务注册中心加载服务提供者列表(服务提供者启动后主动向服务注册中心注册自己可提供的服务接口列表),查找需要的服务接口,并根据配置的负载均衡策略将服务调用请求发送到某台服务提供者服务器。如果服务调用失败,客户端模块会自动从服务提供者列表选择一个可提供同样服务的另一台服务器重新请求服务,实现服务的自动失效转移,保证高可用服务。 高扩展性3利用开放平台建设网站生态圈大型网站为了更好的服务自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论