一、大型网站架构演化发展历程:
1、初始阶段的网站架构:应用程序、数据库、文件等资源均在同一台服务器上。
2、应用服务和数据服务分离
3、使用缓存改善网站性能
4、使用应用服务器集群改善网站的并发处理能力
5、数据库读写分离
6、使用反向代理和CDN加速网站响应()
7、使用分布式文件系统和分布式数据库系统
8、使用NoSQL和搜索引擎
9、业务拆分
10、分布式服务
二、大型网站架构模式:
1、分层:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。挑战:必须合理规划层次边界和接口,禁止跨层次的调用和逆向调用。
2、分割:将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。
3、分布式:使用更多的计算机完成同样的功能,能够处理的并发访问和数据量就越大。
4、集群:多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
5、缓存:将数据存放在距离计算最近的位置以加快处理速度。
A、CDN:即内容分发网络,部署在距离终端用户最近的网络服务商,它缓存网站的一些静态资源,可以就近以最快速度返回给用户。
B、反向代理:当用户请求到达网站的数据中心时,最先访问的就是反向代理,这里缓存网站的静态资源,无需将请求继续转发给应用服务器就能返回给用户。
C、本地缓存:在应用服务器本地缓存着热点数据,应用程序可以在本机内存中直接访问数据,而无需访问数据库。
D、分布式缓存:将数据专门存在一个专门的分布式缓存集群中,应用程序通过网络通信访问缓存数据。
缓存使用的前提条件:数据访问热点不均衡,某些数据会被频繁的访问。数据在某个时间段内有效,不会很快过期。
6、异步:业务之间的消息传递,不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。
作用:提高系统可用性,加快网络响应速度,消除并发访问高峰。
7、冗余:服务和应用的服务器冗余部署,数据库冗余备份。
8、自动化:发布过程自动化、自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源。
9、安全:密码和手机校验码、数据加密、验证码、网络攻击、垃圾敏感数据过滤、风险控制。
三、大型网站核心架构要素
1、高性能:从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
在客户浏览器端,可以通过浏览器缓存、页面压缩、合理布局页面、减少Cookie传输等手段改善性能。可以使用CDN,使用户通过最短访问路径获取数据。可以部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。
在应用服务器端,可以使用服务器本地缓存和分布式缓存,可以通过异步操作将用户请求发送至消息队列等待后续任务处理。可以将多台应用服务器组成一个集群共同对外提供服务。
在代码层面,可以通过多线程、改善内存管理等手段优化性能。
在数据库服务器端,优化索引、缓存、SQL语句、使用NoSQL。
2、可用性:网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份。任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
对于应用服务器,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务。
对于存储服务器,对数据进行实时备份,当服务器宕机时,需要将数据访问转移到可用的服务器上,并进行数据恢复。
3、伸缩性:指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备,就可以向集群中不断加入服务器。
对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,需要改进缓存路由算法保证缓存数据的可访问性。
对于关系数据库,虽然支持数据复制主从热备等,但很难做到大规模集群的可伸缩性,可通过路由分区等手段将部署有多个数据库的服务器组成一个集群。
对于NoSQL数据库产品,其先天就是为海量数据而生,对伸缩性的支持通常都非常好。
4、扩展性:网站的扩展性架构直接关注网站的功能需求。网站的可扩展架构的主要手段是:事件驱动架构和分布式服务。
事件驱动架构,在网站通常利用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这种方式,可以透明地增加新的消息生产者任务,或新的消息消费者任务。
分布式服务,将业务和可复用服务分享开来,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。
5、安全性:网站的安全架构,就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。
相关推荐
以下是对"前端架构师经验归纳总结"的详细阐述: 一、前端架构设计原则 1. **模块化**:前端架构的基础是模块化,它能提高代码复用性,降低耦合度,便于团队协作和代码管理。常采用的技术有CommonJS、AMD、ES6模块...
### 软件工程期末复习要点归纳总结 #### 一、软件危机产生的原因与表现 1. **软件危机产生的原因**: - **软件本身的特性**:软件是一种逻辑实体而非物理实体,其复杂性和规模庞大使得开发和维护变得非常困难。 ...
这篇归纳涵盖了从硬件配置到软件安装的全过程,适合用于大型Linux集群的规划和实施。 首先,硬件配置是集群搭建的基础,包括理解架构、规划逻辑网络设计、设置终端服务器以及更新固件等关键环节。在物理设计阶段,...
### 软件工程期末复习要点归纳总结 #### 一、软件危机产生的原因及表现 1. **软件危机产生的原因**: - **软件本身的特性**:软件是一种逻辑实体而非物理实体,其复杂性和规模庞大使得维护变得异常困难。 - **...
### 大型SNS网站数据库设计精要 在构建大型社交网络服务(SNS)时,数据库设计是至关重要的环节,直接影响着系统的可扩展性、性能和成本效益。本文将深入探讨大型SNS网站数据库设计的关键要素,包括数据库选型、...
本论文首先从CDN基本概念入手,重点介绍了CDN技术的研究背景、研究现状,分析了CDN网络的基本原理和CDN的核心技术之一负载...最后归纳总结了CDN未来发展最可能的趋势、CDN与P2P融合技术的特点和实现融合的两种方案。
描述中的“学习方法归纳总结,想java学习的同学可以来看一看”简明扼要地介绍了文章的目的——为Java学习者提供一系列实用的学习策略和技巧。这不仅适用于初学者,也适合有一定基础的学习者。 #### 知识点详解 ###...
本文将对多种软件系统架构图与说明进行详细的知识点总结,从逻辑架构设计、技术架构设计到整体架构设计,涵盖了共享平台逻辑架构设计、应用系统建设、应用资源采集、数据分析与展现、数据的应用等多个方面。...
- 优秀的沟通能力和项目推进能力,良好的总结归纳能力和文档撰写能力。 - 能够在压力下工作,适应快速变化的技术环境。 对于Java架构师的其他职责,例如: 1. **行业应用解决方案**: - 负责特定行业应用的系统...
文章结合商业银行核心系统的技术架构演进路线与发展趋势,介绍了中国民生银行基于分布式技术架构的核心系统建设历程,并对分布式核心系统的架构设计、建设过程中遇到的关键问题和解决方案进行了归纳和总结。...
【APS建筑类题目architektur[归纳].pdf】这篇文档是关于建筑学的总结,主要探讨了建筑学(Architektur)的概念、历史、定义及其在软件开发中的应用。在建筑学的广泛意义上,它涉及到人类与建筑空间的互动,即对建筑...
阿里巴巴、腾讯、京东等大型企业纷纷在云计算领域布局,显示出其巨大的市场潜力。据IDC预测,云计算行业的增长速度将远超传统IT行业,这表明云计算已经成为推动技术创新与产业变革的关键力量。 云计算的概念源自...
本复习总结PPT针对ASP.NET的关键知识点进行了深入的归纳与解析。 1. **ASP.NET概述** ASP.NET是一个服务器端的Web开发平台,它包含了用于构建和运行Web应用程序的各种服务。它支持多种编程语言,如C#、VB.NET等,...
7. **工作总结的常见错误**:工作总结应注意内容的归纳、层次清晰,避免遗漏重要信息,如成绩、不足和改进方向。语言表达需准确,避免辞不达意,确保总结能够全面反映工作成果和经验,为后续工作提供指导。 通过对...
### 软件测试重点归纳 #### 第1章 软件测试背景 - **1.1 软件缺陷的官方定义** - 定义主要包括五个方面: 1. **未实现功能**:产品未能实现产品说明书要求的功能。 2. **不应出现的错误**:软件出现了产品说明...
这在大型网络中特别有用,因为它可以简化路由信息的交换,降低路由器处理路由更新的负担。在上述例子中,如果LAN 2有多个连续的C类子网,通过路由汇总可以创建一个单一的条目来代表这些子网,使得网络管理和路由传播...
自底向上法从单个页面开始,逐渐归纳总结形成主页,适合灵活调整内容的小型或初创网站;不断增补法根据需求动态添加网页,适合快速发展且需求变化频繁的网站。实际操作中,往往需要结合这三种方法灵活运用。 此外,...
根据提供的文件信息,我们可以将这个“JSP打造大型分布式B2C商城项目视频教程”的主要内容归纳为以下几个关键知识点: ### 一、项目简介与技术选型 本项目旨在通过Java Server Pages (JSP) 技术来构建一个大型的...
1. **网站策划**:根据客户需求制定网站的架构和风格定位,设计首页样稿供客户审批。 2. **首页广告设计**:根据实际需求设计动态或静态的首页广告,提升用户体验。 3. **频道首页设计**:每个频道首页都要符合整体...