SSDB

如何快速获得高并发编程经验?PCC性能挑战赛作品简介及源代码

纵然是瞬间 提交于 2020-11-08 04:50:17
如何快速获得高并发编程经验?PCC性能挑战赛作品简介及源代码 PCC 是 Performance Challenge Championship (性能挑战杯)的缩写,是高可用架构后花园会员在线上组织的一个活动,由于反响热烈,考虑到线下进行可以更好的加深对高并发编程的理解,于是高可用架构在 3 月组织了本次 PCC 活动。 对于工程师来说,参加 PCC 编程挑战赛的部分意义: 体验完成一个技术小目标。高性能系统如何实现应当是每个工程师需要走的路。 学习优秀的架构方法,隔壁老王用的设计思想,可能你坐在办公室永远也无法想到。 有经验评委的点评,了解真实环境的高并发系统的追求目标。 类似主题、有同样级别参赛队员及评委参加的编程活动,可能仅此一次。 比赛方法说明 实现类似 facebook 中的 like 功能,需要: 可以对一个对象(一条feed、文章、或者url)进行 like 操作,禁止 like 两次,第二次 like 返回错误码 有 isLike 接口,返回参数指定的对象有没有被当前用户 like 过 需要看到一个对象的 like 计数 可以看到一个对象的 like 用户列表(类似 QQ 空间); 上述列表加分项:Like优先显示我的好友列表(social list)。 数据量:每天新增的 like 对象数为 1 千万,每秒 like 计数器查询量为 30 万次 / 秒。 比赛盛况

Docker Hadoop、Spark、Kafka、Zookeeper等集群服务搭建

百般思念 提交于 2020-09-27 13:09:51
目录 Docker搭建Hadoop集群(Docker & Hadoop & HDFS & Yarn & Cluster) Docker搭建Myrocks实例(Docker & Mysql & Rocksdb) Docker搭建Kafka集群(Docker & Kafka & Cluster) Docker Container开启ssh服务 Docker Host创建swarm overlay网络 Docker Host设置自启动、国内源、代理 Docker、Docker Compose、Docker Machine各平台安装 Docker 搭建Zookeeper集群(Docker & Zookeeper & Replication) Docker 搭建Pika分片多主集群(Docker & Codis & Pika& Replication & Sharding) Docker搭建Spark集群(Docker & Spark & Cluster & Local & Standalone) Docker搭建SSDB分片多主集群(Docker & Twemproxy & SSDB & Replication & Sharding) Docker搭建MongoRocks副本分片集群(Docker & Mongodb & Rocksdb & Replication & Sharding)

高性能kv存储之Redis、Redis Cluster、Pika:如何应对4000亿的日访问量?

江枫思渺然 提交于 2020-05-05 23:02:39
一、背景介绍 随着360公司业务发展,业务使用kv存储的需求越来越大。为了应对kv存储需求爆发式的增长和多使用场景的需求,360web平台部致力于打造一个全方位,适用于多场景需求的kv解决方案。目前,我们线上大规模使用的kv存储有Redis,Redis cluster以及Pika。 为什么说是爆发式的需求增长呢?早在2015年9月份,公司Redis的日访问量还处于800亿,到了2016年第三季度日访问量已经突破2500亿,2017年第一季度日访问量已经接近4000亿。短短的一年半时间,日访问量增长了5倍。下面给大家分别简单介绍一下Redis,Redis Cluster以及Pika的特点和使用场景。 二、kv存储之Redis 1、Redis介绍 Redis做为大家熟知的开源内存数据库,在很多项目中被广泛的使用。它支持String、Hash、List、Set、Zset、Geo、Hyperloglogs等多数据结构。同时也支持主从复制、Lua脚本、事务、数据持久化、高可用和集群化等等 2、Redis特性 1)高性能:Redis虽然是单线程的,但是它同样拥有着超高的性能。我们线上的普通PC Server上,经过测试,每秒请求数OPS能够达到10w左右。 2)多样化数据结构:Redis支持String、Hash、List、Set、Zset、Geo等多数据结构。 3)持久化:RDB持久化

发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb

雨燕双飞 提交于 2020-01-08 21:30:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 起因 ledisdb 是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。 我们现在的应用极大的依赖redis,但随着我们用户量越来越大,redis的内存越来越不够用,并且replication可能还会导致超时问题。虽然后续我们可以通过添加多台机器来解决,但是在现有机器配置下面,我们仍希望单台机器承载更多的用户。另外,因为业务的特性,我们其实并不需要将所有的数据放到内存,只需要存放当前活跃用户。 经过我们的调研,发现ssdb已经很好的帮我们解决了这个问题,它提供了跟redis一致的接口(当然有些地方还是稍微不同),但是底层采用leveldb进行存储。根据其官网的描述,性能已经接近甚至超越了redis。 本着 造轮子 的精神,我决定用go实现一个类似的db,取名为ledisdb,也就是 level-redis-db ,为啥不用现成的ssdb,我觉得有如下几个原因: go语言开发的快速,这点毋庸置疑,虽然性能上面铁定离c++的代码有差距,但是我能够快速的进行原型搭建并实验。实际上,我在很短的时间里面就开发出了ledisdb,让我后续继续开发有了信心。 leveldb的研究

SSDB 数据库

爱⌒轻易说出口 提交于 2019-12-16 15:05:23
SSDB数据库 SSDB 是一套基于 LevelDB 存储引擎的非关系型数据库(NOSQL),可用于取代 Redis ,更适合海量数据的存储。 另外, rocksdb 是FB在LevelDB的二次开发版本,因此也存在使用RocksDB作为存储引擎的SSDB版本,可以参考 这里 。 编译和安装 wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip unzip master cd ssdb-master make # 将安装在 /usr/local/ssdb 目录下 sudo make install 启动服务 # 启动主库 ./ssdb-server ssdb.conf # 或者启动为后台进程 ./ssdb-server -d ssdb.conf # 启动 ssdb 命令行客户端 ./tools/ssdb-cli -p 8888 # 停止 ssdb-server ./ssdb-server ssdb.conf -s stop # 对于旧版本 kill `cat ./var/ssdb.pid` 配置文件 ssdb.conf: work_dir = ./var pidfile = ./var/ssdb.pid server: ip: 127.0.0.1 port: 8888 # bind

SSDB数据库笔记

谁说胖子不能爱 提交于 2019-12-06 01:05:41
目录 环境 配置文件 启动服务器 客户端 SSDB:一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 参考文献: SSDB官网 环境 win10 下 wsl 环境 ubuntu 的 ssdb 配置文件 配置文件使用Tab而不是空格做缩排(复制到配置文件后请把空格替换为Tab) work_dir = /usr/data/ssdb_8883 pidfile = /usr/data/ssdb_8883.pid server: ip: 0.0.0.0 port: 8883 allow: 127.0.0.1 allow: 192.168 replication: binlog: yes sync_speed: -1 slaveof: type: sync ip: 127.0.0.1 port: 8881 logger: level: error output: /usr/data/ssdb_8883.log rotate: size: 1000000000 leveldb: cache_size: 500 block_size: 32 write_buffer_size: 64 compaction_speed: 1000 compression: yes 启动服务器 nohup /usr/servers/ssdb-1.8.2/ssdb-server /usr

ubuntu14下搭建ssdb主从环境

≯℡__Kan透↙ 提交于 2019-12-05 04:17:21
在工作中接触到了redis,Redis是一个非常高效的key-value的数据库,在项目中广泛使用,但是redis很明显的缺点是对于内存的处理,在项目上线之初,必须对内存规划合理,否则很容易出现内存爆了的现象,一般较合理的内存大小为电脑物理内存的3/5。 redis提供了多种数据类型,我经常使用的为string 、hash、list、set、sorted set,基本能满足项目对于数据类型的要求。我们使用的是redis的Java客户端,提供了一系列针对redis命令对应的api。redis的持久化提供了多种策略,但我们没有去做持久化,自己研究了下,AOF方式感觉是最可靠的,原理和mysql的二进制日志很类似,也是将操作信息记录下来写到文件,从服务器去读取日志并执行操作。 在平常内网开发中可能经常需要调整数据存储细节,所以如果之前的数据依然驻留在内存中,会导致很多功能无法正常运行,所以在调整细节之后,需要对redis数据库flushdb操作。 redis与ssdb在某些场景很适合使用,比如某些数据在数据库中只能残留2分钟,类似YY频道T人,固定几分钟后才能进来,就可以使用setex key seconds value命令,之后判断是否过期可以通过exists key 命令。 redis常用命令网站: http://redis.readthedocs.org/en/latest/

让Redis突破内存大小的限制

匿名 (未验证) 提交于 2019-12-03 00:43:02
Redis虽然可以实现持久化存储,也是基于数据内存模型的基础之上,单机内存大小限制着Redis存储的数据量,有没有一种替代方案呢?本文介绍一款笔者使用的采用New BSD License 许可协议的软件――SSDB。 官网地址: http://ssdb.io/zh_cn/ SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, list, map(hash), zset(sorted set) 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据。操作命令与redis无异,客户端也很丰富,在众多公司已经在生产环境中使用。 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ 开发 Redis API 兼容, 支持 Redis 客户端 适合存储集合数据, 如 list, hash, zset... 客户端 API 支持的语言包括: C++, PHP, Python, Java, Go 持久化的队列服务 主从复制, 负载均衡 安装 wget no check certificate https : //github.com/ideawu/ssdb/archive/master.zip unzip master cd ssdb master make optional, install

LevelDB性能测试|Golang调用LevelDB

大兔子大兔子 提交于 2019-12-02 14:53:25
LevelDB性能测试|Golang调用LevelDB 不同方式使用压力测试 用ssdb,TCP连接方式调用,底层存储levelDB 直接调用Cgo的levelDB (必须保证串行) 直接调用Golang的LevelDB (必须保证串行) 开始: go test -v -test.run="DB.*" -test.bench="DB.*" -test.count=1 -test.benchtime=3s go test -v -test.run="Raws.*" -test.bench="Raws.*" -test.count=1 -test.benchtime=3s go test -v -test.run="Normal.*" -test.bench="Normal.*" -test.count=1 -test.benchtime=3s 性能对比: 1.调用SSDB:随机读写,和顺序读写差异不大,网络延迟是主要问题。 goos: linux goarch: amd64 pkg: common/ssdb Benchmark_DBSXSSDBSET 30000 127546 ns/op Benchmark_DBSXSSDBGET 50000 118855 ns/op Benchmark_DBRandomSSDBSET 30000 128268 ns/op Benchmark