• 2013-03-21

    高性能并发网络服务器设计与实现

    Views: 35050 | 6 Comments

    我在公司介绍的"高性能并发网络服务器设计与实现"PPT.

    Posted by ideawu at 2013-03-21 19:56:42
  • 2013-01-10

    SSDB与Redis命令对比

    Views: 41463 | 9 Comments
    Redis SSDB
    kv get get
    set set
    del del
    incr/incrBy incr
    decr/decrBy decr
    getMultiple multi_get
    setMultiple multi_set
    del(multiple) multi_del
    keys scan(for kv type only)


    Redis SSDB
    hashmap hget hget
    hset hset
    hdel hdel
    hIncrBy hincr
    hDecrBy hdecr
    hKeys hkeys
    hVals hscan
    hMGet multi_hget
    hMSet multi_hset
    hLen hsize


    Redis SSDB
    zset zScore zget
    zAdd zset
    zRem zdel
    zRange zrange/zscan
    zRangeByScore zscan
    zIncrBy zincr
    zDecrBy zdecr
    zCount
    zCard zsize
    Posted by ideawu at 2013-01-10 18:41:49 Tags: , , ,
  • 2013-01-05

    SSDB 解决了 Snappy 导致 LevelDB 编译失败的问题

    Views: 38641 | 15 Comments

    有不少用户反馈, 对于曾经编译和安装过 LevelDB 和 Snappy 的环境, 编译 SSDB 会出错. 问题出在 LevelDB 无法正确地找到 Snappy 的库(libsnappy), 而且, SSDB 本身没有考虑 -lsnappy 选项.

    最终我决定手动修改 LevelDB 的 Makefile 和 build_detect_platform 两个文件, 完全放弃 Snappy. 但 SSDB 将会在未来的版本中增加 Snappy(直接打包附带源码), 而不是使用系统已安装的 Snappy.

    请下载 SSDB 1.1.3: https://code.google.com/p/zdb/downloads/list https://github.com/ideawu/ssdb

    开发进度预告: 经过前段时间紧张的开发, 支持主从(master-slave)复制功能的 SSDB 版本 1.2 已经基本开发完毕, 目前在整理代码, 近几天就可以发布! 该主从同步方案用 LevelDB 存储库的更新 Log, 并按 LevelDB 内部的序号组织, 所以主从同步可以容忍非常糟糕的网络环境和非期待的异常当机.

    Posted by ideawu at 2013-01-05 14:08:05 Tags: ,
  • 2012-11-09

    在 Windows(Cygwin) 环境下编译 levelDB

    Views: 28925 | No Comments

    levelDB 本身不支持 Windows 平台, 在 Cygwin 里编译的话, 也会报"Unknow platform"错误. 只需要做一下简单修改, 就能在 Windows 下编译和 levelDB. 首先, 要安装 gcc-4, 而不是 gcc-3.

    修改 build_detect_platform, 增加 CYGWIN_* 内容:

    case "$TARGET_OS" in
        CYGWIN_*)
            PLATFORM=OS_LINUX
            COMMON_FLAGS="$MEMCMP_FLAG -lpthread -DOS_LINUX -DCYGWIN"
            PLATFORM_LDFLAGS="-lpthread"
            PORT_FILE=port/port_posix.cc
            ;;
    

    Continue reading »

    Posted by ideawu at 2012-11-09 14:55:12 Tags:
  • 2012-11-08

    用 HBase 来存储 zset

    Views: 13399 | No Comments

    虽然内存中有非常丰富的数据结构, 但真正的业务数据一般只有非常少的几种, 据我所知的有: 哈希表(Key-Value), zset(sorted set). 其中, 又以 zset 的业务表达能力最为强大. zset 是元素的集合, 集合中的元素都是唯一的, 并且每个元素都有一个排序权重值, 决定该元素在集合中的线性位置(一维坐标).

    在 MySQL 数据库中, 可以用如下表结构来存储 zset:

    weight, setname, element
    UNIQUE(setname, element)
    

    Redis 本身支持 zset 数据类型. MySQL 方案可存储大数据, 但读性能非常有问题, 因为其排序是在查询进行时动态发生的. Redis 速度快, 但最大的问题是数据量不能超过内存容量. 所以, 需要寻找一种替代的方案.

    HBase 不支持 zset, 但可利用其"Key 的有序性和可遍历性", 通过设计 Key 的结构来实现 zset. 对于 zset 的每一个元素, 需要在 HBase 中存储两条数据:

    key=setname|weight|element, value=NULL
    key=setname|element, value=weight 或者 setname|weight|element
    

    将 Key 中"|"分隔的每一个字段都定长.

    读取: 利用 scan
    写入/更新: 查询 key=setname|element, 然后删除 key=setname|weight|element, 再插入 key=setname|new_weight|element.
    删除: 查询并删除 key=setname|element, 然后删除 key=setname|weight|element

    备注: 当然, 这只是说明 HBase 能存储 zset, 并且手工测试读取的性能还不错, 但还未做更多的测试.

    Posted by ideawu at 2012-11-08 20:03:16
  • 2012-11-05

    HBase 在 Linux 下安装和配置

    Views: 33047 | No Comments

    1. 下载安装包

    Hbase 官网下载页面下载安装包, 然后

    tar xfz hbase-0.94.2.tar.gz
    cd hbase-0.94.2
    chmod ugo+x ./bin/*.sh
    

    注意, 要修改 bin/ 目录下的脚本的的权限, 不然启动出错.

    2. 配置 hbase-env.sh 和 hbase-default.xml

    两个配置文件中的一个 hbase-env.sh 已经存在于 conf/ 目录下, 但 hbase-default.xml 并不在 conf/ 目录, 需要从 ./src/main/resources/ 目录拷贝
    Continue reading »

    Posted by ideawu at 2012-11-05 12:10:54 Tags: , , ,
|<<<12345>>>| 3/5 Pages, 25 Results.