将Cadence连接到Azure Cosmo Cassandra API(Cadence工作流)



我使用cassandra运行cadence,外部使用docker run-e cassandra_SEEDS=10.x.x.x e ubercance/server:运行。并成功运行。

Azure cosmos表示,任何运行在Cassandra上的系统都可以使用提供的cosmos Cassandra APi,通过修改客户端连接创建代码来使用Azure cosmos,例如:GO应用程序示例代码:

func GetSession(cosmosAssandraContactPoint,cosmosAssndraPort,CosmosAssandraUser,cosmosassandraPassword字符串(*gocql。会话{clusterConfig:=gocql。NewCluster(cosmesAssandraContactPoint(端口,err:=strconv。Atoi(cosmosCassandraPort(

clusterConfig.Authenticator = gocql.PasswordAuthenticator{Username: cosmosCassandraUser, Password: cosmosCassandraPassword}
clusterConfig.Port = port
clusterConfig.SslOpts = &gocql.SslOptions{Config: &tls.Config{MinVersion: tls.VersionTLS12}}
clusterConfig.ProtoVersion = 4
session, err := clusterConfig.CreateSession()
...
return session

}从我的角度来看,我可以将外部cassandra的cqlsh(cadence用于持久化(连接到azure cosmos,并可以在azure cosmo数据库中创建KeySpace表。然而,当我运行Cadence服务器时,所有新表仍然是在本地cassandra上创建的(而不是Axure cosmos(。可能是,Cadence只连接到cassandra。

所以下面基本上有两个问题:

1.由于cadence是用GO编写的,我们可以修改源代码以建立与AzureCosmoDb的连接吗。或

或者我们可以在分别运行cassandra和cadence的同时传递cosmocassandra的主机、端口、用户名和密码吗(docker run-e cassandra_SEEDS=10.x.x.x e ubercance/server:(cosmosCassandra联系人:xyz.cassandra.cosmos.azure.com cosmosCas桑德拉端口:10350 cosmosCasSandra用户:xyz cosmosCashandra密码:xyz

Azure Cosmo Cassandra现在支持LWT真的很令人兴奋!

我快速查看了文档

我认为它可能不会直接工作,因为它不支持LoggedBatch

但Cadence正在使用日志批处理:

我认为在Cadence中使用未标记的批次可能是可以的。因为所有的操作总是在一个分区中。从Datastax文档:

Single partition batch operations are atomic automatically, while multiple partition batch operations require the use of a batchlog to ensure atomicity

这意味着Cadence应该使用未标记的批次。(尽管我相信Cadence为了安全起见选择使用记录的批次(

如果我们在Cadence Cassandra插件中稍微更改代码,它应该会起作用

最新更新