缓存服务器

数据库缓存层的优化

限于喜欢 提交于 2020-02-04 22:33:16
一、什么是数据库缓存 业务应用对Mysql产生的增删改查的操作造成了巨大的I/O开销和查询压力,这无疑对数据库和服务器都是一种巨大的压力,为了解决此类的问题,缓存概念就此产生 二、为什么使用缓存 1、极大地解决数据库服务器的压力 2、提高应用数据的响应速度 缓存需要考虑的内容 1、缓存方式的选择 2、缓存场景的选择 3、缓存数据的实时性(缓存的时间) 4、缓存数据的稳定性 三、使用MySql查询缓存(了解即可) 四、Redis和Memcache的对比 Memcache: Redis和Memcache的对比 1、性能相差不大 2、Redis增加了VM特性,突破物理内存的限制,Memcache可以修改最大的可用内存,采用LRU算法 3、Redis依赖客户端来实现分布式读取 4、Memcache本身没有数据沉余机制 5、Redis依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响; 6、Memcache不支持持久化,通常做缓存,提升性能; 7、Memcache在并发场景下,用cas保证一致性,redis事务支持比较弱,只能保证事务中每个操作的连续执行; 8、Redis支持多种数据类型 9、Redis用于数据量较小的高性能操作和运算上 10、Memcache用于动态系统中减少数据库负载,提升性能,适合做缓存,提高性能; 来源: https://www.cnblogs.com

What is Mapreduce?&&What is hadoop?

情到浓时终转凉″ 提交于 2020-02-04 22:32:04
架构扼要 想读懂此文,读者必须先要明确以下几点,以作为阅读后续内容的基础知识储备: Mapreduce是一种模式。 Hadoop是一种框架。 Hadoop是一个实现了mapreduce模式的开源的分布式并行编程框架。 所以,你现在,知道了什么是mapreduce,什么是hadoop,以及这两者之间最简单的联系,而本文的主旨即是,一句话概括:在hadoop的框架上采取mapreduce的模式处理海量数据。下面,咱们可以依次深入学习和了解mapreduce和hadoop这两个东西了。 Mapreduce模式 前面说了,mapreduce是一种模式,一种什么模式呢?一种云计算的核心计算模式,一种分布式运算技术,也是简化的分布式编程模式,它主要用于解决问题的程序开发模型,也是开发人员拆解问题的方法。 Ok,光说不上图,没用。如下图所示,mapreduce模式的主要思想是将自动分割要执行的问题(例如程序)拆解成map(映射)和reduce(化简)的方式,流程图如下图1所示: 在数据被分割后通过Map 函数的程序将数据映射成不同的区块,分配给计算机机群处理达到分布式运算的效果,在通过Reduce 函数的程序将结果汇整,从而输出开发者需要的结果。 MapReduce 借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map 函数,把键值对(key/value)映射成新的键值对(key

图解HTTP(6)

爷,独闯天下 提交于 2020-02-04 21:48:50
在HTTP协议的请求和响应报文中必定包含HTTP首部。 学习HTTP首部的结构和首部中各字段的用法。 1. HTTP报文首部 客户端和服务器分别处理请求和响应提供所需要的信息。 HTTP请求报文首部(方法、URI、HTTP版本、HTTP首部字段) HTTP响应报文首部(HTTP版本、状态码、HTTP首部字段) 2. HTTP首部字段 使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。 结构: 首部字段名:字段值 exp: Content-Type:text/html 4种首部字段类型 通用首部字段 :请求报文和响应报文都会使用的首部。 请求首部字段 :客户端到服务器发送请求报文使用的首部。包含附加内容、客户端信息、响应内容优先级。 响应首部字段 :服务器到客户端返回响应报文使用的首部。 实体首部字段 :针对请求报文和响应报文的实体部分使用的首部。 HTTP首部字段一览表 下面对部分重要字段进行介绍: Cache-Control 操作缓存的工作机制 Private/public 其他用户是否可以利用缓存 no-cache 防止从缓存中返回过期的资源 no-store 暗示请求或响应中包含机密信息,就是不能缓存该信息 s-maxage 指定缓存期限和认证 min-fresh 缓存服务器返回至少还未超过指定时间的缓存资源 Max-stale

浏览器输入URL后发生了什么

蹲街弑〆低调 提交于 2020-02-04 20:59:27
本文转载自公众号 前端迷 总体概览 大体上,可以分为六步,当然每一步都可以详细展开来说,这里先放一张总览图: DNS域名解析 在网络世界,你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器。DNS 服务器是高可用、高并发和分布式的,它是树状结构,如图: 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 权威 DNS 服务器 :返回相应主机的 IP 地址 DNS的域名查找,在客户端和浏览器,本地DNS之间的查询方式是递归查询;在本地DNS服务器与根域及其子域之间的查询方式是迭代查询; 递归过程: 在客户端输入 URL 后,会有一个递归查找的过程,从浏览器缓存中查找->本地的hosts文件查找->找本地DNS解析器缓存查找->本地DNS服务器查找,这个过程中任何一步找到了都会结束查找流程。 如果本地DNS服务器无法查询到,则根据本地DNS服务器设置的转发器进行查询。若未用转发模式,则迭代查找过程如下图: 结合起来的过程,可以用一个图表示: 在查找过程中,有以下优化点: DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 在域名和 IP

雅虎前端优化的35条军规

老子叫甜甜 提交于 2020-02-04 10:42:07
内容部分 1.尽量减少HTTP请求数   80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,Flash等等。减少组件数必然能够减少页面提交的HTTP请求数。这是让页面更快的关键。   减少页面组件数的一种方式是简化页面设计。但有没有一种方法可以在构建复杂的页面同时加快响应时间呢?嗯,确实有鱼和熊掌兼得的办法。   合并文件 是通过把所有脚本放在一个文件中的方式来减少请求数的,当然,也可以合并所有的CSS。如果各个页面的脚本和样式不一样的话,合并文件就是一项比较麻烦的工作了,但把这个作为站点发布过程的一部分确实可以提高响应时间。   CSS Sprites 是减少图片请求数量的首选方式。把背景图片都整合到一张图片中,然后用CSS的 background-image 和 background-position 属性来定位要显示的部分。   图像映射 可以把多张图片合并成单张图片,总大小是一样的,但减少了请求数并加速了页面加载。图片映射只有在图像在页面中连续的时候才有用,比如导航条。给image map设置坐标的过程既无聊又容易出错,用image map来做导航也不容易,所以不推荐用这种方式。   行内图片(Base64编码) 用 data: URL模式 来把图片嵌入页面。这样会增加HTML文件的大小,把行内图片放在(缓存的

Liunx(centos8)下的yum的基本用法和实例

倾然丶 夕夏残阳落幕 提交于 2020-02-03 23:04:02
yum 命令 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 yum 语法 yum [options] [command] [package ...] options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。 command:要进行的操作。 package操作的对象。 选项 -h:显示帮助信息; -y:对所有的提问都回答“ yes”; -c:指定配置文件; -q:安静模式; -v:详细模式; -d:设置调试等级(0-10); -e:设置错误等级(0-10); -R:设置yum处理一个命令的最大等待时间; -C:完全从缓存中运行,而不去下载或者更新任何头文件。 参数 #常的命令 install:安装rpm软件包; update:更新rpm软件包; check- update:检查是否有可用的更新rpm软件包; remove:删除指定的rpm软件包; list :显示软件包的信息; search:检查软件包的信息; info:显示指定的rpm软件包的描述信息和概要信息;

作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!

大城市里の小女人 提交于 2020-02-03 02:54:44
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊! 我现在告诉你,这些知识很有用,尤其对于作为程序员的你,这些是让你写代码的过程中让你不仅知其然,还知其所以然的知识,了解了这些,对你的编程只有大大的好处。 以上三篇文章可谓都是干货中的干货,看了一定让你功力大增😎 今天再来分享一下关于内存和磁盘的有关重要知识,如此一来, CPU,内存和磁盘 这比较重要的几个货,我们就都有所了解了。 关于磁盘,你了解多少? 可能大伙听到的比较多的是硬盘,毕竟这是我们每天使用电脑接触比较多的一个概念,再加上现在买电脑基本上从之前的机械硬盘都过渡到了现在的固态硬盘。 所以大家对硬盘这个名词不陌生,相对的,对磁盘的概念似乎就有点陌生了 啥是磁盘 首先记住,磁盘是个总的,也就是说 磁盘包括硬盘 ,那么还要知道磁盘是干嘛的, 磁盘最主要的功能就是保存电脑里面的信息 ,但是磁盘又有一些分类,不过我们首先要知道,在计算机中,保存信息的有这么两类: 第一:内部存储器

前端需要了解的http知识

谁说我不能喝 提交于 2020-02-02 05:07:13
一、五层协议 1. OSI(Open System Interconnection 开放式系统互联)七层协议 1)应用层 2)表示层 3)会话层 4)传输层 5)网络层 6)数据链接层 7)物理层 2. TCP/IP四层网络协议 (Transmission Control Protocol 传输控制协议) 1)应用层 2)运输层 3)网络层 4)网络接口层 3. 折中后的五层协议 1)应用层(dns,http) DNS解析成IP并发送http请求 2)传输层(tcp,udp) 建立tcp连接(三次握手) 3)网络层(IP,ARP) IP寻址 4)数据链路层(PPP) 封装成帧 5)物理层(利用物理介质传输比特流) 物理传输(然后传输的时候通过双绞线,电磁波等各种介质) 简括: 从应用层的发送http请求,到传输层通过三次握手建立tcp/ip连接,再到网络层的ip寻址,再到数据链路层的封装成帧,最后到物理层的利用物理介质传输。 二、HTTP状态码 1XX 用于指定客户端相应的某些动作 2XX 用于表示成功 3XX 用于已经移动的文件并且被包含在定位头信息中指定心的地址信息(重定向,为了完成请求,必须进一步执行的动作) 4XX 用于指出客户端错误 5XX 用于支持服务器错误 100 继续;101 分组交换协议 200 ok;201 被创建;202 被采纳;203 非授权信息;204

前端需要了解的http知识

旧巷老猫 提交于 2020-02-02 04:02:22
http基本概念 http是一个无状态 ,无连接的基于TCP协议的单向应用层协议 一、无连接 无连接即每次链接只处理一个请求,请求和应答后就断开链接 二、无状态 http的每次请求都是独立的,不相关的,协议对事物处理没有记忆功能。 HTTP无状态的特性严重阻碍了这些交互式应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP状态的技术就应运而生了,一个是Cookie,而另一个则是Session。 HTTP请求报文 HTTP请求报文由3部分组成(报文行+报文头+报文体): 常见的HTTP响应报文头属性 Cache-Control 响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 常见的取值有private、public、no-cache、max-age,no-store,默认为private。 private: 客户端可以缓存 public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的) max-age=xxx: 缓存的内容将在 xxx 秒后失效 no-cache: 需要使用对比缓存来验证缓存数据 no-store: 所有内容都不会缓存 默认为private,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据

session放入缓存(redis)、DB

情到浓时终转凉″ 提交于 2020-02-02 03:22:40
为什么要把SESSION保存在缓存   就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_save_path()进行设置,但是这么做有弊端, 第一就是保存到文件系统中,效率低,只要有用到session就会从好多个文件中查找指定的sessionid,效率很低。 第二就是当用到多台服务器的时候可能会出现,session丢失问题(其实是保存在了其他服务器上)。   当然了,保存在缓存中可以解决上面的问题,如果使用php本身的session函数,可以使用session_set_save_handler()函数很方便的对session的处理过程进行重新控制。如果不用php的session系列函数,可以自己编写个类似的session函数,也是可以的,我现在做的这个项目就是这样,会根据用户的mid、登录时间进行求hash作为sessionId,每次请求的时候都必须加上sessionId才算合法(第一次登录的时候是不需要的,这个时候会创建sessionId,返回给客户端),这么做也很方便、简洁高效的。当然了,我这篇文章主要说的是在php自身的SESSION中”做做手脚”。 SESSION保存在缓存中   php将缓存保存到redis中,可以使用配置文件,对session的处理和保存做修改