最新发布 页面 5 RSS Toggle Comment Threads | 键盘快捷键

  • bixuan 00:19 on 2010 年 11 月 22 日 链接地址 | 回复
    Tags: , , , VoltDB   

    一般认为NoSQL数据库在性能方面要优于传统的SQL数据库。但是有两个SQL的解决方案宣布:对于大型系统的高可扩展性需求,SQL仍然是可行的解决方案!这两个SQL解决方案分别是MySQL加NoSQL层插件和支持SQL的VoltDB数据库。

    MySQL + HandlerSocket

    Yoshinori Matsunobu是Sun/Oracle的前雇员,从事MySQL的研发工作,目前是DeNA的首席数据库和基础设施架构师,他以插件的方式为MySQL/InnoDB提供解决方案,可以在一台2.53GHZ、8核CPU、32G内存的Nehalem服务器上把每秒的查询数量(qps)提升到750,000以上。在同样的硬件环境下,无插件的MySQL只能提供100,000左右的qps,如果使用memecached的话,可以增加到大约400,000。经过对RDBMS的分析,Matsunobu意识到大部分时间都花在SQL的开销上,比如调用MYSQLparse()、MYSQLlex()、make_join_statistics()和JOIN::optimize()等。他写到:

    很显然性能降低的原因主要在SQL层,而不是“InnoDB(存储)”层。MySQL必须做很多事情……但memcached/NoSQL是不需要做这些额外工作的。

    SQL层的功能包括解析SQL语句、打开/锁定/解锁/关闭表、解决并发问题等。Matsunobu的解决方案就是增加额外的NoSQL层:

    我们认为最好的方式就是在MySQL内部实现一个NoSQL的网络服务器。也就是说,编写一个网络服务器作为MySQL的插件(守护插件),用来监听特定端口,接收NoSQL的协议和API,然后通过MySQL内部存储引擎API直接访问InnoDB。这种方式很像NDBAPI,不同的是它可以与InnoDB交互。

    他的团队开发了HandlerSocket插件,有了这个插件,MySQL更像一个NoSQL数据库,通过监听一个独立的端口,接收从SQL层来的简单查询请求,例如主键查询,索引扫描和插入/更新/删除。这一变化把数据库性能提升到了750K qps以上。常用端口可以接收处理复杂查询,其核心仍然是SQL数据库。DeNA采用SQL/NoSQL混合的方式取得了成功,据Matsunobu所言,在相同的时间内,这种解决方案把多个memcached和MySQL主从服务器的方案远远甩在了后面。

    VoltDB

    另一个很有希望的SQL解决方案是VoltDB,这是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性(ACID)。VoltDB是由原Ingres和Postgres的架构师Mike Stonebraker设计的。该数据库主要特征如下:

    • 为了获得最大化吞吐量,数据保存在内存中(而不是在硬盘),这样可以有效消除缓冲区管理。
    • VoltDB通过SQL引擎把数据分发给集群服务器的每个CPU进行处理。
    • 每个单线程分区自主执行,消除锁定和闩锁的需求。
    • VoltDB可以通过简单的在集群中增加附加节点的方式实现性能的线性增加。

    正如其开发者宣称的那样,该数据库的性能使其成为NoSQL解决方案的有力竞争者:

    • VoltDB在单节点上可以每秒处理53000个事务请求(TPS),其他DBMS在相同的硬件环境下只能处理1155个。VoltDB的扩展是近似线性的──在12个节点的VoltDB集群上进行同样测试,可以处理560,000 TPS。
    • 基准案例:某个客户的在线游戏在12个节点的VoltDB集群上处理了130万 TPS。
    • VoltDB还针对NoSQL的键-值存储方式作了基准测试,VoltDB在处理各种键-值存储负载的情况下获得了相同或更好的性能。

    除了它的性能,VoltDB的主要优势是可以与SQL用户进行交流,这些SQL用户是很好的资源。

    近期还会推出VoltDB的企业版本,包括基于浏览器的数据库管理系统,提供、管理和监控数据库集群。除了免费的社区版本,针对企业版的支持也开始了。

    查看英文原文:MySQL/HandlerSocket and VoltDB: Contenders to NoSQL

    From: http://hi.baidu.com/%CA%AB%D5%B9/blog/item/30e9aed38d3af024960a1649.html

     
  • bixuan 17:46 on 2010 年 11 月 21 日 链接地址 | 回复
    Tags: ,   

    安装beanstalkd(队列)

    官网:http://kr.github.com/beanstalkd/
    注意:需要先安装libevent,另外可以在:http://wiki.github.com/kr/beanstalkd/client-libraries 这里找到php客户端,目前只有php class。

    1、下载

    wget -c http://xph.us/dist/beanstalkd/beanstalkd-1.4.6.tar.gz
    

    2、编译

    tar zxvfp beanstalkd-1.4.6.tar.gz
    cd beanstalkd-1.4.6
    ./configure --prefix=/opt/app/beanstalkd --with-event=/opt/app/libevent/
    make && make install
    

    3、启动
    /opt/app/beanstalkd/bin/beanstalkd -d -b /opt/app/beanstalkd/db/ -f 60000 -l 192.168.4.75 -p 11300 -u nobody
    和memcached非常类似
    具体参数如下:

    Options:
     -d       detach
     -b DIR   binlog directory (must be absolute path if used with -d)
     -f MS    fsync at most once every MS milliseconds (use -f 0 for "always fsync")
     -F       never fsync (default)
     -l ADDR  listen on address (default is 0.0.0.0)
     -p PORT  listen on port (default is 11300)
     -u USER  become user and group
     -z BYTES set the maximum job size in bytes (default is 65535)
     -s BYTES set the size of each binlog file (default is 10485760)
     -v       show version information
     -h       show this help
    

    4、相关文档

    http://wiki.github.com/kr/beanstalkd/faq

    http://adam.heroku.com/past/2010/4/24/beanstalk_a_simple_and_fast_queueing_backend/

    http://abulman.co.uk/presentations/Beanstalkd-2010-05-06/

     
  • bixuan 02:14 on 2010 年 11 月 20 日 链接地址 | 回复
    Tags:   

    运维工作:配置自动化,监控智能化~

     
  • bixuan 10:31 on 2010 年 11 月 19 日 链接地址 | 回复
    Tags:   

    amazon的EC2确实很方便,但是计费方式还不够灵活~

     
  • bixuan 01:17 on 2010 年 11 月 17 日 链接地址 | 回复
    Tags:   

    搞了个通宵,终于从amazon迁出了,NND

     
    • lasu 09:41 on 2010 年 11 月 17 日 链接地址

      为什么要迁出?我刚搬进去呢

    • bixuan 10:23 on 2010 年 11 月 17 日 链接地址

      amazon内网出现链路质量问题,所以不得已。而且性价比也太低了,呵呵

  • bixuan 22:42 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: , tidy,   

    puppet tidyt用法
    先占位置

     
  • bixuan 22:41 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: mount, ,   

    puppet mount用法
    先占位置

     
  • bixuan 21:18 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: host, ,   

    puppet 主机(host)用法:
    语法:

    host { 'xx.com':
        alias => ['absent'],
        ip => 'absent',
        target => '',
        ensure => 'absent'
    }
    

    如果忘了host的语法,那么可以执行ralsh获取,比如:

    ralsh host xx.com
    host:表示类别,其他诸如file,cron
    xx.com:就是host里的主机头
    

    ip
    主机的IP地址,ipv4或ipv6

    name
    主机名称
    资源类型的命名变量

    ensure
    确定该主机是否启用,有效值present 和 absent
    ensure => ‘present’:表示启用在该条记录,如果没有则添加
    ensure => ‘absent’:表示去启用该条记录,如果已经存在则会删除

    target
    这个用法不清楚

    例子:

    host { 'test.ourlinux.net':
            ip => '192.168.1.121',
            alias=> [ "1.ourlinux.net", "2.ourlinux.net" ],
            ensure => 'present',
            #ensure => 'absent',
    }
    

    查看/etc/hosts结果增加了如下一行:
    192.168.1.121 test.ourlinux.net 1.ourlinux.net 2.ourlinux.net

    http://puppet.chinaec2.com/host

     
  • bixuan 21:01 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: define, ,   

    puppet 定义(definitions)用法:
    定义使用define关键词建立,支持参数,但不支持继承。可以将定义想象为一个可用参数多次调用的配置段。
    当设计为重复调用时,不包含资源,仅有一个实例,象包或者服务。
    使用关键词define,指定定义名,然后是由括号包围的参数列表,用花括号封闭定义段。

    先占位置

     
  • bixuan 17:17 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: , 安装   

    puppet 安装

    1、服务端安装
    需要安装puppet-server,当然相关ruby的依赖包也会自动安装:

    yum -y install puppet-server puppet
    

    2、客户端安装
    只要安装puppet即可:

    yum -y install puppet
    

    3、编译安装
    正在测试,比较麻烦以后补上~

     
  • bixuan 16:59 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: group, , user, 用户, , 组   

    puppet 组和用户(group/user)用法:

    user常见语法

    user { 'bixuan':
            home => '/home/bixuan',
            shell => '/bin/bash',
            uid => '500',
            comment => 'test',
            gid => '100',
            groups => ['users'],
            ensure => 'absent', #absent:存在则删除;present:不存在则闯进
    }
    

    user的基本属性:
    name: OS specified limits apply. (namevar)
    shell: 用户的shell类型,比如:/bin/bash
    uid: 用户uid
    comment: 用户信息描述
    ensure: 设置用户的基本状态资源. 有2个值:absent(不启用,设置此值时会删除用户), present(启用该用户,不存在则自动创建).
    gid: 用户的所属的基本组。可以指定数值或的名字。
    groups: 用户附属组,多个组需要用数组来定义。
    home: 用户目录
    managehome: Whether to manage the home directory when managing the user. Valid values are
    true, false.

     
  • bixuan 16:45 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: package, , , 软件包   

    puppet 软件包(package)用法:

    http://puppet.chinaec2.com/package

    先占位置~

     
  • bixuan 16:42 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: , service, 服务,   

    puppet 服务(service)用法:

    service常见语法
    service {‘sshd’:
    enable => true,
    ensure => running,
    hasstatus => true,
    hasrestart => true,
    }
    service的基本属性:

    name: The name of the service as understood on the underlying services subsystem. (namevar)
    enable: If a service should be started at boot. Can be true or false.
    ensure: If the resource should currently be running. Can be true, false, running, or stopped.
    hasrestart: Specifies that your service has a restart command. Can be true or false.
    hasstatus: Specifies that your service has a status command. Can be true or false.
    pattern: The pattern to search for in the process table.
    restart: Specify a restart command.
    start: Specify a start command.
    status: Specify a status command.
    stop: Specify a stop command.
    

    http://puppet.chinaec2.com/srv

     
  • bixuan 16:34 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: , template, 模板,   

    puppet 模板(template)用法:
    先占位置~

     
  • bixuan 15:14 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: file, , 文件,   

    puppet 文件(file)用法:

    file常见语法

    file {"/tmp/bixuan/etc":
            ensure => file,
            source =>"puppet://$puppetserver/files/etc",
            owner =>"root",
            group =>"root",
            mode =>"744"
    }
    

    file的基本属性:

    path: Specifies the target location for file. (namevar)
    ensure: Accepts absent, present, file, and directory.
                Any other value will be treated as a symlink.
    owner: 文件所属用户.
    group: 文件所属组.
    mode: 文件权限,比如:755
    content: 指定文件的内容,作为字符串返回。
    source: 指定源文件
    force: Force replacement of directories with a link. Valid values (true, false).
    ignore: 忽略指定文件,比如.svn, .git.
              Omits files matching specified patterns during recursion (Ex: .svn, .git).
    recurse: 递归检索文件,同步目录时设为true
    purge: 清除已删除的文件。Whether or not to purge unmanaged file resources within a directory.
              Valid values (true,false)
    

    例子
    1、同步目录:

    file {"/tmp/bixuan/etc":
            source =>"puppet://$puppetserver/files/etc",
            recurse =>"true", #递归检索文件,同步目录时设为true
            owner =>"root",
            group =>"root",
            mode =>"744",
            purge =>"true", #保持和source完全一致。类似rsync的 --delete参数
    }
    

    2、同步文件:

    file { "/etc/sysctl.conf":
            source => "puppet://$puppetserver/files/etc/sysctl.conf",
            owner => "root",
            group => "root",
            mode => 0644,
    }
    

    操作文件往往和命令相关联,具体查看:puppet exec用法

     
c
写新的
j
下一篇文章/下一个回复
k
前一篇文章/以前的回复
r
回复
e
编辑
o
显示/隐藏 回复
t
回到顶部
l
go to login
h
show/hide help
esc
取消