.

异数OS 织梦师-水桶(三)– RAM共享存储方案


本文来自异数OS社区


github: https://github.com/yds086/HereticOS

异数OS社区QQ群: 652455784

异数OS-织梦师(消息中间件 RPC技术)群: 476260389



织梦师-水桶 RAM共享存储简介


织梦师-水桶 是使用异数OS IPC技术设计实现的一种共享介质层存储方案,得益于IPC的简单易用,因此水桶的设计过程是非常轻松容易的,也因此也更加方便用户定制扩展,由于异数OS IPC性能的突破,他也因此提供了其他系统无法提供的一些激动特性与能力。


与众不同的特性


  1. 简单的框架,简单的实现,使用IPC技术,不需要重量级的定义功能和通讯协议,整个实现加测试仅500行代码。
  2. 网络共享存储特性 传统的介质存储方案,只能访问者独占使用,不能分布式扩充性能与容量,因此在使用中受到了极大的能力限制,原因有两点,一是存储介质被硬件结构控制一般不能直接支持网络访问,二是介质存储只提供读写访问能力,对于多个读写者而言,不能彼此同步cache,造成多访问者环境出现不可预知的数据故障,因此一般介质存储之上需要复杂的文件系统(分布式)来对介质做独占访问,比如iscsi技术虽然解决了介质的网络访问问题,但却无法解决多访问者系统的cache同步,一致性等问题,因此iscsi并不能独立提供存储方案,还需要宿主操作系统的文件系统做支持,才能为应用提供共享的存储能力,织梦师-水桶则通过IPC技术解决了上述传统介质存储中问题,水桶可以使用TCP网络RPC来实现扩展远程访问的能力,同时,通过RPC技术,水桶提供了介质写入消息实时推送广播,这使得多访问者之间的cache实时同步成为可能,使用这一技术扩展各类分布式cache产品后,则可以使得各个分布式cache实例的数据更新在微秒级别完成实时跟新同步,而不需要cache产品耗费更多同步开销,从而为秒杀类推送类应用提供更好更实时的服务(12306),由于共享存储介质方案的实现,文件系统以及介质存储的边界变的模糊,介质存储因此可以不用依赖文件系统直接为应用以及cache提供存储服务,而文件系统则可以通过共享介质存储来获得更加简化高效的存储方案。
  3. 方便定制 由于是软件介质存储方案,因此并不需要符合一些硬件规范的通讯协议,比如scsi,nvme等,用户可以根据自己需求改变功能设计,增加写入日志,定制访问事件,甚至将介质存储改变为对象存储,也是很容易完成的。
  4. 方便的定制扩充nosql能力,提高nosql的一些实际业务效率,降低需求对newsql技术的依赖,长久以来nosql在提高和扩充系统容量性能,降低系统设计复杂性方面成效卓著,但nosql由于缺乏事务能力,数据结构能力固定,导致一些上层业务逻辑设计无法直接在nosql之上落地,织梦师-水桶由于使用rpc技术实现,在介质层有望提供事务定制,业务服务定制能力,将事务以及业务下沉到介质存储层有利于真正解决一些数据业务的效率问题,比如将sql的select操作下沉到存储层后,将大大降低对nosql的网络io需求,提升系统tps能力,因此从根本上使得nosql技术可以快速定制落地满足复杂项目业务需求,从而降低对newsql的需求依赖(newsql并不能高效的适应加速所有业务场景,本身对网络IO的性能以及延迟依赖较大)。
  5. 更灵活高效的介质访问方案 传统的介质访问技术由于考虑到linux windows等传统操作系统的实际能力限制,所以使用了更大的块存储单位,主流的硬盘 SSD都使用4096字节的块读写单位,以便于在linux windows约束下,更有利的发挥硬件带宽,但这却没有解决实际需求问题,反而带来更多性能障碍,织梦师-水桶则提供小到16字节的块访问单位,在同样带宽和内存开销下,相比4096字节的块,16字节在随机读写性能上,理论上则可达到4096字节的256倍,同时上层cache(redis)在缓存小数据时(16字节)同样的内存开销则可缓存256倍的数据项,或者在缓存同样数据项的网络带宽需求降低64倍,由于可变读写长度的优势,因此在做对象存储时对带宽以及内存的利用则变的毫无冗余。
  6. 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共享存储方案的更多相关文章

  1. 异数OS 织梦师-云(五)-- 容器服务化,绿色拯救未来。

    . 异数OS 织梦师-云(五)– 容器服务化,绿色拯救未来. 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652 ...

  2. 异数OS 织梦师-水母(一)--消息队列篇

    异数OS 织梦师-水母(一)–消息队列篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异数O ...

  3. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡

    . 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...

  4. 异数OS 织梦师-纤手(二)-- LPC RPC篇

    异数OS 织梦师-纤手(二)– LPC RPC篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 ...

  5. 异数OS TCP协议栈测试(三)--长连接篇

    异数OS TCP协议栈测试(三)--长连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 异数OS TCP长连接技术简介 说起长连接,则首先要谈对 ...

  6. 异数OS国产CPU平台移植项目需求分析

    异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...

  7. 异数OS TCP协议栈测试(四)--网卡适配篇

    异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异 ...

  8. 异数OS谈发展国产操作系统的问题

    异数OS谈发展国产操作系统的问题 为什么写本文 最近中兴被美制裁的问题以及红芯使用开源技术宣称国产自主技术引发了舆论不少对国产CPU以及国产操作系统自主技术的讨论,为什么我们国家有BAT,有原子弹,能 ...

  9. 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门

    . 异数OS 星星之火(三)–异数OS-织梦师云 微服务编写入门 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...

随机推荐

  1. Java中try catch finally执行

    直接上代码实例: public static void main(String[] args) {    System.out.println(test1()); } static int test1 ...

  2. Hamcrest匹配器框架

    其实在之前的文章中已经使用过 Hamcrest 匹配器框架,本篇文章将系统的介绍它的使用. 为什么要用Hamcrest匹配器框架 Hamcrest是一款软件测试框架, 可以通过现有的匹配器类检查代码中 ...

  3. 2018-11-13-WPF-禁用实时触摸

    title author date CreateTime categories WPF 禁用实时触摸 lindexi 2018-11-13 10:45:37 +0800 2018-5-4 21:0:3 ...

  4. dotnet 使用 Environment.FailFast 结束程序

    在运行到一些诡异的代码,这时的程序已经无法继续运行,需要退出,那么如何在记完日志之后在退出程序记录更多信息?可以通过 Environment.FailFast 里面添加字符串告诉用户当前的进程无法继续 ...

  5. JSR303 数据检验

    原文:https://blog.csdn.net/qq_28867949/article/category/7370730 一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规 ...

  6. Struts2 控件标签

    Struts 2 的标签有一组标签,更容易控制流程页面执行.以下是重要的Struts2控制标签列表: if /else 标签: 这些标签执行可在每一种语言找到的一种基本条件流程. 'If'标签可用于本 ...

  7. 什么是激励函数 (Activation Function)

    relu sigmoid tanh 激励函数. 可以创立自己的激励函数解决自己的问题,只要保证这些激励函数是可以微分的. 只有两三层的神经网络,随便使用哪个激励函数都可以. 多层的不能随便选择,涉及梯 ...

  8. 【软帝学院】女生不适合学习java?其实女生学java更有优势,更好就业!

    女生适合学java吗?女生做IT怎么样 首先要表明我的观点,编程是不分男女,什么女生不适合学编程的说法,从客观上来说,我觉得这是一种偏见. 不少人潜意识里认为女生不适合从事IT开发岗位的工作,因为他们 ...

  9. SpringBoot Starter机制 - 自定义Starter

    目录 前言 1.起源 2.SpringBoot Starter 原理 3.自定义 Starter 3.1 创建 Starter 3.2 测试自定义 Starter 前言         最近在学习Sp ...

  10. 20191031-3 beta week 1/2 Scrum立会报告+燃尽图 03

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9913 git地址:https://e.coding.net/Eustia ...