社区 AMA|我是江依旺,你有什么问题要问我吗?

image

大家好,我是第一期做客「社区 AMA」的嘉宾:江依旺。大家对什么是社区 AMA 有疑问的话,你可以先看下官方出的活动介绍:https://discuss.nebula-graph.com.cn/t/topic/15353

简单来说,社区 AMA 活动期间,你可以向我提指定范围的问题,我将在活动期间内回复你的问题

那就先来简单地自我介绍下:

我是江依旺,说来惭愧工龄都 10 年了。目前在 360 数科做相关的风控工作。从去年下半年来一直尝试将公司的 NebulaGraph 内核版本从上古的 1.0 GA 升级到最新版的 v3.6.0 版本,为此正在加班加点很长一段时间(如果你有啥程序员养生保健秘笈的,可以和我分享分享 :smiley:

此外,在今年年初,我也把自己做的 nebula-console-intellij-plugin 捐给了社区:GitHub - nebula-contrib/nebula-console-intellij-plugin: Nebula Graph Databases support for JetBrains family IDEs.一款针对Jetbrains开发工具的console工具,支持语法高亮、函数字段自动补全、数据表格分页显示、关系图展示

大致上我的介绍就是这样。

你可以在 04.28-05.11 期间,向我问 内核升级nebula-java 使用nebula-console-intellij-plugin 相关的问题,我会在 05.11 之前回复你。

花絮

运营说社区 AMA 的嘉宾可以从提问者中指定 3 个人送出提问礼,第一期的提问礼物是 夏日通勤搭档·挂脖风扇 & 不可背锅钥匙扣

下面,请留下你的问题:

5 个赞

感谢楼主分享,我有几个nebula-java 的使用问题想请教,

就是负载均衡,你们是怎么做的?nebula是在应用层实现的负载均衡么?还是说我不需要管应用,数据库那边会自己处理?能否通过一个固定的ip来连接集群,让它自动实现负载均衡?

1 个赞

就是负载均衡,你们是怎么做的?nebula是在应用层实现的负载均衡么?还是说我不需要管应用,数据库那边会自己处理?
graphd的负载均衡,nebula-java的sessionPool本身就支持的,只需要配置连接的时候把所有的graphd的连接地址都配置上去,sessionPool会自动轮询。
能否通过一个固定的ip来连接集群,让它自动实现负载均衡?
我们线上也有配置lvs单个ip进行转发的,简单点你就直接把所有graphd的连接配置上去即可,这样的效率相对高很多,毕竟少了一次转发

问下nebual只能同版本升级么?能从 2.x到3.x么?升级的话有什么坑点么?你们花了多久时间

1 个赞

能从 2.x到3.x么?
可以,我们这边有从2.0升级到3.6的原地升级,中间版本需要经过:2.0 → 2.6 → 3.6。这是我们当时使用的升级脚本,注意:一定要测试环境先测试,线上升级先备份
升级的坑:
NULL的变化,2.0版本NULL的值nebula返回空,3.6版本返回“NULL“,导致我们查询出的数据存在"NULL"的字段内容,出现业务错误,后面改成了通过FieldValueType进行判断是否为NULL的字段value
你们花了多久时间
总体时间1个月吧,因为需要进行环境模拟测试以及脚本测试演练,真正执行升级操作就30分钟左右

2 个赞

感谢你的耐心解答,我去试试

1 个赞

客气,原地升级切记要先备份所有数据哈,还有一定要测试环境先测试,升级之后原来连接的client也要升级才能适配新的nebula,除此之外你还得收集所有在用的nGQL,跑到nebula3.x上去测试,不兼容或者返回数据有不一致需要进行兼容处理

1 个赞

楼主你好,我有个问题。
nebula-graph使用java客户端连接,有时候可以创建session(其他session释放时),有时候报错:Auth failed: Create Session failed: Too many sessions created from 192.168.137.1 by user root. the threshold is 300。nebula是3.6.0版本,kill所有session立马一下就满了,show session有1200个左右,graph都是默认配置,session过期时间8小时,session数量300。代码有写释放session的操作,有几个环境,只存在一个环境有这个问题,其他环境正常,配置一模一样,集群机器ip不同。

1.sessionPool是否是单例的?
2.关键代码贴一下?

1 个赞

代码里面是用nebula console建立连接获取session,每次去use space,然后执行插入查询语句等,最后session.close()方法去释放session。有没有可能是客户端连接出问题导致的?

nebula console? 我只用过官方提供的console工具,但是个可执行的二进制文件,并非是个类库。
根据你的描述你是每次都去建立连接,用完之后关闭session,如果执行的并发度增高就很有可能超过限制,创建连接的速率大于释放的速率,那么就会出现session过多的问题

1 个赞

nebula后续如何和AI深度结合

这个不在本次提问范畴哦,你如果对 AI 有兴趣的话,你可以关注下 LLM 下这个标签下的内容:使用llm标记的话题

大数据量导入数据,有没有遇到过此情况:导入 SST 文件后,执行ingest命令后 oom - #2,来自 steam

抱歉,我没用过ingest导入SST的方式,无法解答你的问题

我应该理解错了代码,不是nebula console创建session,nebula console是在虚拟机上部署的连接nebula的客户端工具。

那是如何通过代码去操作nebula的呢?可大体描述一下。
最好能贴关键代码,我这边目前只接触了nebula-java的客户端