对于计算存储分离的理解问题

计算存储分离要怎么理解?具体体现是每个节点上可以部署一种或多种服务,在各自的container运行,从而达到隔离的效果吗 比如 storaged/graphd service 每个服务在同一台物理机上是抽象的隔离吗?当硬件资源充裕的时候可以每个节点分别承担一种角色 从而比如某台服务器就单纯作为储存节点,某台服务器单纯作为计算节点。

外加一个问题:在每个图空间中的 VID 必须是唯一的。那么点和边可以重复导入选latest one。如何保证是同一个点被多次导入而不是vid conflict了呢?我看到文档又说在储存的时候是以vid+tag id作为唯一标识别key,但是导入多次的时候vid和tag id也都一样把。

我是个各方面知识还很欠缺的本科小白,在接触nebula的过程中也在不断的学习新的知识,在论坛上问了不少可能比较傻的问题,还请多包涵!

1 个赞

存储计算分离是说计算和存储是分别在不同的服务(进程)中完成。好处是可以把计算和存储的服务分开部署,不管是在相同的物理结点还是不通的物理结点都可以,让不同的服务各自做各自的事情,提高可靠性灵活性。如果计算结点成为瓶颈,可以单独的扩容计算节点,同理存储结点。

当然存储计算分离也不是说没有缺点,网络传输就是一个不得不考虑的开销。但是相对而言,面对高并发大数据量的应用场景是一种不错的解决方案。

目前 nebula 不保证 vid 冲突的情况,重复导入相同的顶点就会覆盖老的数据,文章中应该有说明。个人理解这样的出发点是从性能角度考虑,如果每次导入都要检查该点是否已经存在,势必需要增加一次读操作,这在插入顶点时是个不可忽略的开销。

2 个赞

谢谢yee!!每天都是你在回复我,打扰了!!