大型网站技术架构——读后摘要4

2023-10-24 01:48

本文主要是介绍大型网站技术架构——读后摘要4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网站的高性能架构

网站优化第一定律优先使用缓存

1.性能测试

测试的方面:

  1. 响应时间(注意瞬时响应)
  2. 并发数
  3. 吞吐量
  4. 性能计数器:指的是服务器和操作系统性能的一些数据指标。【System Load(系统负载)、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等指标】

2.Web前端性能优化

  • 浏览器访问优化:

  1. 减少Http请求
  2. 使用浏览器缓存
  3. 启用压缩
  4. CSS放在页面最上端,js放在页面最下端。【CSS对页面进行调整渲染一定要先加载,而js在页面加载的时候调用的话会导致页面卡顿等待js响应完】
  5. 减少Cookie的传输

  • CDN加速

CDN的本质就是缓存,将数据更新机房中访问量高的数据缓存到CDN服务器,如果客户发送请求,请求先去就近的CDN服务器,如果CDN服务器有请求响应直接发送,降低了请求的时间。

  • 反向代理

首先提高了网络的安全性能;代理服务器可以通过缓存技术,当请求数据存在代理服务器上,代理服务器直接响应。

3.应用服务器性能优化

应用服务器是用来处理网站业务的服务器。网站业务都部署在这里,这里是网站开发最复杂、多变的地方。优化的手段主要有缓存、集群、异步

3.1分布式缓存

缓存的基本原理

缓存是指将数据存储在访问数据较高的存储介质中。一方面缓存访问速度快,keyi减少数据访问的时间;另一方面缓存的数据是经过处理得到的,那么数据可是可以直接使用不需要在进行计算,因此缓存还起到减少计算时间的作用。

缓存的本质是一个内存Hash表,数据以key、value对的形式存在Hash表中。key的hashcode对应Hash表索引。

缓存常用应用场景:缓存常用来存储哪些对读写速度要求高、很少发生变化的数据。如商品类目、热门词汇收索

合理使用缓存

    1.频繁修改的数据

    2.没有热点的数据(缓存数据时会设置失效时间,如果在缓存中的数据没有访问的热点,到失效时间就会被清除,存在缓存中没什么意义)

    3.数据不一致与脏读(如果缓存中的数据失效,会从数据库中加载,如果此时用户访问时就会产生脏读的可能);

    4.缓存的可用性(指的是稳定性,会不会崩溃,因为缓存崩溃可能导致数据库崩溃)

    5.缓存预热(在缓存系统启动时预先加载用的数据)

    6.缓存穿透(对于一些不恰当的业务,【指持续、并发请求缓存没有的数据】,这些请求会向数据库发送请求可能导致数据库崩溃,所以缓存将这些不存在的数据存下来,其值为null)。

3.1.1分布式缓存架构

常用的有两种:1.JBoss Cache 2.Memcached

    JBoss Cache:所有缓存服务器存相同的数据,当一台缓存服务器更新时,会通知 其他缓存服务器更新。【大型网站不会用,太占内存使用空间,冗余度太高!!!】

    Memcached:互不通信的分布式缓存。

    Memcached优点:

            1.简单的通信协议

            2.丰富的客户端程序

            3.高性能的网络通信

            4.高效的内存管理

            5.互不通信的服务器架构

3.2异步

消息队列具有很好的削峰作用——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。【比如在限时促销时使用,可以防止开始时大量用户涌入导致系统崩溃】,用户登录后如果提交订单可能会失败,因为登录信息可能还在消息队列,所以提交订单的流程也需要修改,不能直接返回给用户订单提交成功,要等消息队列里订单真的完成再以邮件或短信的形式提示用户成功。

3.3使用集群

网站高并发访问的情景下,使用负载均衡技术为一个应用构建一个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上,避免了一台服务器因为负载压力过大导致响应缓慢。

3.4代码优化

        1.多线程

            从资源利用上来看,使用多线程的原因主要有两个:IO阻塞和多CPU

            操作IO通常都会使用较长的时间,当此线程阻塞时,cpu可以调度其他线程处理,这样在IO阻塞的时候就不会出现CPU空闲,因为现在CPU都是多核,我们要最大限度的使用cpu完成操作。

        多线程的使用也会伴随线程安全问题:

        解决线程安全问题的方法:

                1.将对象设计为无状态对象:(所谓无状态是指对象本身不存储状态信息【对象最好无成员变量 ,即使有也要是定值,不可以被操作改变,因为你要是改变,其他线程不知道值不会改变就会乱】)

                2.多使用局部变量、对象(这样线程运行完就会被释放与其他线程毫无关联)

                3.并发访问时使用锁,让线程同步操作的数据。

        2.资源复用

            所谓资源复用,是指在做连接数据库操作、网络连接操作、复杂对象等:可以使用单利设计模式,对象池,连接池

        3.数据结构

        4.垃圾回收

            垃圾回收机制:

                            

                          

           5.存储性能优化

                1.机械硬盘与固态硬盘的应用

                2.B+树[多路查找树],LSM树

                    

                3.RAID和HDFS

                    RAID(廉价磁盘冗余阵列)技术,主要是为了改善磁盘访问延迟,增强磁盘的可用性和容错能力。

                    HDFS中两种重要的服务器角色:NameNode(服务节点),DataNode(数据存储节点)

这篇关于大型网站技术架构——读后摘要4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/271895

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者