2023年7月11日发(作者:)
⼤型⽹站技术架构1. ⼤型⽹站架构演化发展历程1)初始阶段的⽹站架构应⽤程序、数据库、⽂件等所有资源都在⼀台服务器上。Linux+PHP+Apache+MySQL。初始阶段的⽹站架构2)应⽤服务和数据服务分离使⽤三台服务器:应⽤服务器、⽂件服务器、数据库服务器。
应⽤服务和数据服务分离3)使⽤缓存改善⽹站性能 ⽹站使⽤缓存4)使⽤应⽤服务器集群改善⽹站的并发处理能⼒
应⽤服务器集群部署5)数据库读写分离 数据库读写分离6)使⽤反向代理和CDN加速⽹站响应
⽹站使⽤反向代理和CDN加速访问7)使⽤分布式⽂件系统和分布式数据库系统
使⽤分布式⽂件和分布式数据库系统8)使⽤NoSQL和搜索引擎
使⽤NoSQL和搜索引擎9)业务拆分垂直拆分,分⽽治之,按业务拆分成不同的应⽤。业务拆分10)分布式服务⽔平拆分,提取公共组件,中台战略。分布式服务
2. ⼤型⽹站架构模式1)分层⽔平切分:应⽤层、服务层、数据层。2)分割垂直切分:按业务切分。3)分布式分布式应⽤和服务、分布式数据和存储、分布式计算、分布式锁、分布式⽂件系统。4)集群5)缓存6)异步7)冗余8)⾃动化9)安全
3. ⼤型⽹站核⼼架构要素软件架构:系统的各个重要组成部分及其关系构成了系统的架构,这些组成部分可以是具体的功能模块,也可以是⾮功能的设计与决策,他们相互关系组成⼀个整体,共同构成了软件系统的架构。1)性能性能优化,前端:浏览器缓存、页⾯压缩、CDN缓存、反向代理缓存。后端 :缓存、异步、集群、多线程、改善内存管理、数据库索引、SQL优化。2)可⽤性⾼可⽤的⼿段:冗余、负载均衡集群。3)伸缩性关注点:⾮功能性需求(技术需求)。衡量架构伸缩性的主要标准:是否可以⽤多台服务器构建集群,是否容易向集群中添加新的服务器,新服务器是否可以提供和原服务器⽆差别的服务,集群可容纳的总的服务器数量是否有限制。4)扩展性关注点:功能需求。衡量架构扩展性的主要标准:增加新的业务产品时,是否可以实现对现有产品透明⽆影响,不需要改动或者很少改动既有业务功能就可以上线新产品,不同产品之间是否很少耦合,⼀个产品改动对其他产品功能⽆影响。可扩展的主要⼿段:事件驱动架构(消息队列)、分布式服务(将业务和可复⽤服务分离开,通过分布式服务框架调⽤)。5)安全性
4. ⽹站的⾼性能架构1)性能测试性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。A. 性能测试的主要指标:响应时间、并发数、吞吐量、性能计数器响应时间:指应⽤执⾏⼀个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间。并发数:同时提交请求的数量。吞吐量:单位时间内系统处理的请求数量。TPS(每秒事务数)、QPS(每秒查询数)。吞吐量QPS(TPS)= 并发数/平均响应时间当并发数到⼀定数量时,吞吐量反⽽会下降,原因是系统超负荷⼯作,上下⽂切换、内存等等其它消耗导致系统性能下降。性能计数器:描述服务器或操作系统性能的⼀些数据指标。系统负载System Load:当前正在被CPU执⾏和等待被CPU执⾏的进程数⽬总和,是反映系统忙闲程度的重要指标。内存使⽤、CPU使⽤、磁盘与⽹络I/O。B. 性能测试⽅法:性能测试、负载测试、压⼒测试、稳定性测试 性能测试曲线
并发⽤户访问响应时间曲线
性能测试结果报告
2)Web前端性能优化A. 浏览器访问优化减少http请求:合并CSS、合并JavaScript、合并图⽚。使⽤浏览器缓存静态资源⽂件:设置http头中的Cache-Control和Expires属性;静态资源⽂件变化需要及时应⽤到客户端浏览器时,可通过改变⽂件名实现,⽣成⼀个新的JS⽂件并更新HTML⽂件中的引⽤;需要批量更新时,不要⼀次全部更新,应该⼀个⽂件⼀个⽂件更新,并有⼀定的随机间隔时间,以免⽤户浏览器突然⼤量缓存失效,集中更新缓存,造成服务器负载骤增、⽹络堵塞的情况。启⽤压缩:HTML、CSS、JavaScript⽂件启⽤GZip压缩,在服务器端对⽂件进⾏压缩,在浏览器端对⽂件解压缩。B. CDN加速缓存静态资源。
利⽤CDN的⽹站架构C. 反向代理安全功能,缓存静态内容、动态内容,负载均衡。利⽤反向代理的⽹站架构3)应⽤服务器性能优化A. 分布式缓存⽹站性能优化第⼀定律:优先考虑使⽤缓存优化性能。缓存适⽤:读写⽐很⾼,很少变化的数据。缓存预热:最好在缓存系统启动时就把热点数据加载好,这个缓存预加载⼿段叫作缓存预热(warm up)。缓存穿透:对策是将不存在的数据也缓存起来(其value值为null)。B. 异步操作使⽤消息队列缩短响应时间。
使⽤消息队列进⾏消峰。
使⽤消息队列消除并发访问⾼峰C. 使⽤集群 利⽤负载均衡改善性能D. 代码优化多线程:使⽤多线程的原因主要是IO阻塞和多CPU。启动线程数=[任务执⾏时间/(任务执⾏时间-IO等待时间)] * CPU内核数最佳启动线程数和CPU内核数量成正⽐,和IO阻塞时间成反⽐。解决线程安全的主要⼿段:将对象设计成⽆状态对象(对象⽆成员变量或成员变量也是⽆状态对象),使⽤局部对象(在⽅法内部创建对象),并发访问资源时使⽤锁。资源复⽤:单例和对象池。4)存储性能优化5. ⽹站的⾼可⽤架构1)⽹站可⽤性度量⽹站年度可⽤性指标=(1-⽹站不可⽤时间/年度总时间)*100%2个9是基本可⽤,⽹站年度不可⽤时间⼩于88⼩时;3个9是较⾼可⽤,⽹站年度不可⽤时间⼩于9⼩时;4个9是具有⾃动恢复能⼒的⾼可⽤,⽹站年度不可⽤时间⼩于53分钟;QQ服务99.99%可⽤;5个9是极⾼可⽤性,⽹站年度不可⽤时间⼩于5分钟。2)⾼可⽤的⽹站架构⽹站的⾼可⽤架构设计的主要⽬的:保证服务器硬件故障时,服务依然可⽤,数据依然保存并能够被访问。实现⾼可⽤架构的主要⼿段:数据和服务的冗余备份及失效转移。分层架构的可⽤性:应⽤层的服务器、服务层的服务器、数据层的服务器。3)⾼可⽤的应⽤应⽤层主要处理⽹站应⽤的业务逻辑,也称业务逻辑层。通过负载均衡进⾏⽆状态服务的失效转移。利⽤负载均衡服务器实现⾼可⽤的应⽤服务应⽤服务器集群的Session管理。通常采⽤独⽴部署的Session服务器(集群)统⼀管理Session。
利⽤Session服务器共享Session4)⾼可⽤的服务可复⽤的服务模块为业务产品提供基础公共服务。也可以通过负载均衡进⾏⾼可⽤服务的失效转移。实现⾼可⽤服务的⼏个⼿段:分级管理(⾼优先级、低优先级)、超时设置、异步调⽤、服务降级、幂等性设计。5)⾼可⽤的数据保证数据⾼可⽤的⼿段主要是:数据备份、失效转移机制。数据备份是保证数据有多个副本,任意副本的失效都不会导致数据的永久丢失。失效转移机制保证当⼀个数据副本不可访问时,可以快速切换访问数据的其他副本,保证系统可⽤。CAP原理:⼀个提供数据服务的存储系统⽆法同时满⾜数据⼀致性(Consistency)、数据可⽤性(Availibility)、分区容忍性(Partition Tolerance,系统具有跨⽹络分区的伸缩性)这三个条件。在⼤型⽹站中,通常会选择强化分布式存储系统的可⽤性(A)和伸缩性(P),⽽在某种程度上放弃⼀致性(C)。只要求最终⼀致性。6. ⽹站的伸缩性架构⽹站的伸缩性是指不需要改变⽹站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩⼤或者缩⼩⽹站的服务处理能⼒。1)⽹站架构的伸缩性设计怎样设计⽹站,使它具有伸缩性?A. 不同功能进⾏物理分离实现伸缩
通过物理分离实现服务器伸缩
通过分层后分离部署实现系统伸缩性 通过业务分割后分离部署实现伸缩性B. 单⼀功能通过集群实现伸缩当⼀头⽜拉不动车的时候,不要去寻找⼀头更强壮的⽜,⽽是⽤两头⽜来拉车。集群伸缩性分为:应⽤服务器集群伸缩性和数据服务器集群伸缩性。2)应⽤服务器集群的伸缩性设计通过负载均衡实现应⽤服务器伸缩性。负载均衡算法:轮询(Round Robin,RR)、加权轮询(Weighted Round Robin,WRR)、随机(Random)、最少连接(Least Connections)、源地址散列(Source Hashing)。3)分布式缓存集群的伸缩性设计分布式缓存集群中不同服务器缓存的数据各不相同,缓存访问请求必须要先找到缓存对应的服务器,才能访问。伸缩性设计的主要⽬标:新加⼊缓存服务器后,整个缓存服务器集群中已经缓存的数据尽可能还被访问到。⽬前⽐较好的算法是⼀致性Hash算法。计算机的任何问题都可以通过增加⼀个虚拟层来解决。4)数据存储服务器集群的伸缩性设计A. 关系数据库集群的伸缩性设计简单伸缩:数据复制
使⽤数据复制的MySQL集群伸缩⽅案数据分库、分⽚:MyCatB. NoSQL数据库的伸缩性设计放弃以关系代数为基础的结构化查询语⾔(SQL)和事务⼀致性保证(ACID),强化⾼可⽤性和可伸缩性。
7. ⽹站的可扩展架构开闭原则(对扩展开放,对修改关闭),当系统增加新功能时,不需要对现有系统的结构和代码进⾏修改。1)构建可扩展的⽹站架构⽹站可扩展架构的核⼼思想是模块化,并在此基础上,降低模块间的耦合性,提⾼模块的复⽤性。2)利⽤分布式消息队列降低系统耦合性事件驱动架构(Event Driven Architecture)3)利⽤分布式服务打造可复⽤的业务平台分布式服务框架DubboDubbo架构原理4)可扩展的数据结构使⽤NoSQL
8. ⽹站的安全架构1)⽹站应⽤攻击和防御A. XSS攻击跨站点脚本攻击(Cross Site Script):⿊客通过篡改⽹页,注⼊恶意HTML脚本,在⽤户浏览⽹页时,控制⽤户浏览器进⾏恶意操作的⼀种攻击⽅式。 反射型XSS攻击
持久型XSS攻击消毒是⽹站必备的XSS防攻击⼿段,对某些html危险字符转义,如“>”转义为“>”,“<”转义为“<”,可以防⽌⼤部分攻击。B. 注⼊攻击SQL注⼊攻击: SQL注⼊攻击防御:请求参数消毒(通过正则表达式匹配),使⽤预编译⼿段绑定参数。C. CSRF攻击跨站点请求伪造
CSRF攻击防御⼿段:识别请求者⾝份。⽅法:表单Token、验证码、Referer check。2)信息加密技术及密钥安全管理A. 单向散列加密单向散列算法:MD5、SHA。单向散列加密B.对称加密对称加密优点:算法简单,加解密效率⾼,系统开销⼩,适合对⼤量数据加密。缺点:加解密使⽤同⼀个密钥,远程通信的情况下如何安全的交换密钥是个难题。常⽤对称加密算法:DES算法、RC算法。C. ⾮对称加密算法⾮对称加密⾮对称加密算法:RSA算法;实际应⽤中,常常会混合使⽤对称加密和⾮对称加密,先使⽤⾮对称加密技术对对称密钥进⾏安全传输,然后使⽤对称加密技术进⾏信息加解密。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689029514a197471.html
评论列表(0条)