让网站运营更简单
让搜索引擎更喜欢的网站
立即咨询
福利,定制网站送小程序, 名额有限,先到先得
最近阅读了《大型网站技术架构》一书,受益匪浅,强烈推荐刚开始步入职场的同学学习,当然对于我这个有两年半Web前端工作经验的同学来说,也收获良多,有一种想见恨晚的感觉这本书从搭建一个小型网站架构开始介绍,逐渐丰富羽翼,慢慢演变成一个大型网站架构设计。
书中提到的关于Web端的架构,80%我在公司的项目里都有所接触,但是之前这些知识点只是比较零碎的存在于我的思维中,没有认真思考过为什么需要这个东西的存在,或者这些技术之间有什么联系通过阅读《大型网站技术架构》,再结合项目中的实践,逐渐清晰了这些知识点之间的串联关系,有一种醍醐灌顶的感觉。
以下是本书的阅读笔记及摘录大型网站架构模式为了解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网实践出了许多解决方案,从而逐渐形成大型网站架构设计模式分层分层是指将系统在横向维度上切分成几个部分,每一部分负责相对比较单一的职责,然后通过上层对下层的调用组成一个完整的系统(禁止跨层或逆向调用)。
一般大型网站软件系统分为应用层、服务层、数据层应用层:负责具体的业务和视图展示,如网站首页及各个面向用户的功能(搜索、加入购物车、提交订单等)服务层:为应用层提供服务支持,如用户管理任务,处理订单服务等。
数据层:提供数据存储访问服务,如数据库、缓存、文件等由于各层之间具有一定的独立性,只要调用约定保持不变,各层可以根据自身发展需要独立演化,不需要其他层做出相应调整分层架构是逻辑上的,在物理上,三层结构可以部署在同一台物理机器上,但随着业务的发展,网站拥有越来越多的用户访问,三层结构最好分别部署在不同的服务器上,使网站拥有更多的计算资源以应对越来越大的访问量。
分割分割可以理解成是将软件进行纵向的切分,每一个模块负责独立的功能,将模块包装成高内聚低耦合的单元,一方面有助于软件的开发和维护,另一方面,不同模块可以实现分布式部署,提高网站的并发处理能力和功能拓展能力。
比如在应用层,可以对不同的业务进行分割,例如以某团app为例,将外卖、电影、打车分割成不同的应用,有独立团队负责,部署在不同服务器上如果一个业务比较复杂,会继续分割,比如外卖又可以分割为广告、购物车、会员等。
这些模块无论是在逻辑上还是物理部署上,都可以是独立的分布式分布式是指多台计算机完成相同的功能,或者多台计算机处理不同的功能,计算机越多,能够处理的并发访问和数据量就越大,进而提供更好的服务常用的分布式包括:分布式应用和服务、分布式静态资源、分布式数据和存储、分布式计算等。
集群集群是指多台服务器部署相同的应用,从而构成一个集群,然后通过负载均衡技术共同对外提供服务当一台服务器发生故障的时候,负载均衡设备或者系统的失效机制会将请求转发到集群的其他服务器上,使服务故障不影响用户使用。
即使是访问量很小的应用,最少也应该部署至少两台服务器构成一个集群,目的就是为了提高系统的可用性集群是分布式的思维的一种体现形式缓存缓存是指将数据存放在距离计算机最近的位置以加快处理速度,大型网站构架设计在很多地方都使用了缓存技术。
CDN缓存:将缓存数据部署在距离用户最近的网络服务商,因为用户的网络请求总是先到达网络服务商那里,在这里缓存一些静态资源,可以就近以最快的速度返回给用户反向代理:反向代理部署在网站的前端,当用户到达网站数据中心时,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。
本地缓存:将部分常用静态资源缓存在本机内存里,无需发起网络请求分布式缓存:需要进行缓存的数据过大时,处理本地缓存,还需要分布式缓存,将数据缓存在一个分布式缓存集群中,应用程序通过网络访问缓存数据使用缓存有两个前提条件:一是数据访问热点不均衡,某些数据会被更频繁的访问;二是数据在某个时间段内有效,不会很快过期。
在网站应用中,缓存数据不仅可以加快用户的访问速度,还可以减轻后端应用和数据存储的压力异步异步方式处理业务可提高系统可用性、加快网络相应速度、消除并发访问高峰,因为生产者服务器请求后,将数据写入消息队列,不需要等待消费者服务器处理就可以返回。
但是异步的方式可能会对用户体验、业务流程造成影响,需要网站产品设计方面的支持冗余网站需要7*24小时运行,为了避免宕机时造成网站不可用或数据丢失,就需要一定程度的冗余服务器运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上。
自动化发布过程自动化:自动化代码管理、自动化测试、自动化安全检测、自动化部署;自动化监控:自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源安全做好互联网安全防范措施,包括XSS攻击、CSFR攻击等等。
大型网站核心架构要素性能性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能带来的性能问题在浏览器端,可以通过缓存、页面压缩、合理布局、建设cookie传输等手段改善性能还可以使用CDN,将内容分发至离用户最近的网络服务商机房,减少数据传输路加快数据获取。
或者部署反向代理服务器,缓存热点文件,加快请求响应速度在服务器端,可以使用服务器本地缓存和分布式部署,鉴权请求处理速度,减小数据库负载压力或者通过异步操作加快用户端响应速度在代码层面,可以通过使用多线程、改善内存管理手段优化性能。
可用性服务器宕机是不可避免的事情,但是必须尽最大可能保证网站的可用性提高网站可用性的主要手段是冗余,应用部署在多台服务器上同时提供服务,数据存储在多台服务器上互相备份,这样任何一太服务器宕机都不会影响应用的整体可用性,也不会导致数据的丢失。
伸缩性伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求衡量架构伸缩性的主要标准是,是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器,且加入新的服务器后,是否可以提供和原来的服务无差别的服务。
集群中容纳的总的服务器是否有限制扩展性网站的扩展性架构关注网站的功能需求,衡量网站架构扩展性好坏的主要标准就是网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动,或者很少改动既有业务功能就可以上线新产品。
安全性网站的安全架构就是保护网站不受恶意访问和攻击,保护网站的数据不被窃取衡量网站的安全架构的标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略以上是《大型网站技术架构》一书主要阐述的概念,在第2篇“架构”中,分别对“网站核心架构要素”进行了详细的介绍,并在第3篇“案例”中举例分析。
书本将分层、分割、集群、缓存等大型网站设计模式的思想融合贯通在所讲述的知识点中,并且讲述的内容和实际开发体验贴切,方便结合当前自己从事的项目进行分析,理解更深刻不过纸上得来终觉浅,最终还是需要自己不断在实际业务中进行探索、学习与应用,真正将书本读薄消化融于己。
本文图文来源于网络,版权属于原作者或网站,内容为作者观点,内容版权归原作者所有、本站不对文章中的任何观点负责,内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容,请联系管理员,一经查实,将立刻删除、维护您的正当权益。
扫一扫,关注我们