Aerospike

Aerospike

Aerospike介紹

Aerospike(簡(jiǎn)稱AS)是一個(gè)分布式暂殖,可擴(kuò)展的鍵值存儲(chǔ)的NoSQL數(shù)據(jù)庫羊娃。
T級(jí)別大數(shù)據(jù)高并發(fā)的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)
讀寫操作達(dá)微妙級(jí)熏挎,99%的響應(yīng)可在1毫秒內(nèi)實(shí)現(xiàn)
采用混合架構(gòu),索引存儲(chǔ)在內(nèi)存中,而數(shù)據(jù)可存儲(chǔ)在機(jī)械硬盤(HDD)或固態(tài)硬盤(SSD) 上(也可存儲(chǔ)在
內(nèi)存)
AS內(nèi)部在訪問SSD屏蔽了文件系統(tǒng)層級(jí),直接訪問地址搀菩,保證了數(shù)據(jù)的讀取速度。
AS同時(shí)支持二級(jí)索引與Client聚合破托,支持簡(jiǎn)單的sql操作(aql)肪跋,相比于其他nosql數(shù)據(jù)庫,有一定優(yōu)
勢(shì)土砂。

Aerospike應(yīng)用場(chǎng)景

Aerospike作為一個(gè)大容量的NoSql解決方案州既,并未在國內(nèi)廠中廣泛商使用谜洽。它適合對(duì)容量要求比較
大,QPS相對(duì)低一些的場(chǎng)景易桃,目前主要集中于互聯(lián)網(wǎng)廣告行業(yè)使用(國外)

個(gè)性化推薦廣告應(yīng)用

個(gè)性化推薦廠告是建立在了和掌握消費(fèi)者獨(dú)特的偏好和習(xí)性的基礎(chǔ)之上褥琐,對(duì)消費(fèi)者的購買需求做出準(zhǔn)確
的預(yù) 或引導(dǎo),在合適的位置晤郑、合適的時(shí)間,以合適的形式向消費(fèi)者呈現(xiàn)與其需求高度吻合的廣告贸宏,以此
來促進(jìn)用戶的消費(fèi)行為造寝。

image-20200827175530239.png

用戶行為日志收集系統(tǒng)收集日志之后推送到ETL做數(shù)據(jù)的清洗和轉(zhuǎn)換
把ETL過后的數(shù)據(jù)發(fā)送到推薦引擎計(jì)算每個(gè)消費(fèi)者的推薦結(jié)果,其中推薦邏輯包括規(guī)則和算法兩部分
具體的規(guī)則有用戶最近瀏覽吭练、加入購物車诫龙、加入收藏等,

算法則包括商品相似性鲫咽、用戶相似性签赃、文本相似性、圖片相似性等算法分尸。
把推薦引擎的結(jié)果存入Aerospike集群中锦聊,并提供給廣告投放引擎實(shí)時(shí)獲取

實(shí)時(shí)競(jìng)價(jià)廣告應(yīng)用

當(dāng)用戶瀏覽一個(gè)加入SSP(供應(yīng)方平臺(tái))的站點(diǎn)時(shí),SSP會(huì)把此次請(qǐng)求發(fā)送到AD EXCHANGE(廣告交易
平臺(tái))箩绍,然后ADX會(huì)把這次請(qǐng)求發(fā)送給多家DSP孔庭,DSP(需求方平臺(tái))根據(jù)自身的DMP(數(shù)據(jù)管理平
臺(tái)),通過對(duì)次用戶的了解程度進(jìn)行競(jìng)價(jià)材蛛,最終競(jìng)價(jià)勝出的DSP獲得展現(xiàn)廣告的機(jī)會(huì)圆到。
DSP競(jìng)價(jià)(RTB:實(shí)時(shí)競(jìng)價(jià))勝出的關(guān)鍵是DMP能夠根據(jù)用戶的歷史瀏覽等數(shù)據(jù)分析和定位用戶屬性,
其中實(shí)時(shí)競(jìng)價(jià)廣告中非常重要的一個(gè)環(huán)節(jié)就是UserProfile(用戶畫像)卑吭。
分別通過HDFS和HBASE對(duì)日志進(jìn)行離線和實(shí)時(shí)的分析芽淡,然后把用戶畫像的標(biāo)簽(tag : 程序猿、宅男...)結(jié)
果存入高性能的Nosql數(shù)據(jù)庫Aerospike中豆赏,同時(shí)把數(shù)據(jù)備份到異地?cái)?shù)據(jù)中心挣菲。前端廣告投放請(qǐng)求通過
決策引擎(投放引擎)向用戶畫像數(shù)據(jù)庫中讀取相應(yīng)的用戶畫像數(shù)據(jù),然后根據(jù)競(jìng)價(jià)算法出價(jià)進(jìn)行競(jìng)
價(jià)河绽。競(jìng)價(jià)成功之后就可以展現(xiàn)廣告了己单。而在競(jìng)價(jià)成功之后,具體給用戶展現(xiàn)什么樣的廣告耙饰,就是有上面
說的個(gè)性化推薦廣告來完成的纹笼。


image-20200827175632624.png

Aerospike與Redis對(duì)比

Aerospike是NoSQL的數(shù)據(jù)存儲(chǔ),Redis是緩存
Aerospike是多線程的苟跪,而 Redis 是單線程的
Redis 需要開發(fā)人員自己管理分片并提供分片算法用于在各分片之間平衡數(shù)據(jù)廷痘;
client: hash 一致性hash
codis :代理處理sharding
RedisCluster: hash槽
而 AerospikeDB 可以自動(dòng)處理相當(dāng)于分片的工作蔓涧;
在 Redis 中,為了增加吞吐量笋额,需要增加 Redis 分片的數(shù)量元暴,并重構(gòu)分片算法及重新平衡數(shù)據(jù),這通常
需要停機(jī)兄猩;

而在 AerospikeDB 中茉盏,可以動(dòng)態(tài)增加數(shù)據(jù)卷和吞吐量,無需停機(jī)枢冤,并且 AerospikeDB 可以自動(dòng)平衡數(shù)
據(jù)和流量鸠姨;
在 Redis 中,如果需要復(fù)制及故障轉(zhuǎn)移功能淹真,則需要開發(fā)人員自己在應(yīng)用程序?qū)油綌?shù)據(jù)讶迁;
而在 AerospikeDB 中,只需設(shè)置復(fù)制因子核蘸,然后由 AerospikeDB 完成同步復(fù)制操作巍糯,保持即時(shí)一致
性;而且 AerospikeDB 可以透明地完成故障轉(zhuǎn)移客扎;
Redis是在內(nèi)存中運(yùn)行的 祟峦,AerospikeDB在內(nèi)存中存儲(chǔ)索引,在HDD虐唠、SSD中保存數(shù)據(jù)搀愧,也可以在內(nèi)存

Aerospike架構(gòu)

image-20200827175757847.png

Aerospike分為三個(gè)層次:
Client層:
對(duì)Aerospike Server中的數(shù)據(jù)進(jìn)行訪問。
包括CRUD疆偿、批量操作和基于二級(jí)索引的查詢
是一個(gè)“智能”客戶端咱筛,支持C/C++、Java杆故、GoLang迅箩、Python、C#处铛、Php饲趋、Ruby、JavaScript等絕大部分
主流語言撤蟆。
追蹤節(jié)點(diǎn)感知數(shù)據(jù)存儲(chǔ)位置奕塑,當(dāng)節(jié)點(diǎn)啟動(dòng)或停止時(shí)立即感知集群配置變化。
具有高效性家肯、穩(wěn)定性和內(nèi)部的連接池
Distribution層:

負(fù)責(zé)管理集群內(nèi)部數(shù)據(jù)的平衡分布龄砰、備份、容錯(cuò)和不同集群之間的數(shù)據(jù)同步。主要包含三個(gè)模塊:

  • Cluster Management Module
    用于追蹤集群節(jié)點(diǎn)换棚。關(guān)鍵算法是確定哪些節(jié)點(diǎn)是集群的一部分的Paxos-like一致投票過程式镐。
    Aerospike實(shí)現(xiàn)專門的心跳檢測(cè)(主動(dòng)與被動(dòng)),用于監(jiān)控節(jié)點(diǎn)間的連通性固蚤。
  • Data Migration Module
    當(dāng)有節(jié)點(diǎn)添加或移除時(shí)娘汞,該模塊保證數(shù)據(jù)的重新分布,按照系統(tǒng)配置的復(fù)制因子確保每個(gè)數(shù)據(jù)塊跨
    節(jié)點(diǎn)和跨數(shù)據(jù)中心復(fù)制夕玩。
  • Transaction Processing Module
    確保讀寫的一致性與隔離性你弦,寫操作先寫副本在寫主庫。該模塊包括:
    Sync/Async Replication(同步/異步復(fù)制):為保證寫一致性风秤,在提交數(shù)據(jù)之前向所有副本傳播更
    新并將結(jié)果返回客戶端鳖目。
    Proxy (代理):集群重配置期間客戶端可能出現(xiàn)短暫過期,透明代理請(qǐng)求到其他節(jié)點(diǎn)缤弦。
    Duplicate Resolution(副本解析):當(dāng)集群從活動(dòng)分區(qū)恢復(fù)時(shí),解決不同數(shù)據(jù)副本之間的沖突彻磁。

Data層:
負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)碍沐,Aerospike 屬于弱語法的key-value數(shù)據(jù)庫。數(shù)據(jù)存儲(chǔ)模式如下:

image-20200827175922672.png

namespace
命名空間衷蜓,數(shù)據(jù)存在命名空間中累提,相當(dāng)于RDBMS中的database,最多可設(shè)置32個(gè)磁浇。
一個(gè)namespace可關(guān)聯(lián)多塊SSD斋陪,一塊SSD只關(guān)聯(lián)一個(gè)namespace,每個(gè)namespace下包含4096個(gè)分

set
集合置吓,類似于數(shù)據(jù)庫表无虚,一個(gè)namespace最多1023個(gè)set
record
記錄,類似數(shù)據(jù)庫中的一行記錄衍锚, 采用弱語法(Schema-Less)的方式友题,bin可隨時(shí)增加或減少
key
主鍵,類型于數(shù)據(jù)表中的主鍵

bin
類似于數(shù)據(jù)庫字段戴质,支持Java基本數(shù)據(jù)類型:List度宦、Map、Blob, 一個(gè)namespace下最多32767個(gè)bin
索引:Aerospike Index包含主索引(Primary Index)和二級(jí)索引(Second Index)告匠,索引存儲(chǔ)在內(nèi)存
中戈抄,并不保存在硬盤里
一級(jí)索引(Primary-Index)
一級(jí)索引位于主鍵(key),采用hash表與紅黑樹的混合
二級(jí)索引(Secondary-Index)
二級(jí)索引位于非主鍵上后专,這允許一對(duì)多關(guān)系划鸽。采用哈希表和B-tree的混合
磁盤:Aerospike可以直接訪問硬盤中的raw blocks(原始?jí)K)直接尋址,并特別優(yōu)化了Aerospike的最
小化讀行贪、大塊寫和并行SSD來增加響應(yīng)速度和吞吐量漾稀。

Aerospike的使用

Aerospike的安裝

1模闲、從網(wǎng)上下載aerospike-server-community-5.0.0.7-el6.tgz

wget https://www.aerospike.com/download/server/latest/artifact/el6

下載aerospike-server-community的最新版
2、解壓aerospike-server-community-5.0.0.7-el6.tgz

tar -zxvf aerospike-server-community-5.0.0.7-el6.tgz
mv aerospike-server-community-5.0.0.7-el6 aerospike-server

3崭捍、安裝aerospike-server和aerospike-tools

cd aerospike-server
./asinstall

4尸折、驗(yàn)證是否安裝成功

[root@192 aerospike-server]# yum list installed | grep aerospike
aerospike-server-community.x86_64 5.0.0.7-1.el6 installed
aerospike-tools.x86_64 3.26.2-1.el6 installed
#卸載aerospike
[root@localhost ~]# rpm -e aerospike-server-community.x86_64
[root@localhost ~]# rpm -e aerospike-tools.x86_64
[root@localhost ~]# rm -rf /etc/aerospike/

5、aerospike-server啟動(dòng)殷蛇、停止实夹、重啟、狀態(tài)

systemctl start aerospike
systemctl stop aerospike
systemctl restart aerospike
systemctl status aerospike

6粒梦、aerospike-server管理:asadm

asadm 進(jìn)入管理端
Admin> info
Admin> i net

7亮航、aerospike-server操作 :aql

aql> show namespaces
+------------+
| namespaces |
+------------+
| "test" |
| "bar" |
Aerospike的基本概念

namespace 策略容器,類似RDBMS中的database匀们,可以設(shè)置副本數(shù)缴淋、內(nèi)存大小、有效時(shí)長泄朴、存儲(chǔ)引
擎重抖、文件存儲(chǔ)位置。 ? Sets 類似RDBMS中的表祖灰。 ? Records 類似RDBMS中的行 ? Bin 類似RDBMS中
的列钟沛,一行可以有多個(gè)bins。

Aerospike的數(shù)據(jù)操作
    --主鍵 bins 插入可以不同
    INSERT INTO <ns>[.<set>] (PK, <bins>) VALUES (<key>, <values>)
    DELETE FROM <ns>[.<set>] WHERE PK = <key>
    <ns> is the namespace for the record.
    <set> is the set name for the record.
    <key> is the record's primary key.
    <bins> is a comma-separated list of bin names.
    <values> is comma-separated list of bin values
    沒有update
    當(dāng)insert 同一pk時(shí)局扶,數(shù)據(jù)為修改
    Examples:
    INSERT INTO test.demo (PK, foo, bar) VALUES ('key1', 123, 'abc')
    DELETE FROM test.demo WHERE PK = 'key1'
    insert into test.user1 (PK,name,age,sex,address) VALUES (2,'zhaoyun',21,
    'M','beijing')
    insert into test.user2(pk,name,sex,age) values(1,'zhangfei','M',23)
    -- pk都是1 則是對(duì)原紀(jì)錄的修改
    insert into test.user2(pk,name,sex,age) values(1,'diaochan','F',18)
    QUERY
    SELECT <bins> FROM <ns>[.<set>]
    SELECT <bins> FROM <ns>[.<set>] WHERE <bin> = <value>
    SELECT <bins> FROM <ns>[.<set>] WHERE <bin> BETWEEN <lower> AND <upper>
    SELECT <bins> FROM <ns>[.<set>] WHERE PK = <key>
    SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> = <value>
    SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> BETWEEN
    <lower> AND <upper>
    <ns> is the namespace for the records to be queried.
    <set> is the set name for the record to be queried.
    <key> is the record's primary key.
    <bin> is the name of a bin.
    <value> is the value of a bin.
    <indextype> is the type of a index user wants to query.
    (LIST/MAPKEYS/MAPVALUES)
    <bins> can be either a wildcard (*) or a comma-separated list of bin
    names.
    <lower> is the lower bound for a numeric range query.
    <upper> is the lower bound for a numeric range query.
    Examples:
        SELECT * FROM test.demo
        SELECT * FROM test.demo WHERE PK = 'key1'
        SELECT foo, bar FROM test.demo WHERE PK = 'key1'
        SELECT foo, bar FROM test.demo WHERE foo = 123
        SELECT foo, bar FROM test.demo WHERE foo BETWEEN 0 AND 999
        select * from test.user2 where name='zhaoyun'
        --沒有建立索引 恨统,不能查詢
        Error: (201) AEROSPIKE_ERR_INDEX_NOT_FOUND
        create index idx_1 on test.user2(name) string
        select * from test.user2 where name='zhaoyun'
        +-----------+-----+-----+-----------+
        | name | sex | age | address |
        +-----------+-----+-----+-----------+
        | "zhaoyun" | "M" | 21 | "beijing" |
        +-----------+-----+-----+-----------+
        CREATE INDEX <index> ON <ns>[.<set>] (<bin>) NUMERIC|STRING|GEO2DSPHERE
        CREATE LIST/MAPKEYS/MAPVALUES INDEX <index> ON <ns>[.<set>] (<bin>)
        NUMERIC|STRING|GEO2DSPHERE
        CREATE INDEX idx_foo ON test.demo (foo) NUMERIC
        DROP INDEX test.demo idx_foo
Aerospike的客戶端(Java)

pom.xml引入aerospike-client

<!-- https://mvnrepository.com/artifact/com.aerospike/aerospike-client -->
    <dependency>
        <groupId>com.aerospike</groupId>
        <artifactId>aerospike-client</artifactId>
        <version>4.4.9</version>
    </dependency>

aerospike-client的API使用

    //IP+port
    AerospikeClient client=new AerospikeClient("192.168.127.128",3000);
    //寫策略
    WritePolicy wp=new WritePolicy();
    //超時(shí)時(shí)間
    wp.setTimeout(1000);
    /*
    key
    */
    Key k1=new Key("test","user1",1);
    /*
    bins
    */
    // KV
    Bin b11=new Bin("name","zhangfei");
    Bin b12=new Bin("sex","M");
    Bin b13=new Bin("age",23);
    //寫值
    client.put(wp,k1,b11,b12,b13);
    //讀值
    Record r1=client.get(wp,k1,"name","age","sex");
    System.out.println(r1);
    System.out.println("===================================");
    Key k2=new Key("test","user1",2);
    /*
    bins
    */
    // KV
    Bin b21=new Bin("name","diaochan");
    Bin b22=new Bin("sex","F");
    Bin b23=new Bin("age",21);
    //寫值
    client.put(wp,k2,b21,b22,b23);
    /*
    取得指定key的數(shù)據(jù)
    */
    //批量執(zhí)行策略
    BatchPolicy bp=new BatchPolicy(wp);
    //key的數(shù)組
    Key[] ks={k1,k2};
    //循環(huán)輸出
    for(Record r:client.get(bp,ks)){
    System.out.println(r);
    }

Aerospike集群實(shí)現(xiàn)

Aerospike集群管理

集群處理節(jié)點(diǎn)成員身份,并確保當(dāng)前成員和所有集群中的節(jié)點(diǎn)保持一致三妈。包括:集群視圖畜埋、節(jié)點(diǎn)發(fā)現(xiàn)和
視圖改變

集群視圖

每個(gè)Aerospike節(jié)點(diǎn)都會(huì)自動(dòng)分配唯一的節(jié)點(diǎn)標(biāo)識(shí)符,是由MAC地址和監(jiān)聽端口組成的沈跨。包括:
cluster_key:是一個(gè)隨機(jī)生成的8字節(jié)值由捎,用于標(biāo)識(shí)集群視圖的實(shí)例。
succession_list:是作為集群一部分的唯一節(jié)點(diǎn)標(biāo)識(shí)符集合饿凛。

節(jié)點(diǎn)發(fā)現(xiàn)

節(jié)點(diǎn)間通過心跳消息來檢測(cè)節(jié)點(diǎn)的有效或失效
集群中的每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)鄰接表狞玛,是最近向該節(jié)點(diǎn)發(fā)送心跳消息的其他節(jié)點(diǎn)列表
如果心跳超時(shí),則表示該節(jié)點(diǎn)失效涧窒,從鄰接表中刪除
Aerospike還采用其他信息作為備用二次心跳機(jī)制
集群中的每個(gè)節(jié)點(diǎn)通過計(jì)算平均消息丟失來評(píng)估每個(gè)相鄰節(jié)點(diǎn)的運(yùn)行狀態(tài)評(píng)分

視圖改變

領(lǐng)接表一旦發(fā)生改變心肪,就會(huì)觸發(fā)運(yùn)行一個(gè)Paxos共識(shí)算法來確定一個(gè)新的集群視圖。
Aerospike把鄰接表中節(jié)點(diǎn)標(biāo)識(shí)符最高的節(jié)點(diǎn)當(dāng)Proposer纠吴,并承擔(dān)Proposal的角色
Proposal提成新的集群視圖硬鞍,如果被接受,則節(jié)點(diǎn)開始重新分配數(shù)據(jù)(Rebalence)

Aerospike數(shù)據(jù)分布

Aerospike有智能分區(qū)算法,即把用戶輸入的key在內(nèi)部根據(jù)RIPEMD-160算法固该,重新hash出一個(gè)key并
取前20位锅减,然后相對(duì)均衡的把數(shù)據(jù)分布到各個(gè)節(jié)點(diǎn)之上。并且滿足namespace配置文件的配置(例如
保存多少個(gè)備份伐坏、是存在磁盤還是存在內(nèi)存中)怔匣。
每個(gè)Digest Space(namespace)被分為4096個(gè)不重疊的分區(qū)(partitions),它是Aerospike數(shù)據(jù)存
儲(chǔ)的最小單位

image-20200827180914923.png

如上桦沉,一個(gè)4個(gè)節(jié)點(diǎn)的集群每瞒,每個(gè)節(jié)點(diǎn)存儲(chǔ)1/4數(shù)據(jù)的主節(jié)點(diǎn),同時(shí)也存儲(chǔ)1/4數(shù)據(jù)的副本纯露。如果節(jié)點(diǎn)1不
可訪問剿骨,節(jié)點(diǎn)1的副本將被拷貝到其他節(jié)點(diǎn)上。
復(fù)制因子( replication factor)是一個(gè)配置參數(shù)埠褪,不能超過集群節(jié)點(diǎn)數(shù)浓利。副本越多可靠性越高。
作為必須經(jīng)過所有數(shù)據(jù)副本的寫請(qǐng)求也越高钞速。實(shí)踐中荞膘,大部分部署使用的數(shù)據(jù)因子為2(一份主數(shù)據(jù)和
一個(gè)副本)。 同步復(fù)制保證即時(shí)一致性玉工,沒有數(shù)據(jù)丟失。在提交數(shù)據(jù)并返回結(jié)果給客戶端之前淘菩,寫事務(wù)
被傳播到所有副本遵班。
主成功同時(shí)備成功后,客戶端認(rèn)為是成功
在集群重新配置期間潮改,當(dāng)Aerospike智能終端發(fā)送請(qǐng)求到那些短暫過時(shí)的錯(cuò)誤節(jié)點(diǎn)時(shí)狭郑,Aerospike智能集
群會(huì)透明的代理請(qǐng)求至正確的節(jié)點(diǎn)。

Aerospike集群配置和部署

有兩種方式可以搭建集群:Multicast組播方式(UDP)和Mesh網(wǎng)格方式(TCP)
Multicast組播方式(UDP)

heartbeat {
    mode multicast
    multicast-group 239.1.139.1
    port 3000
    address 192.168.127.131
    interval 150
    timeout 10
}

udp是不可靠協(xié)議汇在,所以有可能會(huì)造成節(jié)點(diǎn)脫落翰萨,而且網(wǎng)絡(luò)有可能不支持組播
Mesh網(wǎng)格方式(TCP)

heartbeat {
    mode mesh
    # add current node address here
    address 192.168.127.131
    port 3000
    # add all cluster node address here
    mesh-seed-address-port 192.168.127.131 3002
    mesh-seed-address-port 192.168.127.128 3002
    interval 150
    timeout 10
}
集群部署

在192.168.127.128上安裝Aerospike后,修改配置文件/etc/aerospike/aerospike.conf

vim /etc/aerospike/aerospike.conf
service {
    user root
    group root
    paxos-single-replica-limit 1 # Number of nodes where the replica count
    is automatically reduced to 1.
    pidfile /var/run/aerospike/asd.pid
    proto-fd-max 15000
}
    logging {
    # Log file must be an absolute path.
    file /var/log/aerospike/aerospike.log {
    context any info
    }
}
network {
    service {
        address any
        port 3000
        access-address 192.168.127.128 3002
    }
    heartbeat {
        mode mesh
        address 192.168.127.128
        port 3002
        #all cluster
        mesh-seed-address-port 192.168.127.128 3002
        mesh-seed-address-port 192.168.127.131 3002
        # To use unicast-mesh heartbeats, remove the 3 lines above, and
        see
        # aerospike_mesh.conf for alternative.
        interval 150
        timeout 10      
        }
    fabric {
        address any
        port 3001
    }
    info {
        address any
        port 3003
        }
    }
    namespace test {
    replication-factor 2
    memory-size 256M
    storage-engine memory
    namespace bar {
        replication-factor 2
        memory-size 256M
        storage-engine memory
    }

在192.168.127.131上安裝Aerospike后糕殉,修改配置文件

public class GuavaDemo {
service {
user root
group root
paxos-single-replica-limit 1 # Number of nodes where the replica count
is automatically reduced to 1.
pidfile /var/run/aerospike/asd.pid
proto-fd-max 15000
}
}
logging {
# Log file must be an absolute path.
file /var/log/aerospike/aerospike.log {
context any info
}
}
network {
service {
address any
port 3000
access-address 192.168.127.131 3002
}
heartbeat {
mode mesh
address 192.168.127.131
port 3002
#all cluster
mesh-seed-address-port 192.168.127.131 3002
mesh-seed-address-port 192.168.127.128 3002
# To use unicast-mesh heartbeats, remove the 3 lines above, and
see
# aerospike_mesh.conf for alternative.
interval 150
timeout 10
}
fabric {
address any
port 3001
}
info {
address any
port 3003
}
}
namespace test {
replication-factor 2
memory-size 256M
storage-engine memory
}
namespace bar {
replication-factor 2
memory-size 256M
storage-engine memory
}

Aerospike集群的訪問

    Host[] hosts = new Host[]{
        new Host("192.168.127.128", 3000),
        new Host("192.168.127.131", 3000)
    };
    ClientPolicy policy = new ClientPolicy();
    AerospikeClient client = new AerospikeClient(policy, hosts);
    //寫策略
    WritePolicy wp = new WritePolicy();
    //超時(shí)時(shí)間
    wp.setTimeout(500);
    Key key1 = new Key("test", "SUser", "11");
    Bin bin11 = new Bin("name", "zhangfei-c");
    Bin bin12 = new Bin("age", 25);
    Bin bin13 = new Bin("sex", "M-c");
    client.put(wp, key1, bin11, bin12, bin13);
    Key key2 = new Key("test", "SUser", "22");
    Bin bin21 = new Bin("name", "zhaoyun-c");
    Bin bin22 = new Bin("age", 24);
    Bin bin23 = new Bin("sex", "M-c");
    client.put(wp, key2, bin21, bin22, bin23);
    Record r1 = client.get(wp, key1, "name", "age", "sex");
    System.out.println(r1);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亩鬼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阿蝶,更是在濱河造成了極大的恐慌雳锋,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羡洁,死亡現(xiàn)場(chǎng)離奇詭異玷过,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門辛蚊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粤蝎,“玉大人,你說我怎么就攤上這事袋马〕跖欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵飞蛹,是天一觀的道長谤狡。 經(jīng)常有香客問我,道長卧檐,這世上最難降的妖魔是什么墓懂? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮霉囚,結(jié)果婚禮上捕仔,老公的妹妹穿的比我還像新娘。我一直安慰自己盈罐,他們只是感情好抓艳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涡贱,像睡著了一般巧勤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上票顾,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天础浮,我揣著相機(jī)與錄音,去河邊找鬼奠骄。 笑死豆同,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的含鳞。 我是一名探鬼主播影锈,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝉绷!你這毒婦竟也來了鸭廷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤潜必,失蹤者是張志新(化名)和其女友劉穎靴姿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磁滚,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佛吓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宵晚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片维雇。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淤刃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吱型,到底是詐尸還是另有隱情逸贾,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布津滞,位于F島的核電站铝侵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏触徐。R本人自食惡果不足惜咪鲜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撞鹉。 院中可真熱鬧疟丙,春花似錦、人聲如沸鸟雏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孝鹊。三九已至炊琉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間又活,已是汗流浹背温自。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留皇钞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓松捉,卻偏偏與公主長得像夹界,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隘世,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348