nebula-contrib / nebula-jdbc

The JDBC connector for Nebula Graph.
42 stars 15 forks source link

使用nebula-jdbc或nebula-java获取session的问题 #9

Closed mathlpz closed 2 years ago

mathlpz commented 2 years ago

使用nebula-jdbc或nebula-java获取session的问题: nebula 版本:2.5.1 nebula-java版本 :2.5.0 部署方式:分布式 安装方式:RPM 是否为线上版本: N 硬件信息 磁盘:200G SSD CPU、内存信息:8核16G 问题的具体描述: 目前基于java语言使用nebula-jdbc开发后端服务系统,遇到了如下几个问题: 1、在nebula-java客户端代码中,java代码获取nsid(即sessionId),只能通过SyncConnection吗?NebulaDriver和Connection都获取不到sessionId。获取sessionId的示例: SyncConnection connection = new SyncConnection(); connection.open(new HostAddress(“127.0.0.1”,“9669”), 1000); AuthResult authResult = connection.authenticate(req.getUsername(), req.getPassword()); String nsid = String.valueOf(authResult.getSessionId());

2、做java服务端开发,首次获取到nsid(sessionId)后,需要自己保存维护吧?后续调用其它接口(如gql查询execute接口)需要带上nsid查询,避免每次都重新获取数据库连接。但是目前看client源码,只有SyncConnection的执行方法有通过sessionID查询的方案,其它像Connection查询方法没有通过sessionID查询方法,都是每次要重新获取数据库连接。

3、是否有java语言使用nebula-jdbc(或nebula-java)开发的系统平台demo,可供参考学习?

PS:目前nebula-jdbc只支持nebula-java的2.5.0版本,没有开发client对应的升级版本。希望jdbc能尽快开发出对应新版本,谢谢!

Young-Flash commented 2 years ago

nebula-jdbc 后续会升级对应 client 版本,感谢反馈

mathlpz commented 2 years ago

nebula-jdbc 后续会升级对应 client 版本,感谢反馈

谢谢~

mathlpz commented 2 years ago

java代码获取session问题,可参见discuss问答内容: https://discuss.nebula-graph.com.cn/t/topic/7533/7 可直接用NebulaPool中getSession获取session后,维护使用。但是,目前Java客户端的Session不支持序列化,所以在分布式系统中存在无法序列化的问题。 临时的解决方案是:在每个worker节点上单独初始化连接池,获取Session维护使用(如果work节点停掉,session即消失)。