一.Erlang安装:

1 首先进入www.erlang.org 下载页面,下载otp_src_17.5.tar.gz. IT网,http://www.it.net.cn

2 解压缩:tar -xzvf otp_src_17.5.tar.gz Linux学习,http:// linux.it.net.cn

3 进入解压缩后的文件夹:cd otp_src_17.5.tar.gz

4 如果直接运行./configure,会提示没有curses库,所以首先还得安装这个库:yum install ncurses-devel,运行此命令需要具备root权限。

5 运行./congigure命令。

6 运行make命令。

7 运行make install命令。

安装成功后,在命令行输入erl,则erlang shell便会运行起来。至此,安装完全成功。

yum install gcc

riak安装:

http://docs.basho.com/riak/1.3.2/tutorials/installation/Installing-on-RHEL-and-CentOS/

备注:(不知道有什么卵用)

设置ulimit:
echo "session required pam_limits.so" >> /etc/pam.d/common-session
echo "ulimit -SHn 51200" >> /etc/profile
source /etc/profile
ulimit -n

修改成局域网可以访问:
/etc/riak/app.config
如下
{http, [ {"192.168.1.117", 8098 } ]},

/etc/rc.d/init.d/riak restart

vim /etc/riak/vm.args

vim /etc/riak/app.config

sudo yum install http://yum.basho.com/gpg/basho-release-6-1.noarch.rpm
sudo yum install riak
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8098 -j ACCEPT
vim /etc/sysconfig/iptables
/etc/init.d/iptables restart
/etc/init.d/iptables status

其他参考:

http://docs.basho.com/riak/2.0.0/ops/building/installing/rhel-centos/

https://github.com/basho/riak

http://www.oschina.net/p/riak/

http://www.ibm.com/developerworks/cn/opensource/os-riak1/

http://www.ibm.com/developerworks/cn/opensource/os-riak2/

http://blog.csdn.net/freewebsys/article/details/12609995

http://www.xuebuyuan.com/1252471.html

http://docs.basho.com/riak/1.3.2/tutorials/installation/Installing-on-RHEL-and-CentOS/

http://www.lupaworld.com/thread-61933-1-1.html

http://blog.csdn.net/freewebsys/article/details/12617379

客户端连接测试:(https://github.com/super-d2/riak_demo)

 {pb, [ { } ]}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion></modelVersion>
    <groupId>riak_demo</groupId>
    <artifactId>riak_demo</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>com.basho.riak</groupId>
            <artifactId>riak-client</artifactId>
            <version></version>
        </dependency>
        <dependency>
            <groupId>com.basho.riak.protobuf</groupId>
            <artifactId>riak-pb</artifactId>
            <version></version>
        </dependency>
    </dependencies>

</project>

UserInfo.java

package com.demo;

/**
 * 用户信息.
 */
public class UserInfo {
    private String uid;
    private String name;
    private String city;
    private String nickName;

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return "UserInfo [uid=" + uid + ", name=" + name + ", city=" + city
                + ", nickName=" + nickName + "]";
    }

}

ClientTest.java

package com.demo;

import java.io.IOException;
import com.basho.riak.client.IRiakClient;
import com.basho.riak.client.RiakException;
import com.basho.riak.client.RiakFactory;
import com.basho.riak.client.RiakRetryFailedException;
import com.basho.riak.client.bucket.Bucket;

public class ClientTest {

    public static void main(String[] args) throws IOException {

        IRiakClient client = null;
        try {// 使用pbc方式连接,而不是http,在/etc/riak/app.config
            client = RiakFactory.pbcClient();
        } catch (RiakException e) {
            e.printStackTrace();
        }
        // 显示.
        System.out.println(client);
        Bucket myBucket = null;
        String bucketName = "userInfo";
        try {
            myBucket = client.fetchBucket(bucketName).execute();
            if (myBucket == null) {
                myBucket = client.createBucket(bucketName).execute();
            }
        } catch (RiakRetryFailedException e) {
            e.printStackTrace();
        }
        // ################保存数据 .
        UserInfo info = new UserInfo();
        info.setUid(");
        info.setName("张三");
        info.setCity("北京");
        try {
            myBucket.store(info.getUid(), info).execute();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // ################查询数据.
        UserInfo fetchedUserInfo = null;
        try {
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println(fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // ################修改数据.
        try {
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            fetchedUserInfo.setName("李四");
            fetchedUserInfo.setNickName("老李");
            myBucket.store(info.getUid(), info).execute();
            // 保存 新数据
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println("新数据:" + fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // ################删除数据.
        try {
            myBucket.delete(").execute();
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println("删除收数据." + fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 关闭。
        client.shutdown();

    }

}

运行:

代码分析

在Riak当中,可以简单的把Bucket理解成一个表。
首先要创建一个这样的Bucket,然后把数据按照key放进去。

数据类型可以是字符串,基本类型,或是对象(如UserInfo)。

每次操作的时候都是通过执行Bucket的方法执行达到CRUD的操作。

StoreObject<IRiakObject> store(String key, byte[] value);
StoreObject<IRiakObject> store(String key, String value);
<T> StoreObject<T> store(T o);
<T> StoreObject<T> store(String key, T o);
FetchObject<IRiakObject> fetch(String key);
<T> FetchObject<T> fetch(String key, Class<T> type);
<T> FetchObject<T> fetch(T o);
MultiFetchObject<IRiakObject> multiFetch(String[] keys);
<T> MultiFetchObject<T> multiFetch(List<String> keys, Class<T> type);
<T> MultiFetchObject<T> multiFetch(List<T> o);
CounterObject counter(String counter);
<T> DeleteObject delete(T o);
DeleteObject delete(String key);
StreamingOperation<String> keys() throws RiakException;
<T> FetchIndex<T> fetchIndex(RiakIndex<T> index);  

总结

java通过使用Protocol Buffers方式调用Riak服务,直接操作对象进行CRUD。

有了这些,可以做一个简单的评论系统了。评论系统上面不需要事物,并且数量会随着业务增长,使用Rick可以平稳的进行扩展。

这个只是简单的,对Rick服务进行CRUD。最没有用到其他功能,同时没有关于key的设计。

Rick的其他功能,以后继续研究。

相关分布式理论:

http://freestorm.org/2015/04/25/Riak%E7%9A%84%E5%88%86%E5%B8%83%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A8%A1%E5%9E%8B.html

http://segmentfault.com/a/1190000002802797

java客户端调用实例:

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion></modelVersion>
    <groupId>riak_demo</groupId>
    <artifactId>riak_demo</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>com.basho.riak</groupId>
            <artifactId>riak-client</artifactId>
            <version></version>
        </dependency>
        <dependency>
            <groupId>com.basho.riak.protobuf</groupId>
            <artifactId>riak-pb</artifactId>
            <version></version>
        </dependency>
    </dependencies>

</project>

UserInfo:

package com.demo;

/**
 * 用户信息.
 */
public class UserInfo {
    private String uid;
    private String name;
    private String city;
    private String nickName;

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return "UserInfo [uid=" + uid + ", name=" + name + ", city=" + city
                + ", nickName=" + nickName + "]";
    }

}

ClientTest:

package com.demo;

import java.io.IOException;
import com.basho.riak.client.IRiakClient;
import com.basho.riak.client.RiakException;
import com.basho.riak.client.RiakFactory;
import com.basho.riak.client.RiakRetryFailedException;
import com.basho.riak.client.bucket.Bucket;

public class ClientTest {

    public static void main(String[] args) throws IOException {

        IRiakClient client = null;
        try {// 使用pbc方式连接,而不是http,在/etc/riak/app.config
            client = RiakFactory.pbcClient();
        } catch (RiakException e) {
            e.printStackTrace();
        }
        // 显示.
        System.out.println(client);
        Bucket myBucket = null;
        String bucketName = "userInfo";
        try {
            myBucket = client.fetchBucket(bucketName).execute();
            if (myBucket == null) {
                myBucket = client.createBucket(bucketName).execute();
            }
        } catch (RiakRetryFailedException e) {
            e.printStackTrace();
        }
        // ################保存数据 .
        UserInfo info = new UserInfo();
        info.setUid(");
        info.setName("张三");
        info.setCity("北京");
        try {
            myBucket.store(info.getUid(), info).execute();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // ################查询数据.
        UserInfo fetchedUserInfo = null;
        try {
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println(fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // ################修改数据.
        try {
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            fetchedUserInfo.setName("李四");
            fetchedUserInfo.setNickName("老李");
            myBucket.store(info.getUid(), info).execute();
            // 保存 新数据
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println("新数据:" + fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // ################删除数据.
        try {
            myBucket.delete(").execute();
            fetchedUserInfo = myBucket.fetch(", UserInfo.class).execute();
            System.out.println("删除收数据." + fetchedUserInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 关闭。
        client.shutdown();

    }

}

Centos6.5里安装Erlang 并安装riak的更多相关文章

  1. centos7 安装erlang rabbitMQ

    环境: 虚拟机 centos7 minimal 一.安装Erlang 1.安装依赖 yum install build-essential openssl openssl-devel unixODBC ...

  2. 64位CentOS6.2安装erlang及rabbitmqServer

    CentOS 6.2 64bit 安装erlang及RabbitMQ Server 1.操作系统环境(CentOS 6.2 64bit) [root@HAproxy ~]# cat /etc/issu ...

  3. Centos6.4安装erlang并配置mysql数据库

    在安装时,一定要使用Centos6.4光盘为yum源,否则可能使用了版本有问题的openssl 1.首先要先安装GCC GCC-C++ Openssl等依赖模块: yum -y install mak ...

  4. ubuntu安装erlang

    照着园子里一篇博文安装erlang,各种错调不出来.最后发现官网有解决方案: https://www.erlang-solutions.com/downloads/download-erlang-ot ...

  5. CentOS6 图形界面(gnome)安装(转)

    CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...

  6. Rabbit MQ 学习 (一)Window安装Erlang环境

    之前也没有用过Rabbit MQ ,最近正在学习中,记性不好,特意记一下. 百度一下 先得 安装 Erlang 并且 设置环境变量. 在Erlang 官网去下载,那个慢呀... 还好CSDN 里有人提 ...

  7. 手把手教小白安装Erlang

    Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它有瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境. Erlang官网:htt ...

  8. CentOS6 图形界面(gnome)安装

    CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...

  9. ubtuntu 下安装Erlang R17

    在Ubuntu 下 Erlang R17B 的安装的过程记录: 1 :如果你主机上没有安装jdk,那需先安装,安装过程如下:   #   sudo apt-get update (更新已安装的包)   ...

随机推荐

  1. Python自动化之多进程

    多进程multiprocessing from multiprocessing import Process import os def info(title): print(title) print ...

  2. @ModelAttribute运用详解

      @ModelAttribute使用详解 1.@ModelAttribute注释方法     例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个 ...

  3. python 的dict的update 方法的一点诡秘的行为

    如下: >>> 'a%s'%a 'a{1: 0, 2: 0}' >>> for k,v in a.items(): a.update(k=v) >>&g ...

  4. Maven学习总结

    转载至:http://www.cnblogs.com/xdp-gacl/p/3498271.html 一 入门 一.Maven的基本概念 Maven(翻译为"专家","内 ...

  5. javascript中apply、call和bind的区别,容量理解,值得转!

    a)  javascript中apply.call和bind的区别:http://www.cnblogs.com/cosiray/p/4512969.html b)  深入浅出 妙用Javascrip ...

  6. CXGrid的使用技巧

    CXGrid的使用技巧 ========================================================================== 在主从TableView中 ...

  7. pt-query-digest使用介绍【转】

    本文来自:http://isadba.com/?p=651 一.pt-query-digest参数介绍. pt-query-digest --user=anemometer --password=an ...

  8. Python 生产环境MySQL数据库增量备份脚本

    MySQL数据库常用的办法是通过MySQLdump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍文章介绍xtrabackup的热备工具,见 http://w ...

  9. DP:Cow Exhibition(POJ 2184)(二维问题转01背包)

        牛的展览会 题目大意:Bessie要选一些牛参加展览,这些牛有两个属性,funness和smartness,现在要你求出怎么选,可以使所有牛的smartness和funness的最大,并且这两 ...

  10. 把图标改成web字体

    一.下载自己想要的矢量图标,然后在AI中打开二.在AI中将有瑕疵的图标修改一下,再分别另存为svg格式的图标三.打开IcoMoon Web app网页,然后点击左上角的+Import Icons添加你 ...