Cassandra C++/NodeJs开发环境
工作的需要,开始更多地倾向于去中心化的结构,目前看来Cassandra算是去中心化DB中性能/管理最热门的选择,崇尚其P2P的理念。
自身原因对JAVA不擅长(周围写C的好少),还是更热衷于C++/JS,所以把Cassandr C++/NODEJS(内网环境下)搭建的过程记录下来,共同好者分享。
1,一些条件:
VituralBox 4.3 Win7 x64
Centos 6.4 x64_86(来自某国内某镜像网站)
thrift-0.9.1.tar.gz
openssl-1.0.1e.tar.gz
apache-cassandra-2.0.2-bin.tar.gz
repo指向
[base]
name=CentOS-$releasever - Base
baseurl=file:///media
enable=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
2,预埋YUM库
//DVD1
yum install -y automake libtool flex bison pkgconfig gcc-c++ boost-devel zlib-devel python-devel ruby-devel openssl-devel
yum install -y crypto-utils openssl
//DVD2
rpm -ivh libevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpm libevent-headers-1.4.13-4.el6.noarch.rpm
(libevent-devel 纯本地盘似乎不支持yum)
3,openssl安装
./config no-shared no-idea no-mdc2 no-rc5 zlib enable-tlsext no-ssl2 --prefix=/usr/local –openssldir=/usr/local/openssl
make depend
make
make install
4,thrift安装(依赖boost、libcry、libssl)
./configure
make
make install
5,生成CPP 4 CASSANDR驱动
cd /opt/cassandra/interface
thrift --gen cpp cassandra.thrift
[root@cent4 gen-cpp]# ll
total 2488
-rwxr-xr-x. 1 root root 1420936 Nov 21 07:33 aa
-rw-r--r--. 1 root root 3292 Nov 21 09:11 aa.cpp
-rw-r--r--. 1 root root 215304 Nov 19 09:11 aa.o
-rw-r--r--. 1 root root 390 Nov 19 20:32 cassandra_constants.cpp
-rw-r--r--. 1 root root 456 Nov 19 20:31 cassandra_constants.h
-rw-r--r--. 1 root root 474152 Nov 19 07:02 Cassandra.cpp
-rw-r--r--. 1 root root 186568 Nov 19 07:02 Cassandra.h
-rw-r--r--. 1 root root 9713 Nov 19 07:06 Cassandra_server.cpp
-rw-r--r--. 1 root root 9713 Nov 19 07:02 Cassandra_server.skeleton.cpp
-rw-r--r--. 1 root root 135803 Nov 19 07:02 cassandra_types.cpp
-rw-r--r--. 1 root root 69527 Nov 19 07:02 cassandra_types.h
5,编译C++ SAMPLE
.bash_profile 加下 export LD_LIBRARY_PATH=/usr/local/lib
g++ -I/usr/local/include/thrift aa.cpp Cassandra.cpp cassandra_types.cpp -L/usr/local/lib -lthrift -o aa
6,加载Nodejs SAMPLE
nodejs使用的是某大神写的node-cassandra-cql-master,比较好用。
对于内网的服务器,可以先CLONE一台能上网的,npm install node-cassandra-cql-master,然后把nodejs和 node-cassandra-cql-master直接scp就能使用
var cql = require('node-cassandra-cql');
var client = new cql.Client({hosts: ['192.168.137.104:9042'], keyspace: 'mykeyspace'});
client.execute('select * from users',['ConsistencyLevel.QUORUM'],
function(err, result)
{
if (err)
console.log('execute failed: '+err);
else
console.log('xxxx' + result.rows+'\n');
}
);
//client.shutdown();
client.streamRows('select * from standard9',
function(err, row) {
//the callback will be invoked per each row as soon as they are received
if (err)
console.log("Oh dear..."+err);
else {
console.log('sssse', row.get('name')+':'+row.get('age'));
}
}
);
==============================
7,建张SAMPLE表
create column family standard9 with
key_validation_class=UTF8Type and
comparator = UTF8Type and
column_metadata =
[
{column_name:name ,validation_class:UTF8Type},
{column_name: value, validation_class:UTF8Type},
{column_name: age, validation_class:UTF8Type},
];
插一下垃圾数据
insert into standard9 (key,name, value) values ('1745','aaa', 'bbb');
insert into standard9 (key,name, value) values ('1744','QWER', 'ddd');
insert into standard9 (key,age,name, value) values ('2931','99', 'ZXCV','AAA');
8,把system_autch replication_factor增加下
ALTER KEYSPACE system_auth WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc2' : 2};
建议全keyspace走NTSnitch
否则会遇到cassandra的一致性报错
9,接下来跑apache给的examples
注意其中的cass.set_keyspace("mykeyspace");
string key = "2222";还有一些值需要设置为true的属性。
一些接口说明的文档网上都有,不再详述。
10,总结
走thrift可以让开发人员更好地掌握数据结构、接口定义及一些thrift底层原理。横扩移植需要一些基础库。
走NodeJS,开发效率相对较高,横扩移植能力强。
未来,如果cassandra能增补regularexpress或者rawdevice,多吸引点粉丝,就更好了。
Cassandra C++/NodeJs开发环境的更多相关文章
- Win7搭建NodeJs开发环境以及HelloWorld展示—图解
Windows 7系统下搭建NodeJs开发环境(NodeJs+WebStrom)以及Hello World!展示,大体思路如下:第一步:安装NodeJs运行环境.第二步:安装WebStrom开发工具 ...
- CentOS 7快速搭建Nodejs开发环境
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...
- Win7搭建NodeJs开发环境
Win7搭建NodeJs开发环境以及HelloWorld展示—图解 Windows 7系统下搭建NodeJs开发环境(NodeJs+WebStrom)以及Hello World!展示,大体思路如下:第 ...
- NodeJS开发环境配置
"Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的 特色,Node.js 采用 V8 引擎,同 ...
- NodeJS开发环境搭建
原创作者: zero20121222 NodeJS开发环境搭建 1.安装NodeJS 1.编译环境 源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++).如果没有,请通 ...
- Windows平台搭建NodeJs开发环境以及HelloWorld展示—图解
Windows 7系统下搭建NodeJs开发环境(NodeJs+WebStrom)以及Hello World!展示,大体思路如下:第一步:安装NodeJs运行环境.第二步:安装WebStrom开发工具 ...
- 搭建NodeJS开发环境
Windows10下搭建NodeJS开发环境 ======================================== 下载 NodeJS 安装包,最好使用LTS长期支持正式版 下载见 如下链 ...
- windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置
http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...
- win10下用Linux搭建python&nodejs开发环境
Win10下用自带Linux系统搭建开发环境 Win10下用自带Linux系统搭建开发环境启用Linux老版本(win10 1709之前):新版本(win10 1709之后)卸载linux老版本新版本 ...
随机推荐
- V离MWare至Openstack至FDIO
离VMWare至Openstack 至FDIO --软件虚拟化和硬件虚拟化相结合 作者:廖恒 以VMWare为代表的软件虚拟化技术在企业IT中已是耳熟能详的不争现实.据在HPISS任职的好友告知,V ...
- [three.js] 地图不能解决重复的问题 Solving with Texture RepeatWrapping Fail Issue
有些事情,如果你正在寻找侯,怎么也找不到. 有的东西,不经意间,到处: 我认为这是生活中常有的事. 然而,在互联网的浩瀚大海,这同样适用. 正常的一小会儿的积累, 投入少, 积累, 洋大海, 载起一帆 ...
- 50一个Android开发技巧(01 利用好layout_weight属性)
问题:如何将一个Button放置在布局的中间,并设置其宽度parent的50%? 分析:问题想要达到的效果应该是这样: (原文地址:http://blog.csdn.net/vector_yi/art ...
- Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限
原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...
- 简单vector达到
得知c++于,看完这本书后,,最近苦于不知道下一步该怎么做了,在寻找STL在各种容器的源代码分析,我想一次又一次地实现它. 之前,很多问题看的时候不知道是怎么回事,意与理解的.这个vector类写得特 ...
- Java String类的比较运算
面试题:(多选)以下返回true的有() A. "beijing" == "beijing" B. "beijing".equals(new ...
- HDU 1176 免费馅饼(DP)
职务地址:HDU 1176 以时间为横轴.11个点位纵轴构造一个矩阵.然后利用数字三角形的方法从上往下递推下去. 代码例如以下: #include <iostream> #include ...
- 【原】谈谈promise
最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇 ...
- MEF初体验之六:导出和元素据
在导出声明这一节中解释了部件导出服务和值的基础知识.在某些情况下,出于多种原因,关联与导出相关的信息是有必要的.通常,它被用来解释一个指定的普通契约实现的能力.这对于允许导入约束满足它的导出,或者导入 ...
- WPF学习(2)XAML
XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)是一种声明式的编程语言,遵循XML的语法.WPF使用XAML来设计UI具有易用性.高效性 ...