服装类的网站建设,中原免费网站建设,东光有做网站的吗,紫金网站制作策划1. 介绍一下《大型网站技术架构》这本书可能很多人都看过#xff0c;小编个人觉得真的是非常不错的一本书。看完这本书后#xff0c;你会对如何设计大型网站架构#xff0c;有非常清晰的思路。如果还没有读过的小伙伴#xff0c;赶紧去读一读吧。PS#xff1a;小编这里有这…1. 介绍一下《大型网站技术架构》这本书可能很多人都看过小编个人觉得真的是非常不错的一本书。看完这本书后你会对如何设计大型网站架构有非常清晰的思路。如果还没有读过的小伙伴赶紧去读一读吧。PS小编这里有这本书的Kiddle电子版如有需要可联系我获取哦2. 架构思路1. 大型网站系统特点既然谈的是大型网站架构所谓“大型”网站首先需要了解大型网站系统具有什么样的特点。一般大型网站系统都具有如下共同特点高并发大流量高可用海量数据用户分布广网络情况复杂安全环境恶劣需求快速变更发布频繁渐进式发展和演化2. 大型网站架构核心要素基于大型网站系统的特点需要围绕这些特点来设计系统架构。基于此可以概括出设计大型网站需要考虑的核心架构要素。设计大型网站系统的核心架构要素高性能高可用性可伸缩性可扩展性安全性本书的核心内容其实就是针对这几个核心架构要素一一展开。1. 设计『 高性能 』的网站架构对于大型网站设计高性能的架构一般从以下几个方面考虑优化网站响应速度优化网站处理并发请求的能力优化数据存储的性能所谓高性能从网站的用户角度来看无非就是访问网站的『 响应速度要快 』。从系统角度看由于同时访问的用户数巨大因此同时到达系统服务器的『 并发请求数 』非常大。从后端数据存储来看优化『 海量数据存储 』的能力避免后端数据存储性能缓慢而成为系统性能瓶颈。优化网站响应速度重要提示网站性能优化第一定律优先考虑使用缓存技术优化性能优化网站响应速度的主要手段是使用『 缓存 』使用缓存是提高网站响应速度效果最显著的办法。例如对于前端可以使用CDN反向代理这些都是利用的缓存技术。对于应用服务器的性能优化一个主要的手段也是使用缓存在提高响应速度的同时也减轻了对后端数据库的压力。如果是有海量数据的超大型系统甚至需要用到分布式缓存系统。另外一个优化响应速度的手段是『 异步消息处理 』。异步消息处理是指在应用服务器与后端服务之间使用消息队列应用服务器总是将用户请求扔进消息队列并立即返回用户后端服务异步从消息队列中取出请求数据进行处理。由于请求发送到消息队列后就立即返回了因此用户会感知到更快的响应速度。使用消息队列还具有削峰的作用当瞬间有大量请求到达系统后这些请求数据会进入消息队列而不会瞬间涌入后端服务器从而起到保护后端服务的作用。优化网站处理并发请求的能力除此之外还要支持巨大的并发请求数一般手段是使用『 集群 』。应用服务器一般需要从单台服务器扩展为多台服务器构成应用服务器集群然后引入负载均衡服务器将用户请求分摊到不同的应用服务器进行处理。集群可以很容易进行伸缩增加或减少服务器数量因此可以有效支持在不同场景下的不同并发请求量。如秒杀场景下可以快速增加服务器到集群中从而分摊用户请求减轻其他服务器的压力。优化数据存储的性能单从优化数据存储性能方面来看主要的优化手段有使用性能更高的硬盘如使用固态硬盘读写速度更快。替换传统关系型数据库使用NoSQL数据库。NoSQL数据库的数据读写速度一般优于传统关系型数据库。使用分布式文件系统。分布式文件系统具有并发读写能力因此可以有效提高数据存储的并发能力。2. 设计『 高可用 』的网站架构重要提示实现高可用架构的主要手段是数据和服务的『 冗余备份 』和『 失效转移 』所谓高可用即在任何时刻应该尽量保证系统是可用的。使用集群实现数据和服务的冗余备份当集群中某个服务器宕机时失效转移机制会将用户请求分发到集群中其他可用服务器上从而可以保证用户请求被正确处理。使用集群有个前提条件是各个服务器上运行的服务应尽量是无状态的这样各个服务器之间就不会存在差异。但是对于应用服务器如果保存了用户Session数据那么它们就是有状态的。这种情况下需要考虑如何处理Session状态数据。可以采用独立的分布式Session服务器集群来专门缓存用户Session数据从而使应用服务器变成无状态的。冗余备份与失效转移手段适用于网站系统的各个逻辑层包括应用层服务层和数据层。3. 设计『 可伸缩 』的网站架构系统的可伸缩性通常容易与可扩展性混淆。可伸缩性意味着当网站流量变大时可以很容易通过增加系统部署实例来支持。可扩展性意味着系统架构可以很容易扩展从而支持新业务功能系统。为达到可伸缩的目的通常需要将系统进行拆分。纵向进行逻辑分层如分为应用层服务层和数据层。横向进行业务分割把不同的业务功能拆分出来并且独立部署。对于拆分出来的单一功能也需要采用集群方式进行部署。但是对于不同类型的集群实现伸缩的方式不太一样。对于应用服务器集群通常使用『 负载均衡 』来实现伸缩。当有新服务器加入集群时负载均衡可以自动将用户请求分发到新服务器。对于分布式缓存集群当有新服务器加入集群时为了保证缓存命中率通常使用『 一致性 』算法从而使请求能够绝大部分指向已经缓存了所需数据的服务器。对于数据存储服务器集群对传统关系数据库来说通常的手段是进行『 主、从数据库复制 』实现读写分离或者『 数据分库分片 』等。然而对于NoSQL数据库很多NoSQL数据库天生就是为可伸缩海量数据存储而设计的如HBase。4. 设计『 可扩展 』的网站架构网站系统架构应该是易于扩展的。通常的设计手段包括使用分布式消息队列降低系统与系统之间的耦合性。当开发新系统后只需要订阅消息队列的数据即可进行整合而不需要修改已有其他系统。利用分布式服务抽取可复用的服务。对于通用业务功能可以把它们抽取成可复用的服务。对于新业务需求通常可以使用这些可复用的服务进行简单的组装即可实现。使用具有可扩展的数据库。如使用支持ColumnFamily结构的NoSQL数据库可以在现有数据表结构之上增删数据列。开放平台。通过开放平台接入第三方开发者开发的系统扩展系统周边应用形成生态圈。5. 设计『 安全 』的网站架构系统安全性对于任何网站系统都是至关重要的。对于大型网站由于用户分布广网络安全环境会更加复杂和恶劣设计具有良好安全性的网站架构会更加具有挑战性。一般可以考虑以下几个方面防御常见的网站攻击手段。如XSS注入攻击CSRF攻击等。信息加密。对在网络中传输的数据进行加密后再传输。信息过滤。过滤掉垃圾信息防止垃圾信息进入系统内部。思维导图以下是我亲自整理的思维导图如果上面的大图看着不方便我也把它放在了Github访问我的Github地址https://github.com/longyg/Study下载然后用XMind打开轻松看包括图里的详细标注也可以看得到啦。图 网络文 新码农客栈排版: 新码农客栈扫码关注公众号查看更多内容