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

下载本文档

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

文档简介

大型网站技术架构核心原理与案例分析INFORMATIONSHARE方阳2021.02金融核心研发@信息技术中心目录网站的演化1大型网站的架构模式2

核心要素分析3CONTENTS什么样的网站才算是大型网站?高并发,大流量高可用海量的数据用户分布广泛,网络情况复杂平安环境恶劣需求快速变更,发布频繁渐进式的开展网站的演化1大型网站都是由小型网站开展而来,架构也是如此初始阶段的网站,一台效劳器包含应用、数据库等应用与数据别离使用缓存改善性能使用效劳器集群改善网站的并发处理能力数据库读写别离使用反向代理和CDN加速网站相应使用分布式文件系统和分布式数据库系统使用NoSQL和搜索引擎业务拆分分布式效劳网站的演化1网站架构的演化网站的演化1大型网站的价值观大型网站架构技术的价值观是随网站所需灵活应对驱动大型网站技术开展的主要力量是网站的业务开展网站技术是为了业务而存在的,脱离业务开展的实际,可能会将技术开展引入小道技术是用来解决业务问题的,而业务问题,也可以通过业务的手段解决网站架构架构是什么?最高层次的规划,难以改变的决定。这些规划和决定奠定了事务未来开展的方向和最终的蓝图软件架构是什么?有管软件整体结果与组件的抽象描述,用于知道大型软件系统各个方面的设计大型网站的架构模式架构模式分层分割分布式集群缓存异步冗余自动化安全分层将系统横向维度上切分成几个局部,每个局部负责比较单一的职责,通过上层对下层的依赖和调用组成一个完整的系统禁止跨层次的调用和逆向调用大型网站的架构模式2分割如果说分层是将软件在横向方面进行切分,那么分隔就是在纵向方面对软件进行切分大型网站分隔的粒度可能会很小。比方在应用层,将不同业务进行分隔,例如将购物、论坛、搜索、广告分隔成不同的应用,有对立的团队负责,部署在不同的效劳器上大型网站的架构模式2分布式分布式是指将不同的业务分布在不同的地方分布式应用和效劳,把应用和效劳模块分布式部署分布式静态资源:把JS,CSS,JPG图片等资源独立分布式部署,并采用独立的域名分布式数据和存储:大型网站的海量数据,单台计算机无法提供空间时,需要分布式部署分布式计算:应用、效劳、数据处理都是计算,这些计算量非常庞大,目前很多网站采用hadoop及其MapRedcuce分布式计算框架大型网站的架构模式2集群集群是指将多台效劳器集中在一起,实现同一业务对于用户访问集中的模块需要将独立部署的效劳器集群化,即多台效劳器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供效劳效劳器集群能够为相同的效劳提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中参加新的机器即可;另外可以实现当其中的某台效劳器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的效劳器上,因此可以提高系统的可用性大型网站的架构模式2缓存缓存目的就是减轻效劳器的计算,使数据直接返回给用户。在现在的软件设计中,缓存已经无处不在。具体实现有CDN、反向代理、本地缓存、分布式缓存等使用缓存有两个条件:访问数据热点不均衡,即某些频繁访问的数据需要放在缓存中;数据在某个时间段内有效,不过很快过期,否那么会因为数据过期而脏读,影响数据的正确性缓存除了可以加快数据的访问速度,还可以减轻后端应用和数据存储的负载压力大型网站的架构模式2异步使用异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方法异步执行进行协作异步调用可以提高系统的可用性,加快网站的响应速度,消除并发访问顶峰。但是可能会对用户体验及业务流程造成影响大型网站的架构模式2冗余网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余那么可以通过部署至少两台效劳器构成一个集群实现效劳高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心大型网站的架构模式2自动化具体有自动化发布过程,自动化代码管理、自动化测试、自动化平安检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等大型网站的架构模式2平安身份验证、加密、防火墙等大型网站的架构模式2核心要素3二三四可用性伸缩性扩展性五平安性高性能一用户眼中的网站性能高性能3开发眼中的网站性能开发人员关注的是应用程序本身和相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等。主要优化手段有:使用缓存加速数据读取,使用集群提高吞吐能力,使用异步消息加快请求相应,使用代码优化改善性能高性能3运维眼中的网站性能运维人员关注的根底设施性能和资源利用率,比方效劳器硬件,数据中心网络,网络运营商主要优化手段有:建设优化骨干网,使用高性价比的效劳器等高性能3判断一个网站性能好不好有哪些指标响应时间,从发出请求到收到数据所需要的时间并发数,系统能同时处理请求的数目吞吐量,单位时间内,系统能处理的请求数量性能计数器,一些数据指标,包括对象与线程数,内存使用,CPU使用等高性能3高性能3性能测试方法性能测试负载测试压力测试稳定性测试高性能3

WEB前端性能优化1

应用服务器性能优化2

存储性能优化3高性能3Web前端优化浏览器端优化减少请求,合并CSS,JS,图片等使用浏览器缓存,静态资源可以缓存在浏览器中启用压缩,对文件压缩,减少传输的数据量,浏览器端解压,这对效劳器和浏览器端都有压力CSS放在页面最上,js放在页面最下面减少Cookie传输高性能3Web前端优化CDN加速CDN本质就是缓存,而且将数据缓存在离用户最近的地方。CDN就部署在网络营运商的机房中反向代理传统代理效劳器位于浏览器一侧,而反向代理效劳器位于网站机房一侧。反向代理效劳器通过配置缓存功能,加速网站响应另外,反向代理具有保护网站平安的作用,所有请求都须经过反代效劳器。反代还可以实现负载均衡高性能3反向代理高性能3应用效劳器性能优化分布式缓存分布式缓存架构有两种,一种以Jboss为代表需要更新同步的分布式缓存,一种一Memcached为代表的不互相通信的分布式缓存异步操作使用集群存储性能优化〔硬件〕高性能的代码多线程,需要注意线程平安问题资源复用数据结构垃圾回收高可用性3

高可用的应用1

高可用的服务2

高可用的数据3

软件质量保证4

网站运行监控5高可用3高可用的网站可用性度量网站年度不可用时间=〔1-网站不可用时间/年度时间〕×100%可用性考核高可用3 应用层、效劳层、数据层的划分粒度会很小很详细,结构复杂、效劳器规模庞大。通常情况下,不同的业务产品会部署在不同的效劳器集群上,互不干扰高可用3高可用的应用通过负载均衡进行无状态的失效转移Session管理早期网站使用session复制,在集群中同步Session绑定在某台效劳器上,但是一旦宕机,session就不存在利用cookie记录session,保存在客户端上,但是受限于cookie的大小和用户是否开启cookieSession效劳器,部署独立的session效劳器集群,每次读写都访问session效劳器高可用3高可用的效劳分级管理核心应用和效劳优先的使用更好的硬件,其他次之超时设置效劳调用时间设置超时时间异步调用通过消息队列方式完成效劳降级网站访问顶峰期,可对非重要效劳降级:拒绝效劳和关闭效劳幂等性设计高可用3高可用的数据CAP原理数据持久性PartitionTolerance数据可访问性Availibility数据一致性Consistency数据强一致,数据更新结果和操作响应总是一致的数据用户一致,数据在存储中可能是不一致的,但是用户访问时,通过就错和校验,可以确定一个一直的数据给用户数据最终一致,物理存储的数据可能是不一致的,用户访问时也可能是不一致的,但是经过一段时间后,数据最终会到达一致。高可用3高可用3高可用的数据数据备份失效转移高可用3运行监控监控数据采集用户行为日志收集效劳器性能监控运行数据报告监控管理系统报警失效转移自动优雅降级不同功能物理别离纵向别离横向别离高伸缩性3单一功能通过集群实现伸缩高伸缩性3高伸缩性3HTTP重定向负载均衡DNS域名解析负载均衡反向代理负载均衡IP负载均衡数据链路层负载均衡负载均衡算法简介集群的伸缩性设计:重定向负载均衡DNS域名解析负载均衡反向代理负载均衡IP负载均衡数据链路层负载均衡高伸缩性3数据存储效劳器集群的伸缩性设计关系数据库集群的伸缩性设计NoSQL数据库的伸缩性设计高可扩展性3

分布式消息队列降低系统耦合性

1

分布式服务2

可扩展的数据结构3

开放平台4高扩展性3分布式消息队列事件驱动架构通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的架构就是生产者消费者模式。在大型网站架构中,具体实现手段很多,最常用的就是分布式消息队列高扩展性3高扩展性3目前开源的和商业的分布式消息队列产品有很多,比较著名的有ApacheActiveMQ等,如下是分布式消息队列的架构原理高扩展性3巨无霸系统面临的麻烦编译部署困难代码分支管理困难数据库连接耗尽新增业务困难高扩展性3利用分布式效劳打造可复用的业务平台负载均衡失效转移高效的远程通信整合异构系统对应用最少侵入版本管理实时监控高扩展性3目前国内有较多成功实施案例的开源分布式效劳框架是阿里巴巴的Dubbo,以下图是Dubbo的架构原理

效劳框架客户端模块通过效劳注册中心加载效劳提供者列表〔效劳提供者启动后主动向效劳注册中心注册自己可提供的效劳接口列表〕,查找需要的效劳接口,并根据配置的负载均衡策略将效劳调用请求发送到某台效劳提供者效劳器。如果效劳调用失败,客户端模块会自动从效劳提供者列表选择一个可提供同样效劳的另一台效劳器重新请求效劳,实现效劳的自动失效转移,保证高可用效劳。高扩展性3利用开放平台建设网站生态圈大型网站为了更好的效劳自己的用户,开放更多的增值效劳,会把网站内部的效劳封装成一些调用接口开放出去,共外部的第三方开发者使用,这个提供开

温馨提示

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

评论

0/150

提交评论