大型网站在架构上应当考虑哪些问题

2023-11-17

 大型网站在架构上应当考虑哪些问题?
• 分层:分层是处理任何复杂系统最常见的手段之一,将系统横向切分成若干个层面,每个层面只承担单一的职责,然后通过下层为上层提供的基础设施和服务以及上层对下层的调用来形成一个完整的复杂的系统。大型网站的软件系统也可以使用分层的理念将其分为持久层(提供数据存储和访问服务)、业务层(处理业务逻辑,系统中最核心的部分)和表示层(系统交互、视图展示)。需要指出的是:(1)分层是逻辑上的划分,在物理上可以位于同一设备上也可以在不同的设备上部署不同的功能模块,这样可以使用更多的计算资源来应对用户的并发访问;(2)层与层之间应当有清晰的边界,这样分层才有意义,才更利于软件的开发和维护。
• 分割:分割是对软件的纵向切分。我们可以将大型网站的不同功能和服务分割开,形成高内聚低耦合的功能模块(单元)。在设计初期可以做一个粗粒度的分割,将网站分割为若干个功能模块,后期还可以进一步对每个模块进行细粒度的分割,这样一方面有助于软件的开发和维护,另一方面有助于分布式的部署,提供网站的并发处理能力和功能的扩展。
• 分布式:除了上面提到的内容,网站的静态资源(JavaScript、CSS、图片等)也可以采用独立分布式部署并采用独立的域名,这样可以减轻应用服务器的负载压力,也使得浏览器对资源的加载更快。数据的存取也应该是分布式的,传统的商业级关系型数据库产品基本上都支持分布式部署,而新生的NoSQL产品几乎都是分布式的。
• 集群:集群使得有更多的服务器提供相同的服务,可以更好的提供对并发的支持。
• 缓存:所谓缓存就是用空间换取时间的技术,将数据尽可能放在距离计算最近的位置。使用缓存是网站优化的第一定律。我们通常说的CDN、反向代理、热点数据都是对缓存技术的使用。
• 异步:使用异步处理还可以提高系统可用性,加快网站的响应速度(用Ajax加载数据就是一种异步技术),同时还可以起到削峰作用(应对瞬时高并发)。“能推迟处理的都要推迟处理”是网站优化的第二定律,而异步是践行网站优化第二定律的重要手段。

• 冗余:各种服务器都要提供相应的冗余服务器以便在某台或某些服务器宕机时还能保证网站可以正常工作,同时也提供了灾难恢复的可能性。冗余是网站高可用性的重要保证。



网站前端优化的技术
* 减少HTTP请求数量:合并CSS、合并JavaScript、合并图片(CSS Sprite)
*使用浏览器缓存:通过设置HTTP响应头中的Cache-Control和Expires属性,将CSS、JavaScript、图片等在浏览器中缓存


大型网站在架构上应当考虑哪些问题? +1
资源复用:资源复用主要有两种方式,一是单例,而是对象池,我们使用的数据库连接池、线程池都是对象池化技术

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大型网站在架构上应当考虑哪些问题 的相关文章

随机推荐

  • Suricata + Wireshark离线流量日志分析

    目录 一 访问一个404网址 触发监控规则 1 使用python搭建一个虚拟访问网址 2 打开Wireshark 抓取流量监控 3 在Suricata分析数据包 流量分析经典题型 入门题型 题目 Cephalopod 图片提取 进阶题型 题
  • Java中的异常

    异常Exception 是指程序运行时 由于输入错误 网络 程序逻辑等原因导致运行时出现的问题 出现异常时 程序会暂时中断执行 并根据产生异常的原因 创建对应异常类型的异常对象 并抛出给JVM捕获处理 1 Java中的常见异常 1 Null
  • HTML5 简介及基础教程

    什么是 HTML5 HTML5是一种用于创建Web页面和应用程序的标记语言 是HTML的第五个版本 HTML5是由万维网联盟 W3C 和网络超文本应用技术工作组 WHATWG 共同开发的 并于2014年10月推出了最终版本 HTML5包括一
  • WebRTC源码架构浅析

    http www oschina net question 35855 121850
  • 【Python基础】Python简介

    开篇 从本篇文章开始 笔者将带着大家一起学习Python的入门基础知识 自从人工智能 大数据行业的兴起 Python变得炙手可热 成为了近几年最流行的语言之一 2018年 Python 语言上升了 3 62 其次是Visual Basic
  • AI算法工程师

    目录 机器学习 概率图模型 之 隐马尔可夫模型 HMM 一 马尔科夫链 二 HMM 的基本概念 1 HMM 背景与定义 2 HMM 的两个基本假设 3 确定 HMM 的两个空间和三组参数 三 HMM 三个基本问题 导图 四 HMM 相关算法
  • BLE MESH在配网广播中的Service UUID:1827与1828

    Mesh Provisioning UUID 1827 是一种服务的UUID 一般在广播包中中代表设备为未配网设备 也用于给配网器进行识别 在该服务下还有两个UUID 0x2ADB 用于写 0x2ADC 用于上报 在使用GATT配网阶段的数
  • java stack训练(1)

    有效的括号 给定一个只包括 的字符串 s 判断字符串是否有效 有效字符串需满足 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 class Solution public boolean isValid String s if
  • proteus 8.8 sp1 (含汉化、破解)安装方法

    若是按照此方法存在问题 欢迎大家留言评论 一 下载地址 链接 https pan baidu com s 1VtYO2dwKRV bMSG6xy6OEQ 提取码 pp9q 二 软件介绍 proteus软件在单片机仿真上面比较优越 8 6版本
  • linux与centos的关系

    首先大家应该都知道 操作系统主要分3个部分 分别是 内核 库 应用程序 内核主要管理与硬件的直接交互的原语代码就类似dao层的一个方法 是原子性的 而库是对内核的进一步封装 当一个功能需要多个原语时 就比如有的程序 需要键盘的输入 还需要显
  • UTSC-TK2016工具集使用笔记

    1 Pcap2Session ps1 对原始流量文件进行切分 以会话 所有层 会话 应用层 流 所有层 流 应用层的形式对原始流量文件进行切分 删除文件长度为0的数据 删除重复文件 生成2 Session文件夹 2 ProcessSessi
  • 数据结构实训-学生信息管理程序C语言版

    问题描述 学生信息包括 学号 姓名 年龄 性别 出生年月 地址 电话和 E mail等 试设计一个学生信息管理程序 实现学生信息的电子化管理 要求 使用文件方式存储数据 采用链表组织学生数据 基本要求 2 基本要求 系统以菜单方式工作 学生
  • java计算两个日期之间相差天数和相隔天数详解

    大家看到文章标题 两个日期之间相差天数和相隔天数 是否有疑惑呢 从中文字面理解 相差 和 相隔 是有区别的 然而就是这些区别害死很多人 却没有发现 在大量新增统计时是差之毫厘谬以千里 我能都发现是因为一个偶然的机会 一个项目运行几年却没有人
  • Ubuntu20.04安装后,root账户无法登录,ssh无法远程连接处理方法

    最近一直在用Ubuntu系统 发现了一些规律性的东西 每当安装完系统就得去做一些事情 要不然无法正常丝滑的使用 我把这几个罗列出来 装机的步骤我就省了 比较简单跟着向导来就行 不要最小化安装就行 1 更换apt 源为阿里云镜像源 下载包的时
  • 在前端页面下拉框动态显示数据库查询出来的结果,供客户勾选,限制客户自建字段(java版)

    最终效果 案例 前端代码 首先引入标签库jar和html代码 div class form group div
  • 08黑马笔记之栈的应用_就近匹配(括号)

    08黑马笔记之栈的应用 就近匹配 括号 思想 前提 使用栈的链式存储来实现 1 遇到左括号就放进栈中 再遇到右括号就将左括号从栈中删除 若栈中没有元素或者不是左括号 则说明右括号匹配失败 以上是判断右括号不匹配的 下面是判断左括号不匹配 2
  • pandas中DataFrame的修改元素值、缺失值处理、合并操作的方法

    实验目的 熟练掌握pandas中DataFrame的修改元素值 缺失值处理 合并操作的方法 实验原理 concat合并 pd concat objs axis 0 join outer join axes None ignore index
  • Qt Quick - Dial

    Qt Quick Dial使用总结 一 概述 二 使用 一 概述 Dial 表盘类似于音响或工业设备上的传统表盘旋钮 它允许用户在一个范围内指定一个值 像CircularGauge一样 Dial可以显示刻度来指示当前值 当一个合适的步长与t
  • centos7安装apt

    centos7安装apt 搜索并下载对应版本 rpmforge release 下载地址 https www rpmfind net linux rpm2html search php query rpmforge release 执行安装
  • 大型网站在架构上应当考虑哪些问题

    大型网站在架构上应当考虑哪些问题 分层 分层是处理任何复杂系统最常见的手段之一 将系统横向切分成若干个层面 每个层面只承担单一的职责 然后通过下层为上层提供的基础设施和服务以及上层对下层的调用来形成一个完整的复杂的系统 大型网站的软件系统也