分布式缓存的学习(memcached,JBoss Cache)
2016-07-10 15:06
225 查看
一、分布式缓存
memcached,JBoss Cache,SwarmCache,OSCache,JCS,EHCache等开源项目的关注率比较高。
memcached和其他几个不同,JBoss Cache的特点是,功能大而全,可算是Cache集大成者,几乎什么都支持。
其余的几个都很轻量。SwarmCache,OSCache,JCS支持Cluster。EHCache不支持Cluste
Cache的基本特性。
1. 时间记录
数据进入Cache的时间。
2. timeout过期时间
Cache里面的数据多久过期
3. Eviction Policy 清除策略
Cache满了之后,根据什么策略,应该清除哪些数据。
比如,最不经常被访问的数据,最久没有访问到的数据。
4. 命中率
Cache的数据被选中的比率
5. 分级Cache
有些Cache有分级的概念。比如,几乎所有的Cache都支持Region分区的概念。可以指定某一类的数据存放在特定的Region里面。JBoss Cache可以支持更多的级别。
6. 分布式Cache
分布在不同计算机上的Cache
7. 锁,事务,数据同步
一些Cache提供了完善的锁,事务支持。
以上特性,大部分Cache都有相应的API支持。这些API很直观,也很简单
1)memcached
是一个C/S结构的远程Cache实现,主要使用在Shared Nothing Architecture中.
不同计算机上的应用程序通过一个IP地址来访问memcahced Server。
同一个key对应的数据,只存在于一台memcached server的一份内存中.
memcached server也可以部署在多台计算机上。Memcached通过key的hashcode来判断从哪台memcached server上存取数据数据。我们可以看到,同一个key对应的数据,还是只存在于一台memcached server的一份内存中.所以,memcached不存在数据同步的问题.
memcached由于是远程Cache,要求放到Cache的Key和Value都是Serializable.
2)JBoss Cache
Cluster Cache的数据同步,需要网络通信,这就要求放到Cache的数据是Serializable。
JBoss Cache提出了POJO(Plain Ordinary Java Objects的缩写,它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类,POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口,也被称为Data对象) Cache的概念,意思是数据不是Serializable,一样能够在Cluster中同步
JBoss POJO Cache通过AOP机制(Aspect Oriented Programming 面向切面编程,也叫面向方面编程,是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率),支持对象同步,支持对象属性的同步,支持关联对象的Cache,支持继承,集合,Query,并支持不同级别的事务,俨然一个小型内存数据库级别的数据存储系统。
JBoss POJO Cache的对象管理类似Hibernate,JDO,JPA等ORM工具,同样有Detach和Attach的概念.Attach就是put,把对象放入到Cache中。Detach就是remove,把对象从Cache中删除。put的时候,放进去的是个干干净净的POJO,出来的时候,就是Enhanced Object,里面夹杂了很多Interceptor代码,监听对象的方法。
1)Cache的操作通常有4个,get,put,remove,clear。
对 于Cluster Cache来说,读操作(get)肯定是Local方法,只需要从本台计算机内存中获取数据。Remove/clear两个写操作,肯定是Remote方 法,需要和Cluster其他计算机进行同步。Put这个写方法,可以是Local,也可以是Remote的。 Local Put比起Remote Put的优势很明显,所以,通常的Cluster
Cache都采用Local Put的策略。
2)Memcached可以看作是Center Cache。
Center Cache和Cluster Cache的特性比较如下:
Center Cache没有同步问题,所以,remove/clear的时候,比较有优势,不需要把通知发送到好几个计算机上。
但是,Center Cache的所有操作,get/put/remove/clear都是Remote操作。而Cluster Cache的get/put都是Local操作,所以,Cluster Cache在get/put操作上具有优势。Local get/put在关联对象的组装和分拆方面,优势比较明显。
3)Cache可以用在任何地方,比如,页面缓存。但Cache的最常用场景是用在ORM(对象关系映射,提供了概念性的、易于理解的模型化数据的方法)中,比如,Hibernate(一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库),JDO(Java Data
Object,是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储),JPA(Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中)中。ORM Cache的使用方法有个原则——不要把没有Commit的修改数据放入到缓存中。这是为了防止Read Dirty。数据库事务分为两种,一种是读事务,不修改数据,一种是写事务,修改数据。
4)ORM Cache一般分为两种。一种是ID Cache(ORM文档中称为二级Cache),用来存放Entity ID对应的Entity对象;一种是Query Cache,用来存放一条查询语句对应的查询结果集.Query Cache的性能需要考虑几个方面。比如,Query Key。Query Key一般由2个部分组成:Query
String部分,SQL, HQL, EQL, or OQL;参数部分。寻找Query Key的对应数据的时候,Query Key的比较有两个步骤,先hash,然后equals
原文地址:http://blog.csdn.net/smaychun/article/details/8569152
memcached,JBoss Cache,SwarmCache,OSCache,JCS,EHCache等开源项目的关注率比较高。
memcached和其他几个不同,JBoss Cache的特点是,功能大而全,可算是Cache集大成者,几乎什么都支持。
其余的几个都很轻量。SwarmCache,OSCache,JCS支持Cluster。EHCache不支持Cluste
Cache的基本特性。
1. 时间记录
数据进入Cache的时间。
2. timeout过期时间
Cache里面的数据多久过期
3. Eviction Policy 清除策略
Cache满了之后,根据什么策略,应该清除哪些数据。
比如,最不经常被访问的数据,最久没有访问到的数据。
4. 命中率
Cache的数据被选中的比率
5. 分级Cache
有些Cache有分级的概念。比如,几乎所有的Cache都支持Region分区的概念。可以指定某一类的数据存放在特定的Region里面。JBoss Cache可以支持更多的级别。
6. 分布式Cache
分布在不同计算机上的Cache
7. 锁,事务,数据同步
一些Cache提供了完善的锁,事务支持。
以上特性,大部分Cache都有相应的API支持。这些API很直观,也很简单
1)memcached
是一个C/S结构的远程Cache实现,主要使用在Shared Nothing Architecture中.
不同计算机上的应用程序通过一个IP地址来访问memcahced Server。
同一个key对应的数据,只存在于一台memcached server的一份内存中.
memcached server也可以部署在多台计算机上。Memcached通过key的hashcode来判断从哪台memcached server上存取数据数据。我们可以看到,同一个key对应的数据,还是只存在于一台memcached server的一份内存中.所以,memcached不存在数据同步的问题.
memcached由于是远程Cache,要求放到Cache的Key和Value都是Serializable.
2)JBoss Cache
Cluster Cache的数据同步,需要网络通信,这就要求放到Cache的数据是Serializable。
JBoss Cache提出了POJO(Plain Ordinary Java Objects的缩写,它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类,POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口,也被称为Data对象) Cache的概念,意思是数据不是Serializable,一样能够在Cluster中同步
JBoss POJO Cache通过AOP机制(Aspect Oriented Programming 面向切面编程,也叫面向方面编程,是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率),支持对象同步,支持对象属性的同步,支持关联对象的Cache,支持继承,集合,Query,并支持不同级别的事务,俨然一个小型内存数据库级别的数据存储系统。
JBoss POJO Cache的对象管理类似Hibernate,JDO,JPA等ORM工具,同样有Detach和Attach的概念.Attach就是put,把对象放入到Cache中。Detach就是remove,把对象从Cache中删除。put的时候,放进去的是个干干净净的POJO,出来的时候,就是Enhanced Object,里面夹杂了很多Interceptor代码,监听对象的方法。
1)Cache的操作通常有4个,get,put,remove,clear。
对 于Cluster Cache来说,读操作(get)肯定是Local方法,只需要从本台计算机内存中获取数据。Remove/clear两个写操作,肯定是Remote方 法,需要和Cluster其他计算机进行同步。Put这个写方法,可以是Local,也可以是Remote的。 Local Put比起Remote Put的优势很明显,所以,通常的Cluster
Cache都采用Local Put的策略。
2)Memcached可以看作是Center Cache。
Center Cache和Cluster Cache的特性比较如下:
Center Cache没有同步问题,所以,remove/clear的时候,比较有优势,不需要把通知发送到好几个计算机上。
但是,Center Cache的所有操作,get/put/remove/clear都是Remote操作。而Cluster Cache的get/put都是Local操作,所以,Cluster Cache在get/put操作上具有优势。Local get/put在关联对象的组装和分拆方面,优势比较明显。
3)Cache可以用在任何地方,比如,页面缓存。但Cache的最常用场景是用在ORM(对象关系映射,提供了概念性的、易于理解的模型化数据的方法)中,比如,Hibernate(一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库),JDO(Java Data
Object,是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储),JPA(Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中)中。ORM Cache的使用方法有个原则——不要把没有Commit的修改数据放入到缓存中。这是为了防止Read Dirty。数据库事务分为两种,一种是读事务,不修改数据,一种是写事务,修改数据。
4)ORM Cache一般分为两种。一种是ID Cache(ORM文档中称为二级Cache),用来存放Entity ID对应的Entity对象;一种是Query Cache,用来存放一条查询语句对应的查询结果集.Query Cache的性能需要考虑几个方面。比如,Query Key。Query Key一般由2个部分组成:Query
String部分,SQL, HQL, EQL, or OQL;参数部分。寻找Query Key的对应数据的时候,Query Key的比较有两个步骤,先hash,然后equals
原文地址:http://blog.csdn.net/smaychun/article/details/8569152
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- 实战Memcached缓存系统
- Spark RDD API详解(一) Map和Reduce
- Spring Boot 开发微服务
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- lwn拾遗:[sn3218 led drivers]-api解释-1
- 页面元素查找之Selectors API
- 页面缓存:内存和文件之间的那些事
- 一个小型js框架myJSFrame附API使用帮助
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- Redis和Memcached的区别详解
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- 浅析SQL Server中的执行计划缓存(上)