异数OS 织梦师-水桶(三)-- RAM共享存储方案
.
异数OS 织梦师-水桶(三)– RAM共享存储方案
本文来自异数OS社区
github: https://github.com/yds086/HereticOS
异数OS社区QQ群: 652455784
异数OS-织梦师(消息中间件 RPC技术)群: 476260389
- 异数OS 织梦师-水桶(三)– RAM共享存储方案
- 本文来自异数OS社区
- 织梦师-水桶 RAM共享存储简介
- 与众不同的特性
- 织梦师-水桶 方案说明
- 织梦师-水桶测试成绩
- LPC本地64字节序列读
- LPC本地64字节随机读
- RPC TCP远程64字节序列读
- RPC TCP远程64字节随机读
- 相关存储产品性能对比
织梦师-水桶 RAM共享存储简介
织梦师-水桶 是使用异数OS IPC技术设计实现的一种共享介质层存储方案,得益于IPC的简单易用,因此水桶的设计过程是非常轻松容易的,也因此也更加方便用户定制扩展,由于异数OS IPC性能的突破,他也因此提供了其他系统无法提供的一些激动特性与能力。
与众不同的特性
- 简单的框架,简单的实现,使用IPC技术,不需要重量级的定义功能和通讯协议,整个实现加测试仅500行代码。
- 网络共享存储特性 传统的介质存储方案,只能访问者独占使用,不能分布式扩充性能与容量,因此在使用中受到了极大的能力限制,原因有两点,一是存储介质被硬件结构控制一般不能直接支持网络访问,二是介质存储只提供读写访问能力,对于多个读写者而言,不能彼此同步cache,造成多访问者环境出现不可预知的数据故障,因此一般介质存储之上需要复杂的文件系统(分布式)来对介质做独占访问,比如iscsi技术虽然解决了介质的网络访问问题,但却无法解决多访问者系统的cache同步,一致性等问题,因此iscsi并不能独立提供存储方案,还需要宿主操作系统的文件系统做支持,才能为应用提供共享的存储能力,织梦师-水桶则通过IPC技术解决了上述传统介质存储中问题,水桶可以使用TCP网络RPC来实现扩展远程访问的能力,同时,通过RPC技术,水桶提供了介质写入消息实时推送广播,这使得多访问者之间的cache实时同步成为可能,使用这一技术扩展各类分布式cache产品后,则可以使得各个分布式cache实例的数据更新在微秒级别完成实时跟新同步,而不需要cache产品耗费更多同步开销,从而为秒杀类推送类应用提供更好更实时的服务(12306),由于共享存储介质方案的实现,文件系统以及介质存储的边界变的模糊,介质存储因此可以不用依赖文件系统直接为应用以及cache提供存储服务,而文件系统则可以通过共享介质存储来获得更加简化高效的存储方案。
- 方便定制 由于是软件介质存储方案,因此并不需要符合一些硬件规范的通讯协议,比如scsi,nvme等,用户可以根据自己需求改变功能设计,增加写入日志,定制访问事件,甚至将介质存储改变为对象存储,也是很容易完成的。
- 方便的定制扩充nosql能力,提高nosql的一些实际业务效率,降低需求对newsql技术的依赖,长久以来nosql在提高和扩充系统容量性能,降低系统设计复杂性方面成效卓著,但nosql由于缺乏事务能力,数据结构能力固定,导致一些上层业务逻辑设计无法直接在nosql之上落地,织梦师-水桶由于使用rpc技术实现,在介质层有望提供事务定制,业务服务定制能力,将事务以及业务下沉到介质存储层有利于真正解决一些数据业务的效率问题,比如将sql的select操作下沉到存储层后,将大大降低对nosql的网络io需求,提升系统tps能力,因此从根本上使得nosql技术可以快速定制落地满足复杂项目业务需求,从而降低对newsql的需求依赖(newsql并不能高效的适应加速所有业务场景,本身对网络IO的性能以及延迟依赖较大)。
- 更灵活高效的介质访问方案 传统的介质访问技术由于考虑到linux windows等传统操作系统的实际能力限制,所以使用了更大的块存储单位,主流的硬盘 SSD都使用4096字节的块读写单位,以便于在linux windows约束下,更有利的发挥硬件带宽,但这却没有解决实际需求问题,反而带来更多性能障碍,织梦师-水桶则提供小到16字节的块访问单位,在同样带宽和内存开销下,相比4096字节的块,16字节在随机读写性能上,理论上则可达到4096字节的256倍,同时上层cache(redis)在缓存小数据时(16字节)同样的内存开销则可缓存256倍的数据项,或者在缓存同样数据项的网络带宽需求降低64倍,由于可变读写长度的优势,因此在做对象存储时对带宽以及内存的利用则变的毫无冗余。
- 10倍以上随机读写性能 在SSD成为主流存储方案后,一些基于linux windows操作系统开发的网络分布式cache方案甚至因此磁盘io性能的不适应而被淘汰,原因是SSD在存储容量以及随机读写性能以及数据安全可用性上都优于网络cache产品,但现在情况不同了,异数OS由于网络IO瓶颈解除,使用异数OS开发的cache在随机读写性能上达到SSD 10倍以上,并且由于共享存储特性,则可以很容易做到分布式容量和性能的扩充。
织梦师-水桶 方案说明
1.WriteNotifyClient 启动后在DiskIPCServer注册关注的块写入事件IPC,DiskIPCServer收到注册请求后启动一个对应的WriteNotifyPushThread,WriteNotifyPushThread等待一个写入事件event.
2.ReadWriteClient通过DiskIPCServer提供的DiskIPC服务读写RAM盘,DiskIPCServer在Write IPC中检查write操作,如果有关注的块写入事件,则触发相关event, 相关联的WriteNotifyPushThread因此活跃并通过IPC推送event到WriteNotifyClient。
demo实现以及测试代码在git目录的test目录下,有兴趣的可以观摩下。
织梦师-水桶测试成绩
测试项目中组件通讯分为LPC RPC两种,读测试主要是64线程64字节序列读和随机读,写测试以及WriteNotify的成绩暂时不提供,原因是WriteNotify回和持久化策略以及上层文件系统事件响应能力有关系,LPC是单核环境下,本地服务线程间通讯,RPC是异数OS TCP协议栈实现的跨网络通讯,环境是dpdk 82599 10G网卡环境,所有测试成绩均是指每核性能。
LPC本地64字节序列读
LPC本地64字节随机读
RPC TCP远程64字节序列读
RPC TCP远程64字节随机读
相关存储产品性能对比
数据来自网络,环境目标不同,选取目标产品最大性能值,成绩仅供参考。
引用的其他产品测试成绩
Intel 900P
https://www.chiphell.com/thread-1788441-1-1.html
https://baijiahao.baidu.com/s?id=1588310894168427063&wfr=spider&for=pc
redis
https://blog.csdn.net/zlfprogram/article/details/74338685
测试特性 | LPC 64字节1线程序列读 | LPC 64字节1线程随机读 | RPC 64字节64线程序列读 | RPC 64字节64线程随机读 | Intel 900P SSD 4K DQ1随机读 | Redis 非批量读 | Redis 批量读 | 阿里 PolarDB RDMA |
---|---|---|---|---|---|---|---|---|
IOPS | 13M | 6.4M | 4.1M | 3.5M | 55W(实际被操作系统约束在10W) | 8W | 50W | 20W |
平均延迟 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 10ms+调用性能/链接数量 | 10ms+调用性能/链接数量 | 10ms+调用性能/链接数量 | 10ms+调用性能/链接数量 |
最小延迟 | <1us | <1us | 10us | 10us | 1-10ms | 1-10ms | 1-10ms | 1-10ms |
异数OS 织梦师-水桶(三)-- RAM共享存储方案相关推荐
- 异数OS 织梦师-水母(一)--消息队列篇 1
异数OS 织梦师-水母(一)–消息队列篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异数O ...
- 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地...
. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...
- 异数OS 2017 DPDK 峰会观后感
1.DPDK in Container 使用虚拟网卡设备技术为每一个容器分配一个IP 网卡适配器(queue).容器技术可以解决虚拟机技术中虚拟机过于臃肿,难于热迁移的问题,可能可以代替美团OVS方案 ...
- (带手机版数据同步)未解之谜新闻网类网站源码 奇闻异事网站织梦模板
介绍 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围极广,不仅仅局限于一类型的其企业,未解之谜.奇闻异事类的都可以用该模板.你只需要把图片和产品内容换成你的即可,颜色都可以修改,改完让你耳目 ...
- 织梦系统(DedeCMS)安全加固方案
一.织梦(DedeCMS)介绍 织梦(DedeCMS)作为国内龙头CMS系统之一,因其系统结构科学合理,操作使用简单,拥有海量用户. 和其他CMS一样,安全漏洞也是其无法避免的问题.虽然官方不断发布补 ...
- RHCS套件实现高可用负载均衡集群(三)——共享存储
注:此博文在博文"RHCS套件实现高可用负载均衡集群(二)"的基础上完成 实验开始前设置实验环境 target端配置--server3 [root@server3 ~]# yum ...
- 三种浏览器存储方案,你还担心数据无处放吗
webStorage 基本概念 webStorage提供了两种存储方式,localStorage和sessionStorage. localStorage是持久化存储,不主动删除存储的内容会永久存在 ...
- 异数OS-织梦师-管仲(八) 并发危机解决之道
异数OS-织梦师-管仲(八) 并发危机解决之道 文章目录 异数OS-织梦师-管仲(八) 并发危机解决之道 前言 管仲佐纠 <管子>专用申明 解不开的并发障碍 Redis的并发障碍 MapR ...
- 织梦 php 调用栏目,织梦dedecms如何调用当前栏目文章数
织梦dedecms如何调用当前栏目文章数? 织梦dedecms调用当前栏目文章数方法 做模板时,经常需要为每个栏目加上此栏目的文章数.和大家分享下实现的方法,此方法适合5.6及5.7.5.7sp1其它 ...
- mysql 织梦 优化,优化分析:分享织梦搭建和后台优化设置
织梦内容管理系统(DedeCms) 以简单.实用.开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统.DedeCMS基于PHP+MySQL的技术开发,支持多种服务器 ...
最新文章
- python中def _init_是什么意思_Python中self和__init__的含义与使用
- html2canvas文字重叠(手机端)
- 不丹的启示:用国民幸福总值替代GDP
- 过拟合(原因、解决方案、原理)
- 音视频技术开发周刊 | 172
- postman使用过程中body中的form-data,x-www-form-urlencoded,raw,binary的简单记录
- linux addr2line
- Vue中的hellow world描述el与data的基本使用--Vue知识点归纳(一)
- php中find的函数_filter()、find()函数的区别
- 在 Perl 中利用 DOM 和 XPath 对 XML 进行有效处理
- HTML5+js+css3开心消消乐手机pc端通用源码|H5小游戏
- python3 数据挖掘 之 爬取 智联招聘网站来巩固pandas
- 简单实现图片转彩色字符画
- Scala安装教程(最详细教程)
- 软件测试系统性总结思维导图
- tomcat下载指定版本
- are exo exo是什么歌 we_We Are One EXO!
- 知乎视频:联合创作盘活内容价值
- AE快速批量添加字幕
- 用 JS 原生方法实现 jQuery 的 append, prepend, before, after
热门文章
- SXLib3D -- 一款高效的点云和网格交互处理平台
- 高等数学关于切线,法线,切平面,法平面的详细解释
- 程序员阶段性成长的自我总结
- python excel 填充颜色_pandas to_excel 添加颜色操作
- npy/npz/pkl/csv长字符串存储
- java 锯齿_Java2D图形抗锯齿
- 计算机的音频管理器在哪里打开,Realtek高清晰音频管理器怎么找不到打开教程...
- 饭店流量预测-多表关联+lightgbm
- 2021 年“认证杯”网络挑战赛 B 题(第二阶段)
- 西门子SITOP电源维修6EP1336-3BA00冗余电源模块维修概述