技术记录栈

记录点滴:java、datebase、linux、spring、javascript、nginx

2019/01/06

Java内存数据网格TayzGrid的大数据应用

TayzGrid是一款适用于Java的内存数据网格,TayzGrid适用于数据库缓存,session共享,Hibernate二级缓存等场景。

TayzGrid技术架构

TayzGrid技术标准

TayzGrid遵循JCache API(JSR 107)标准,所以不用担心被TayzGrid的解决方案锁定。

TayzGrid大数据分析和处理

TayzGrid是一个高效的缓存方案,支持线性扩展。同时,TayzGrid也提供了一个MapReduce编程框架,用于编写处理程序,对分布在TayzGrid集群服务器中数据进行处理。

TayzGrid提供完全内存的MapReduce、聚集处理和Entry Processor,比基于HDFS的Hadoop处理速度更快,是不是联想到了spark。所有的MapReduce,Aggregator和Entry Processor代码,都在TayzGrid服务器进程(InProc)中运行。TayzGrid允许基于内存的数据网格集群,使所有数据以对象形式存在,这意味着代码可以在自己的堆空间,以对象的方式访问数据,而无需进行序列化/反序列化。使得TayzGrid效率更高,从而缩短处理的时间。

TayzGrid MapReduce

MapReduce的两个阶段,第一阶段的"Map"获取大量数据,并将其("Maps it")转换为较小的数据集,各个项被分解成键值对。

public class ProductAnalysisMapper implements com.alachisoft.tayzgrid.runtime.mapreduce.Mapper {

  @Override
  public void map(Object ikey, Object ivalue, OutputMap omap) {
    // This line emits value count to the map.
    omap.emit(ivalue, 1);
  }
}

第二阶段的"Reduce"将"Map"阶段的输出作为其输入,并进一步将其缩减成更小的数据集,输出也被分解成键值对。

public class ProductAnalysisReducer implements com.alachisoft.tayzgrid.runtime.mapreduce.Reducer {

  public ProductAnalysisReducer(Object k) { /* ... */ }

  @Override
  public void reduce(Object iv) { /* ... */ }

  @Override
  public void finishReduce(KeyValuePair kvp) { /* ... */ }
}

TayzGrid Aggregator

Aggregator与TayzGrid的MapReduce框架一起使用,向用户提供统计数据。Aggregator为MapReduce的结果集提供累积功能。Aggregator旨在产生有价值的结果。

class IntAggregator implements Aggregator<Collection, Integer> {

  public IntAggregator(String function) { /* ... */ }

  @Override
  public int aggragate(Collection value) { /* ... */ }

  @Override
  public int aggragateAll(Collection value) { /* ... */ }

  private int caclculate(Collection value) { /* ... */ }
}

Entry Processor

Entry Processors是JCache(JSR 107)API规范的一部分,由于TayzGrid遵循JCache标准,所以它必须提供Entry Processor功能。

Entry Processors支持自定义代码,TayzGrid在其内存数据网格集群的所有节点上运行该代码。Entry Processors在TayzGrid节点的进程中运行,所以,可以充分利用TayzGrid的数据,以对象形式进行访问。

public class CustomEntryProcessor<K, V, T>
    implements EntryProcessor<Object, Object, Object>, Serializable {
  @Override
  public T process(MutableEntry<Object, Object> me, Object... args)
      throws EntryProcessorException { /* ... */ }
}

TayzGrid特性

缓存数据库CRUD操作
批量执行CRUD操作
支持针对缓存中Item做锁定/解锁操作
支持Item级别的事件通知
Map/Reduce
JCache API
Evictions
支持绝对和相关的过期时间设置
支持Session持久化方案
支持主从复制和分区缓存模式
支持memcached协议(使用插件无需改动任何代码)
专为java程序定制的Memcached包装层,达到快速与Memcached集成的目的。
支持Hibernate二级缓存
能够在Microsoft Azure、Amazon aws和主流的云服务器上运行。

TayzGrid下载

TayzGrid分为企业版与开源版两种版本。

TayzGrid价格

商业版为永久许可,仅支付一次。