SEARCH
新闻资讯

网站知识库

网站对象缓存

2020/3/12 12:03:07

对象缓存用于存储会被应用再用到的对象。这些对象通常来自数据库,或由计算或应用操作生成。这些对象几乎都是有序对象,会被排列或组编成有序的格式,以便最小化内存占用量。在获取这些对象时,它们的排序会被打乱或解编,以转换成原始的数据类型。所谓组编,就是把对象的内存透露表现情势转换成字节流或字节序列进程,以便存储或传输。所谓解编,就是把字节流透露表现的对象解码成原始的对象格式的进程。假如使用了对象缓存,应用必须注重到它们,并且实现操作缓存的方式。


 
操作缓存的基本方式包括把数据加人缓存、从缓存中获取数据以及更新数据。通常在缓存中添加数据叫做set,从缓存中获取数据叫做get,更新数据是replace。很多程序设计语言对最流行的缓存都已经有内置的支撑。memcached是当前最常用的缓存之一。它“本质上是一种高性能的分布式内存对象缓存体系,但目的在于通过减轻数据库的负载来加速动态的Web应用”。这种特别的缓存使用了特别很是快的无壅塞网络输入输出(IO),它自身具备防止内存分片的slab分配器、可以确保分配是的,即不论数据多少都能够在常数时间内进行计算。
 
正如在memcached的描述中所说的,它重要是通过削减对数据库的请求,从而加速了Web应用。这种方式是合理的,由于数据库几乎总是应用层中获取数据最慢的设备。在关系数据库管理体系中,实现ACID(原子性、一致性、隔离性、持久性)属性的额外付出是很高的,尤其是要从硬盘读写数据时。但在某些情况下,在体系的其他层之间使用对象缓存层,也是完全正常和明智的。
 
在一个典型的两层或者三层架构中,放置对象缓存最好的方式是把它放在数据库层之前。正如前面提到过的,这是由于数据库层通常是团体实行速度最慢的层,也通常是扩展最贵的一层。其中有一个Web服务器层、一个应用服务器层和一个数据库层。这里不止有一个对象缓存,而是有两个。一个对象缓存位于应用服务器与数据库层之间,另一个位于Web服务器与应用服务器之间。假如应用服务器要实行大量可缓存的计算或操作,那么这种设计是很合理的。这样可以使应用服务器不必总是重复计算雷同的数据,而是可以把效果缓存起来,从而减轻了应用服务器的负载。与数据库的情况相似,这个缓存层可以在不添加硬件的情况下,帮助应用服务器层扩展。缓存的对象很可能是来自数据库或应用服务器的完备数据集的子集。例如,Web服务器上的应用代码可能会利用缓存存放用户权限对象,但是不会存放交易金额,由于用户权限不经常改变且会被经常访问,而每个交易的交易金额可能各不同且只会被访问一次。
 
数据库的ACID属性
 
原子性、一致性、隔离性、持久性(ACID)是数据库管理体系采用的属性,以确保交易是完全可靠的。
 
原子性是数据库管理体系的属性,可以确保一个交易的所有义务都被完全实行了,或者整个交易都被回退了。硬件或软件的故障不会造成交易只完成了一半。
 
一致性是确保交易前和交易后数据库保持稳固状况的属性。假如一个交易成功了,它会把数据库从一个有用状况转换到另一个吻合肯定规则的有用状况。
 
隔离性是在一个交易操作数据时,防止另一个交易访问它的属性。大多数数据库管理体系都采用数据库锁来确保隔离性。
 
持久性这个属性指的是在体系把交易标记为成功后,交易就会保持为完成的、不会回退的。所有的一致性检查必须在交易被认为是完成了之前完成。
 
假如你在网站建设数据库或应用服务器中有经常被访问但却不经常更新的数据,那么使用对象缓存就特别很是合理。要削减负载,首先查看的就是数据库,由于它通常是最慢也是最贵的一层。但除此之外,还要考虑一下体系中的其他层或池,看看哪里必须要对象缓存。另一个可能必须要对象缓存的地方是集中的会话管理缓存。假如你使用了会话数据,我们建议你首先尽可能地削减会话数据。假如你可以避免使用会话,那么就根本不要采用它们,由于它们在基础设施和架构方面,实现成本都很高。假如你不能避免使用会话,我们建议你考虑集中的会话管理体系,这样可以把请求发送到任何一个Web服务器上,会话可以从一个服务器转移到另一个服务器上,不会造成任何干扰。这样通过一个负载均衡的解决方案,你就能够更有用地利用Web服务器,而当发生故障时,也可以以最小的干扰,把用户从一台服务器上转移到另一台服务器上。你可以继承检查本身的应用,找到更多可以应用对象缓存的地方。







如没特殊注明,文章均为成都网站建设公司唯赛网络原创,转载请注明来自http://www.weseo.cn/News/knowledge_675_11274.html

Contact

ADD:成都市青羊区光华东三路西环广场6楼

TEL:028-64232097

Wechat

微信二维码