Xixibase

分布式缓存系统
授权协议 Apache
开发语言 Java C/C++
所属分类 服务器软件、 缓存服务器
软件类型 开源软件
地区 国产
投 递 者 仲孙焱
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Xixibase是一个高性能,跨平台的分布式缓存系统。Xixibase server 采用 C++ 实现,底层网络库采用的是Boost Asio。

Xixibase 主要特点:

1. 实现'Local Cache'功能, 当客户端打开'Local Cache'选项, 客户端可以将数据同时存储在Server 端和本地,并且保证本地数据和Server 端的数据的一致性。当Server 端的数据被更新、删除或者过期,本地的数据会立即被删除,下次再对该数据的访问,请求会直接到达Server 。
'Local Cache'的优点:
    a. 极大地提高了性能:特别是对那些读操作远远大于写操作的数据,可以提供1000万以上的TPS.参考:http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark2.html 
    b. 提高了应用的服务质量和用户体验:在'Local Cache'命中的情况下,请求不需要通过网络到远程Cache Server上查询,减少了总体的处理的时间,提高用户体验。
    c. 降低了Cache Server 的压力,原先需要10台Cache Server ,现在可能只要5台就够了。可降低成本,保护环境。
    d. 降低网络流量,减少网络设备的成本。
    e. 提高整个Cache 系统的总体吞吐量。综合a, c, d三点,系统的总体吞吐量会得到极大的提升。

2. 支持虚拟化, 采用分Group的方法,不同的应用可以使用不同的GroupID,这样当不同的应用在访问同一个Cache Server时,不会相互干扰。
    a. GroupID类似与命名空间,每个应用不需要考虑:某个Key 是否会和其它应用的Key 冲突。
    b. 当某个应用要清空自己相关的Cache,不需要一个Key 一个Key 的去Delete ,可以直接调用Flush ,不用担心Flush 会影响其它应用的数据。
    c. 可以对每个Group 单独统计读写、存储的信息。

3. 支持'MultiAPI', 如multiGet, multeUpdate, multiDelete。测试表明'MultiAPI'在提升性能方面,非常明显。参考:http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark.html

4. 超高性能. 无论'Local Cache'还是'MultiAPI'都在不同方面,极大地提升了性能。

5. 跨平台, Xixibase server由C++实现,底层网络库采用的是Boost Asio。理论上,只要Boost Asio支持的平台,Xixibase server都可以支持。目前,已经测试了Linux, Windows, Mac。

6. 部分地支持HTTP协议,可以直接在浏览器上访问Xixibase Server。我们可以使用JavaScript 非常方便地访问Xixibase Server。再加上Xixibase 的Local Cache 功能,将极大地减少Server 的压力,提升用户的体验。

性能:

读写TPS :150,000以上

启动Local Cache高命中情况下,读TPS:10,000,000以上。

MultiAPI, TPS: 不同条件下,差异较大,详情参考一下链接:

Performance Benchmark:
http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark2.html

和Memcached的几个Client 比较:
http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark.html

 

项目:

http://code.google.com/p/xixibase/
包含:Xixibase Server 和Xixibase Java Client

目前Client 只实现了Java Client,欢迎有兴趣的朋友可以实现其它平台的Client。
关于Xixibase Java Client 的使用,test包里有几个例子,大家可以参考一下。

有任何问题、建议或者发现Bug可以联系本人。

 相关资料
  • Web 应用程序可能需要为成百上千甚至更多的用户同时提供服务。如果你没有采取必要的措施,在这种负载下,你的网站可能会崩溃或变得没有响应。 假设在主页显示最后 10 条新闻,并且平均每分钟有上千名用户访问此页面。你可能为每个用户通过查询数据库来显示页面视图信息: SELECT TOP 10 Title, NewsDate, Subject, Body FROM News ORDER BY NewsD

  • 问题内容: 我正在寻找Java分布式缓存解决方案。我们希望功能喜欢: 我们已经分析了Terracotta这样的框架,它似乎是缓存框架中我们想要的一切……但是,似乎需要一个中央缓存节点,这成为我们的单点故障。 除了推出我们自己的解决方案之外,还有其他想法吗? 问题答案: 我建议使用JBossCache或EhCache(使用分布式缓存侦听器)。我都用过,我都喜欢,它们都适合您的要求。

  • 我正在使用ehcache(2.10.1)和terracotta(开源4.3.1)实现分布式缓存。我在单台机器上尝试了两个JVM实例和一个terracotta服务器,代码按预期工作,没有错误。 现在,我尝试运行相同的terracotta服务器,但在虚拟机上使用客户端。在虚拟机上运行客户端时,会收到以下消息和错误: 使用的 tc-config.xml 文件: 使用的 ehcache.xml 文件: 在

  • [命名空间: Serenity.Caching, 程序集: Serenity.Caching.Couchbase] Redis 是另一种内存数据库,由于其优秀的性能和可靠性, StackOverflow 也在使用它,他们所有的 WEB 服务只用了一个 Redis 数据库。 你可以从 Serenity.Caching.Redis 的 NuGet 程序包获取该服务类型的 Serenity 实现。 它可

  • [命名空间: Serenity.Caching, 程序集: Serenity.Caching.Couchbase] Couchbase 是一个分布式数据库,有像 Memcached 的访问接口。 可以从 NuGet 程序包 Serenity.Caching.Couchbase 获取 Serenity 对此服务类型的实现。 一旦你使用服务定位器注册它: Dependency.Resolve<IDep

  • [命名空间: Serenity.Abstractions, 程序集: Serenity.Core] 如果你现在不需要分布式缓存,但希望现在编写的代码在将来可以与分布式缓存一起工作,你可以使用 DistributedCacheEmulator 类。 DistributedCacheEmulator 也对单元测试和部署环境非常有用(因此,开发人员不需要访问分布式缓存系统而不会影响彼此的工作)。 Dis

  • 现在假设我们有一个社交网站,有数以百万的用户简介,一些著名用户的简介页面每分钟有数百或数千人访问。 要生成一个用户简介,需要多个 SQL 查询(朋友、相册名称及照片总数、简介信息、最后状态等)。 只要用户没有更新个人资料,在个人资料页显示的信息几乎是静态的。因此,个人资料页的快照可以缓存 5 分钟或 1 小时等。 但这或许还不够。我们正在谈论数以百万的简介和用户。用户不会只查看一些简介页。我们需要

  • [命名空间: Serenity.Abstractions, 程序集: Serenity.Core] 所有 NoSQL 服务器类型提供了一个类似的接口,像”使用该键存储此值”、”给我该键对应的值”等。 Serenity 通过一个没有依赖特定 NoSQL 数据库类型的通用接口提供分布式缓存的支持: public interface IDistributedCache { long Increm