大型网络架构变迁和知识图谱

——仅供个人学习使用,如有侵犯版权,请作者联系我,立马处理。

733795-20190314171135621-335922222.jpg

【前端页面缓存】 sessionStorage,localStorage,userData,cookie,
[sessionStorage]
h5后出现的新技术,这个生命周期短,当页面关闭后,存储资源即被释放。可存储体积也较大。对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。注:页面刷新,或disable cache,存储资源还在,只有当页面关闭后才没有。
[localStorage]
与sessionStorage唯一区别是,存储生命周期。它是长久存储在浏览器中,没有时间限制, 不清除就会一直存在。它不是存储在浏览器中,存储在本地。它按域名存储,存储大小大概是5m缺点是兼容性中等,ie9、ie10不支持,不能跨浏览器读取的。
[userData]
这个是比较老的存储技术,有兼容问题,Ie支持
[cookie]
这个兼容性最好,应用也最广泛,现在大多登陆校验都用这个。特点是:每次向服务器发请求,请求头都会带cookie,存储大小有限制
[openDataBase]
其实就是一个本地数据库,缺点是对前端开发成本高。它存储在本地

【页面片段缓存】
场景介绍:https://www.cnblogs.com/yuyijq/archive/2011/05/07/fragment_cache_one.html

一般,页面上会分为很多部分,而不同的部分更新的频率是不一样的。如果对整个页面采用统一的缓存策略则不太合适,
而且很多系统的页面左上角都有一个该死的“Welcome XXX”。这种特定于用户的信息我们是不能缓存的。对于这些情况我们就需要使用片段缓存了。对页面不同的部分(片段)施加不同的缓存策略,而要使用片段缓存,首先就得对页面进行切分。土一点的办法可以用iframe,用iframe将页面划分为一块块的,不过我总觉得iframe是个邪恶的东西。好点的办法可以用Ajax单独的请求这个片段的内容然后再填充,看起来挺美好的。不过使用Ajax也有一些限制:
1、如果页面上有许多片段,使用太多的这种技术,会有很多请求发送到服务器,HTTP对同一个域名有连接的限制,这样会降低并发连接的效率。
2、如果说第一个不是什么问题,那么还有一点可能对用户体验不友好。比如有一个片段可能响应慢点,造成页面闪烁。不过如果前面两点都可以克服,这个方案还是可以的。可恶的是我们的客户(此处省略500字),说他们的大多数用户处于一个禁用JavaScript的环境里。好吧,这个方案也不能使用了。

成熟的页面片段缓存技术-:ESI(Edge Side Include) https://www.cnblogs.com/yuyijq/archive/2011/05/08/fragment_cache_two.html

使用Velocity自定义标签的方案工作在应用程序这一层,这样开发人员有最大的控制权力,而且实现起来也比较简单,所使用的也都是大家都熟悉的技术,但问题是它还是由应用程序服务器来处理得,可以说它减轻了一部分应用程序服务器和数据库服务器的压力,但还有一部分压力还是需要它来承担,而且在应用程序中解决所使用的缓存必定是和应用程序所采用的缓存机制一样(当然你也可以为此独立使用一个缓存),对缓存服务器也有部分压力。
而使用ESI的方案,它需要运维团队的配置,甚至需要修改服务器配置的架构(添加了前端服务器),如果在多部门协调比较困难的项目中,这种方案还会遇到一些阻力。
但是它带来的好处确实显而易见的。首先ESI是一个W3C标准,我更倾向于采用标准的做法。而且Varnish这样的方向代理,它本来就擅长这个,它可以完全把这部分压力从应用程序服务器和缓存服务器上接管过来,而且会处理的更出色。

【数据缓存】https://mp.weixin.qq.com/s/rD6hln8bSLW07lNAgOmZ1g
[解决的问题] 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。
[原理]将数据写入读写更快的存储、离应用最近的位置(分布式应用、推荐系统)、离用户最近的位置(需要及时响应到客户端的服务)
[媒介]中间件: Varnish\Ngnix\Squid\Memcache\Redis\Ehcache,内容;文件、数据、对象;介质:CPU、内存、磁盘
[缓存设计] what?where?How?
what:1、热点数据 2、静态资源
Where:CDN、反向代理、分布式缓存服务器、本机
How:过期策略、固定时间、相对时间、同步机制、实时写入、异步刷新

【数据分布式缓存】大型网站分布式缓存 https://blog.csdn.net/chenxiaochan/article/details/71036497
[产生背景]

高并发环境下,大量的读写请求涌向数据库,磁盘的处理速度与内存显然不在一个量级,从减轻数据库的压力和提高系统响应速度两个角度来考虑,一般都会在数据库之前加一层缓存。由于单台机器的内存资源以及承载能力有限,并且,如果大量使用本地缓存,也会使相同的数据被不同的节点存储多份,对内存资源造成较大的浪费,因此,才催生出了分布式缓存。

    [memecache原理]

【数据库中间件】数据库中间件技术概貌了解一下、数据中间件技术详解
[解决的问题]为海量前台数据提供高性能、大容量、高可用性的访问
为数据变更的消费提供准实时的保障
高效的异地数据同步
[数据库中间件的分类]
分布式数据库分表分库
数据增量订阅与消费
数据库同步(全量、增量、跨机房、复制)
跨数据库(数据源)迁移

【分布式文件系统】分布式文件系统
[主流的分布式文件系统] Hadoop生态、以spark为核心的大数据中心
[应用背景及作用]企业对数据存储的要求越来越高,而且模式各异。分布式文件系统将数据存储在物理上分散的多个存储节点上,对这些节点的资源进行统一的管理与分配,并向用户提供文件系统访问接口,其主要解决了本地文件系统在文件大小、文件数量、打开文件数等的限制问题。参见

转载于:https://www.cnblogs.com/Erma/p/10531528.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[vue] SSR解决了什么问题?有做过SSR吗?你是怎么做的?

[vue] SSR解决了什么问题?有做过SSR吗?你是怎么做的? SSR server side render服务端渲染,解决spa应用缺点的首屏加载速度慢、不利于SEO问题个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,…

常用英语对话

妙语佳句(1)  1. It‘s not like that. 不是那样的   It‘s not like that.这句话是用来辟谣的。当别人误会了一件事的来龙去脉,你就可以跟他说It‘s not like that.「不是那样的。」当然随着语气及情境的不同,It‘s not like that.这句话也有可能是…

H265摄像头如何实现网页直播

介绍 目前安防监控行业,基本所有的摄像头都支持H264编码,但是已经有部分摄像头开始支持H265,并且支持H265的摄像机已经越来越多。H265相比H264有着很多优势,是压缩更高,网络传输消耗的带宽更小,相同码率下H…

java获取xls在项目路径_JAVA获取项目路径

在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。另:在Jsp,Servlet,Java中详细获得路径的方法!1.jsp中…

[vue] 你有自己用vue写过UI组件库吗?

[vue] 你有自己用vue写过UI组件库吗&#xff1f; {{item.title}}<dl v-if"item.list.length > 0"><dd v-for"(item2,index2) in item.list" :index"index2" :key"item2.title"><router-link :to"item2.route&…

在字符串中使用引号()等字符 需要用转义字符\ 例如

Response.Write("<script language\"javascript\">alert(输入的时间格式不正确&#xff01;);</script>"); 转载于:https://www.cnblogs.com/cuihongyu3503319/archive/2006/11/06/551830.html

java通用分页条件查询_通用分页查询

packagecom.dao;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importcom.bean.Author;importcom.db.DB;importcom.mysql.jdbc.Connection;importcom.mysql.jdbc.PreparedStatement;public classAuthorDao {//检验用户…

jq 在字符串中,去掉指定的元素

例&#xff1a; var arr ["4.5岁", "3.5岁", "5.5岁", "5岁", "4岁"] var num arr.replace(/岁/ig, ) console.log(num)结果为&#xff1a;["4.5", "3.5", "5.5", "5", "4&q…

[vue] 说说你对v-clock和v-pre指令的理解

[vue] 说说你对v-clock和v-pre指令的理解 v-cloak指令只是在标签中加入一个v-cloak自定义属性&#xff0c;在HTML还编译完成之后该属性会被删除。 v-pre可以用来阻止预编译&#xff0c;有v-pre指令的标签内部的内容不会被编译&#xff0c;会原样输出。个人简介 我是歌谣&…

“偷懒”的表单验证Demo

我们在做开发时&#xff0c;经常要做表单验证&#xff0c;比如验证文本框必须填内容时&#xff0c;而文本框又很多时&#xff0c;传统的做法是逐个判断: if (form1.name.value "") { alert("Sorry,please input your name!") form1.focus(); } 这样一来要…

java连接u盘_虚拟机VM6.0 LINUX redhat 挂接U盘,访问U盘

虚拟机VM6.0 LINUX9.0modprobe usb-storage挂上以后&#xff1a;fdisk -l /dev/sd*只显示SDA&#xff1a;SDA1,SDA2,SDA3这三个虚拟盘没有找到其他的U盘设备现在虚拟机LINUX的右下角显示出来USB设备的图标&#xff0c;但输入命令:fdisk -l 后只显示SDA1,SDA2和SDA3设备问&#…

【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择

很多刚做自动化的小伙伴&#xff0c;会在ChromeDriver版本选择时犯难&#xff0c;看来大家都被坑过&#xff0c;真正掌握独门绝技&#xff0c;都不是难事儿。 看好了主要步骤就4部 1、确定谷歌浏览器版本 2、找到谷歌浏览器版本与ChromeDriver版本对应关系 3、下载ChromeDriver…

[vue] 你知道nextTick的原理吗?

[vue] 你知道nextTick的原理吗&#xff1f; 提到DOM的更新是异步执行的&#xff0c;只要数据发生变化&#xff0c;将会开启一个队列&#xff0c;并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发&#xff0c;只会被推入到队列中一次。简单来说&#…

[贴图]TVB香港大部分演员照片、姓名(值得收藏)

转载于:https://www.cnblogs.com/chinhr/archive/2006/11/15/561101.html

java 将json转成utf 8_解决JSON.stringify()自动将中文转译成unicode的方法

最近在工作中&#xff0c;发现在IE8下JSON.stringify()自动将中文转译为unicode编码&#xff0c;原本选择的中文字符&#xff0c;传到后台变为了unicode编码&#xff0c;即\u****的形式。查找资料后发现&#xff0c;与标准的JSON.stringify()不同&#xff0c;IE8内置的JSON.str…

[vue] 移动端ui你用的是哪个ui库?有遇到过什么问题吗?

[vue] 移动端ui你用的是哪个ui库&#xff1f;有遇到过什么问题吗&#xff1f; vant&#xff0c;mint等等吧&#xff0c;各有各的坑&#xff0c;不过大部分都是可以查到解决方案的个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一…

Python基础之函数

详情请戳 python基础之函数介绍及使用python基础之内置函数python基础之迭代器和生成器python基础之装饰器转载于:https://www.cnblogs.com/zhangliang91/p/10547750.html

一个程序详细研究DataReader(转)

//***********************************************************//*名称&#xff1a;一个程序详细研究DataReader,同时显示Command用法//*功能&#xff1a;演示DataReader的各项操作。//*说明&#xff1a;如果需要文字说明请查看我的BLOG里面关于ado.net的文章//*作者&#xf…

我的世界java笔刷指令_《我的世界》基本笔刷教程

《我的世界》是一款3D的第一人称沙盘游戏&#xff0c;所呈现的世界并不是华丽的画面与特效&#xff0c;而是注重在游戏性上面。玩家在游戏中做着建设与破坏两件事&#xff0c;但是透过像乐高一样的积木来组合与拼凑&#xff0c;轻而易举的就能制作出小木屋、城堡甚至城市&#…

[vue] vue中是如何使用event对象的?

[vue] vue中是如何使用event对象的&#xff1f; click“func” 默认第一个参数传入event对象 click"func(0, $event)" 如果自己需要传入参数和event对象&#xff0c;则需要使用$event来获取event对象并传入func个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后…