首页 > 编程语言 >《Java架构师的第一性原理》32分布式计算之分布式缓存第3篇LevelDB

《Java架构师的第一性原理》32分布式计算之分布式缓存第3篇LevelDB

时间:2023-12-21 14:13:30浏览次数:32  
标签:LevelDB Java 32 分布式计算 value 耗时 key 操作 微秒

互联网业务,绝大部分场景,会使用缓存服务

但有时候,确实会使用到进程内存缓存/数据库,这个时候,LevelDB就能派上用场了。
啥是LevelDB?
LevelDB是Google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与字符串的value,并且这种映射关系按key排序(ordered mapping)。
LevelDB有什么特点?
(1)key和value可以是字符串或者字节流;
(2)数据默认按key排列,有序存储;
画外音:调用方可以重载排序方法,以实现自定义排序。
(3)简单易用,基本操作只有3种:
    - Put(key, value)
    - Get(key)
    - Delete(key)
(4)提供原子批量修改接口;
(5)支持数据快照;
(6)支持数据自动压缩;画外音:使用的是snappy压缩算法。
(7)开源,文档很详尽,Google出品很可靠;
LevelDB有什么局限?
(1)LevelDB不是一个SQL数据库,没有关系型的存储模型,不支持SQL语句,不支持索引;
(2)同时只能有一个进程(当然,这个进程可以是多线程的)访问一个特定的数据库;
(3)LevelDB只是一个lib库,没有实现什么client-server网络通讯什么的,当然用户可以自己将lib包装一层,实现自己的server;
LevelDB的性能如何?内存缓存的特点就是快。
Google也进行了一系列测试:测试库共100w行记录,每条记录16字节的key,100字节的value,压缩后的value大概50字节。
写性能
顺序写:平均每次操作耗时1.765微秒,即支持每秒大概55w次顺序写操作;
顺序写+每次都刷盘:平均每次操作耗时268.409微妙,即支持每秒大概3700次的刷盘写操作;
随机写:平均每次操作耗时2.460微秒,即支持每秒大概40w次随机写操作;
更新写:平均每次操作耗时2.380微秒,性能和随机写差不多;

读性能
随机读:平均每次操作耗时16.677微秒,即支持每秒大概6w次随机读操作;
顺序读:平均每次操作耗时0.476微秒,即支持每秒大概210w次顺序读操作;
逆序读:平均每次操作耗时0.724微秒,即支持每秒大概130w次逆序读操作;
上述性能都是在没有打开“压缩”功能下的结果,如果打开“压缩”选项,性能会有所提升。画外音:Google非常诚实的提到,由于100w行的数据量很小,这些数据是能够完全放入内存。
如果仅限于方案调研,上面的内容应该够用了;如果想了解LevelDB内部的细节,未来再撰文吧。

标签:LevelDB,Java,32,分布式计算,value,耗时,key,操作,微秒
From: https://www.cnblogs.com/yeahwell/p/14426038.html

相关文章

  • 《Java架构师的第一性原理》32分布式计算之分布式缓存第1篇如何使用Redis搭建玩家排行
    今天我们用Redis搭建一个玩家的排行榜,假设一个服务器存储了10万名玩家的数据,我们想给这个区(这台服务器)上的玩家做个全区的排名,该如何用Redis实现呢?不妨一起来思考下面几个问题:MySQL是如何实现玩家排行榜的?有哪些难题需要解决?如何用Redis模拟10万名玩家数据?Redis里......
  • 《Java架构师的第一性原理》33分布式计算之分布式注册中心、分布式配置中心
    待补充1分布式注册中心2分布式配置中心2.1Apollo2.1.1Apollo是怎样注入到SpringBean的容器里的   99直接读这些牛人的原文apollo不使用MQ如何实现pub/sub场景?13张图彻底搞懂分布式系统服务注册与发现原理为什么@Value可以获取配置中心的值?Spring8:一些......
  • 《Java架构师的第一性原理》32分布式计算之分布式锁(Redis、Zookeeper)
    1 这才是真正的分布式锁技术领域,我觉得了解来龙去脉,了解本质原理,比用什么工具实现更重要:(1)进程多线程如何互斥?(2)一个手机上两个APP访问一个文件如何互斥?(3)分布式环境下多个服务访问一个资源如何互斥?归根结底,是利用一个互斥才能访问的公共资源来实现分布式锁,具体这个公共资源是r......
  • 大学四年自学Java编程,现在拿到28万年薪的offer,还是觉得挺值的
    最近刚拿到美团的Java后端工程师的offer,(底薪、奖金、补贴、年终奖、五险一金)总包加在大概有28万的年薪,实际到手不会有这么多,但是我对于这个待遇还是非常满意的。说来还是非常的感慨,我属于那种从大一到大四一直都泡在图书馆学习的学生,因为家庭条件很一般,然后自己的思想也要比同龄人......
  • 转行自学Java没后悔,我的经历证明,改变永远没有错
    我在北京工作6年,现在年薪42万(仅代表个人收益),目前在搜狐畅游工作,参与过轩辕剑的项目研发,有几个大型项目实战的经历,不过最后这几款项目都失败了。我之所以选择当初学习Java,就一个原因,一个破二本学历,没有好的学校背景,没有深厚的家庭背景,没有好的社会资源,我就只能选择做IT技术,因为这是......
  • Java使用POI库读取或者生成Excel
    maven引入poi库,版本选4.1.2<!--excel工具--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency>应用,编辑excel有两种......
  • Java是一门功能强大且广泛使用的编程语言
    Java是一门功能强大且广泛使用的编程语言,有许多有趣而实用的开发教程可以帮助你更好地学习和应用Java。以下是一些有趣的Java开发教程推荐:JavaFX图形用户界面教程:JavaFX是Java的一个丰富的GUI平台,用于创建漂亮的用户界面和交互式效果。学习JavaFX可以让你了解如何创建各种富有创意......
  • nacos 2.3.0 支持 java openjdk 22吗? 支持
    [nacos2.2.3支持jdk17吗?-SegmentFault思否](https://segmentfault.com/q/1010000044179850)renguoqiang@ubuntulenovo:~/gitee_base/nacos-server-2.3.0/bin$java找不到命令“java”,但可以通过以下软件包安装它:sudoaptinstalldefault-jre#version2:1.......
  • java读取网络文件和本地文件
    java读取网络文件和本地文件:packagecom.mybatisplustest.test;importjava.io.*;importjava.net.URL;/***CreatedbyAdministratoron2023/12/21.*/publicclassTest{publicstaticvoidmain(String[]args){//读取网络文件readNet......
  • STM32 窗口看门狗(WWDG)实验
    ......