`
conquer0
  • 浏览: 78297 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

缓存cassandra二

阅读更多
package com.huawei.support.cache.impl;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import com.huawei.support.exception.ApplicationException;

/**
* 从cacheConfig.xml中读取配置文件.
*/
public final class CacheConfigReader
{
    /**
     * sLog
     */
    private static Log sLog = LogFactory.getLog(CacheConfigReader.class);
    /**
     * 本实例
     */
    private static CacheConfigReader sInstance;
    /**
     * 最终修改时间
     */
    private static long sLastModified = -1;
    /**
     * 缓存服务器列表
     */
    private static String[] sServerList;
    /**
     * 默认Keyspace
     */
    private static String sDefaultKeyspace;
    /**
     * 默认ColumnFamily
     */
    private static String sDefaultColumnFamily;
    /**
     * DataBinding Map
     */
    private static Map<String, String> sDataBindingMap =
        new HashMap<String, String>();

    /** 默认构造函数.
     * @param aConfigFile 配置文件名
     * @throws ApplicationException ApplicationException
     */
    private CacheConfigReader(String aConfigFile)
        throws ApplicationException
    {
        try
        {
            DocumentBuilderFactory factory =
                DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(aConfigFile);
            XPathFactory pathFactory = XPathFactory.newInstance();
            XPath xpath = pathFactory.newXPath();
            // 解析缓存服务器列表.
            sServerList = readServerList(xpath, doc);
            // 解析默认Keyspace.
            sDefaultKeyspace = readDefaultKeyspace(xpath, doc);
            // 解析默认ColumnFamily
            sDefaultColumnFamily = readDefaultColumnFamily(xpath, doc);
            // 解析DataBindings.
            sDataBindingMap = readDataBindingMap(xpath, doc);
        }
        catch (ParserConfigurationException e)
        {
            sLog.error(e);
            throw new ApplicationException(e);
        }
        catch (XPathExpressionException e)
        {
            sLog.error(e);
            throw new ApplicationException(e);
        }
        catch (IOException e)
        {
            sLog.error(e);
            throw new ApplicationException(e);
        }
        catch (SAXException e)
        {
            sLog.error(e);
            throw new ApplicationException(e);
        }
    }

    /** 获取本实例.
     *
     * @return CacheConfigReader cache配置文件读取实例
     * @throws ApplicationException [参数说明]
     */
    public static CacheConfigReader getInstance() throws ApplicationException
    {
        // 从classpath中读取配置文件
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        URL url = loader.getResource("cacheConfig.xml");
        File configFile = new File(url.getFile());
        // 实例为null或者配置文件被修改则重新读取配置文件
        if ((null == sInstance) || (sLastModified != configFile.lastModified()))
        {
            sInstance = new CacheConfigReader(url.getFile());
            // 设置最终修改时间
            sLastModified = configFile.lastModified();
        }
        return sInstance;
    }

}
分享到:
评论

相关推荐

    cassandra 学习

    - **内存表**:Cassandra使用内存表来缓存最新的写入数据,以提高写入性能。 - **数据缓存**:用于缓存经常访问的数据,从而减少磁盘访问。 #### 六、客户端连接与请求处理 **客户端连接与请求处理**是Cassandra...

    ycsb cassandra 压力测试工具

    - 根据测试结果调整 Cassandra 配置,如副本因子、内存分配、缓存策略等,优化性能。 - 调整 YCSB 参数,如并发线程数、请求模式(读多还是写多)、数据量等,以模拟更真实的场景。 总结,YCSB Cassandra 压力...

    Cassandra架构与应用

    #### 二、Cassandra架构解析 ##### 基础知识与数据模型 Cassandra采用了一种基于列族(Column Families)的数据模型,其中包含了Column、SuperColumn、ColumnFamily、Keyspaces、Row等核心概念。每个Keyspace可视...

    cassandra集群配置

    下载 Cassandra 二进制发行包,挑选其中的一台机开始配置。展开 Cassandra 发行包,并进入 conf 目录,修改 cassandra.yaml 文件,该文件为主要配置文件。在 cassandra.yaml 文件中,需要设置数据文件目录、提交日志...

    cassandra权威指南(中文)

    - **压缩与缓存**:探讨Cassandra中数据的压缩方式及缓存机制,提高数据读取速度。 #### 八、Cassandra的应用场景与案例分析 - **应用场景**:列举适合使用Cassandra的业务场景,如物联网、社交网络、大数据平台等...

    Cassandra文档

    - 配置文件:`cassandra.yaml`是主要的配置文件,包含节点间通信、数据存储、缓存策略等设置。 - 扩展与缩容:Cassandra允许在线添加或移除节点,无需停机。 3. **数据模型与查询** - 键空间(Keyspace):类似...

    Cassandra技术详解 操作与测试报告

    #### 二、Cassandra的特点 1. **灵活的Schema** - Cassandra允许开发者在不预先定义具体结构的情况下进行数据存储和检索。这意味着可以随时动态地添加或删除字段,而无需停机或重新组织数据表结构。这种灵活性非常...

    Cassandra在Windows上安装及使用方法

    3. **缓存目录**:更改`saved_caches_directory`从`/var/lib/cassandra/saved_caches`至`D:\cassandra\saved_caches`。 4. **日志文件路径**:将`log4j.appender.R.File`从`/var/log/cassandra/system.log`更改为`D:...

    Cassandra使用手册

    特别需要注意的是,数据文件目录、提交日志目录和缓存文件夹路径需要明确指定。在集群模式下,每个节点都必须正确配置cassandra.yaml文件中的参数,尤其是cluster_name(集群名)和seeds(种子节点)这两个参数要...

    Cassandra个人学习笔记总结

    2. **增强的内存和硬盘空间管理**:新版Cassandra对内存和硬盘资源的管理进行了优化,确保了更高效的空间利用和更稳定的系统表现。 3. **可调整的压缩策略**:Cassandra 1.0引入了一种创新的压缩算法,能够针对每一...

    apache-cassandra-2.0.1-bin.tar

    二、Cassandra 2.0.1 版本的关键改进 1. CQL3支持:Cassandra 2.0引入了更强大的Cassandra Query Language (CQL)版本3,提供了更接近SQL的查询体验。 2. SSTable级别的压缩:在2.0.1版本中,数据存储格式SSTable支持...

    存储数据(cassandra)

    例如,调整堆大小、开启JVM的直通内存、优化数据缓存策略等,都能显著提升Cassandra的性能。 ### 5. CQL与API Cassandra查询语言(Cassandra Query Language,简称CQL)是面向用户的SQL-like接口,简化了数据操作...

    Cassandra权威指南(中文版)

    - **缓存机制**:Cassandra提供了多种类型的缓存,包括行级缓存、键级缓存等。 - **压缩技术**:通过对数据进行压缩减少磁盘占用空间和I/O操作次数。 ### 三、Cassandra实际应用与最佳实践 1. **数据建模**: -...

    php使用cassandra用到的phpcassa-0.1

    8. **性能优化**:理解Cassandra的索引、缓存和批处理等特性,有助于提高phpcassa的性能。 9. **版本兼容性**:确保phpcassa版本与运行的Cassandra集群版本兼容,避免因版本差异导致的问题。 10. **安全性**:使用...

    Cassandra 分布式数据库详解

    Cassandra 是一种分布式数据库系统,特别设计用于处理大规模数据,具备高可用性和可扩展性。在深入了解 Cassandra 之前,理解其配置文件 `storage-config.xml` 中的参数至关重要,因为这些参数直接影响到系统的性能...

    Cassandra nosql

    2. **高并发读写性能**:面对大量随机读写请求,Cassandra通过其独特的数据分布和复制策略,确保了系统的稳定性和响应速度,有效应对了市场中缺乏成熟解决方案的问题。 3. **无现有产品能满足的特定需求**:在...

    apache-cassandra-3.5-bin.tar

    2. **安装Cassandra**:从Apache官方网站下载并解压`apache-cassandra-3.5-bin.tar`,配置环境变量,如`CASSANDRA_HOME`。 3. **配置Cassandra**:修改`conf/cassandra.yaml`配置文件,设置集群名称、种子节点、...

    深入研究Cassandra后重读Dynamo

    #### 二、Dynamo架构简介及问题分析 **1. Consistent Hashing的问题** Dynamo采用了基于一致哈希(Consistent Hashing)的分区策略来实现数据分布。具体来说,它利用环状拓扑结构将数据映射到不同的节点上。尽管这种...

    Dynamo-and-Cassandra-paper

    Cassandra 则通过预写日志(Write Ahead Log, WAL)和内存数据缓存进一步提升了写入速度。同时,两者的分布式特性使得它们能够线性扩展,处理PB级别的数据。 在实际应用中,Dynamo 常用于亚马逊的各种内部服务,如...

Global site tag (gtag.js) - Google Analytics