管理多租户ArangoDB连接
我使用ArangoDB/Go(使用Go驱动程序),需要实现多租户,这意味着每个客户都将在单独的数据库中拥有自己的数据 我想弄明白的是如何让这种多租户模式发挥作用。我理解为每个请求创建一个新的DB连接是不可持续的,这意味着我必须维护一个连接池(不是典型的连接池)。当然,我不能只是假设我可以做无限,必须有一个极限。然而,我想得越多,我就越明白我需要一些建议。我是新来的,来自PHP世界,显然这在PHP中是一个完全不同的范例 一些细节 我有一个API(用Go编写),它使用ArangoDb/Go驱动程序与ArangoDb对话。创建DB连接的标准方法是管理多租户ArangoDB连接,go,arangodb,Go,Arangodb,我使用ArangoDB/Go(使用Go驱动程序),需要实现多租户,这意味着每个客户都将在单独的数据库中拥有自己的数据 我想弄明白的是如何让这种多租户模式发挥作用。我理解为每个请求创建一个新的DB连接是不可持续的,这意味着我必须维护一个连接池(不是典型的连接池)。当然,我不能只是假设我可以做无限,必须有一个极限。然而,我想得越多,我就越明白我需要一些建议。我是新来的,来自PHP世界,显然这在PHP中是一个完全不同的范例 一些细节 我有一个API(用Go编写),它使用ArangoDb/Go驱动程序与
- 创建连接 conn,err:=graphHTTP.NewConnection(…)
- 创建客户端 c、 错误:=graphDriver.NewClient(…)
- 创建数据库连接 graphDB,err:=p.cl.Database(…)
关于如何完成这项任务有什么建议吗?几个月前,我在Java概念验证SaaS应用程序中实现了这一点 我的方法可以在较高层次上描述为:
一个好的服务器应该能够容纳数百个甚至数千个,这取决于内存,如果扩展足够大,可以使用负载平衡策略将客户端拆分为不同的服务器集群。工作线程也可以用于根据年龄删除对象,但这可能会影响吞吐量 如果你的问题是关于ArangoDB中多租户的可伸缩性,那与Go或PHP无关。@Adrian,我要求验证我对多租户数据库连接管理的想法。此外,如果能看到一些关于如何做到这一点或如何不做到这一点的建议,那将是非常棒的,因为这些建议仍然与Go或PHP无关。如文所述,这个问题是如此模糊,无法回答。是的,你需要使用某种连接池;不,您不能打开无限连接。很难给出任何建议,或者说你是否“朝着正确的方向思考”,因为除了某种有限的连接池之外,没有给出关于你真正想要完成什么或者你在想什么方向的真正细节。好吧,我听到了@Adrian,让我试着完善我的解释,一旦我的原始问题对你有意义,我会更新它。@Adrian,现在它更有意义了吗?@Ivanaumenko队列中每个数据库最多有一个对象。数据库连接池是通过驱动程序管理的,我知道,您说过“创建一个并发队列来保存Java驱动程序实例”,对吗?队列中每个数据库最多有一个对象,如您所说。如果你有数百分贝,你会把它们都放在队列中,而且队列的大小没有限制吗?如果不是,并且队列确实有大小,则需要对其进行管理。伊凡诺门科希望我的编辑能更好地回答这个问题。理想情况下,队列没有大小限制,但这当然取决于服务器资源。这完全有道理,这正是我实现的方式。