Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CDC without using Kafka #2513

Open
joeblew99 opened this issue Oct 4, 2019 · 9 comments
Open

CDC without using Kafka #2513

joeblew99 opened this issue Oct 4, 2019 · 9 comments
Assignees
Labels
area/cdc Change Data Capture community/request Issues created by external users

Comments

@joeblew99
Copy link

joeblew99 commented Oct 4, 2019

about CDC.
It would be awesome if the architecture ( and in the future the docs ) allowed a more neutral way to tap into the avro schema types and to integrate with different message queues.

Cockroach dB uses s to and pushes to Kafka also. So it's also not great.

So sure there is not standard for open service brokers ( there is but it's labourious ), so I would have through its possible to provide a neutral CDC feed system that any developer can tap into and write the data into whatever message queue like system they use.

For me it would be NATS streaming server.
https://github.com/nats-io/nats-streaming-server

But even liftbridge is also fine. I note that liftbridge is pure grpc based and so more neutral in that respect.
https://github.com/liftbridge-io/liftbridge

Anyhow I think you understand the intent of this issue
I would be happy to work with the team on this as I like yugabytedb. I also am running CRDB too but don't like its complexity.

@yugabyte-ci yugabyte-ci added the community/request Issues created by external users label Oct 4, 2019
@ddorian ddorian added the area/cdc Change Data Capture label Oct 4, 2019
@ndeodhar
Copy link
Contributor

ndeodhar commented Oct 4, 2019

Thanks for the feedback and interest, @joeblew99 !

That's our ultimate goal - to be able to provide a generic framework that can leveraged across different application stacks. Since Kafka is widely used, we started our Beta with Kafka. Our immediate next step is to provide a sample console app which app developers can then use as a reference to build their own CDC sinks: #2351

You've provided some good suggestions and we'll look into those.

@cawfeecoder
Copy link

@ndeodhar I second this request. I'd love to have an agnostic way to plug into other message brokers like NATS.

@Rkiouak
Copy link

Rkiouak commented Jan 8, 2020

Are there any plans to expose or allow the option of exposing a vanilla http2 based grpc endpoint of the CDCService, say on a different port of the yb-master servers?

I'm referring to this service definition in: https://github.com/yugabyte/yugabyte-db/blob/master/src/yb/cdc/cdc_service.proto#L44

service CDCService {
    rpc CreateCDCStream (CreateCDCStreamRequestPB) returns (CreateCDCStreamResponsePB);
    rpc DeleteCDCStream (DeleteCDCStreamRequestPB) returns (DeleteCDCStreamResponsePB);
    rpc ListTablets (ListTabletsRequestPB) returns (ListTabletsResponsePB);
    rpc GetChanges (GetChangesRequestPB) returns (GetChangesResponsePB);
    rpc GetCheckpoint (GetCheckpointRequestPB) returns (GetCheckpointResponsePB);
    rpc UpdateCdcReplicatedIndex (UpdateCdcReplicatedIndexRequestPB)
    returns (UpdateCdcReplicatedIndexResponsePB);
}

It would be awesome to be able to invoke a grpc call such as rpc StreamChanges (CreateCDCStreamRequestPB) returns (stream GetChangesResponsePB)

@nvcnvn
Copy link
Contributor

nvcnvn commented Aug 4, 2020

Any example on implement your own connectors?
What is the difference if any between Kafka based CDC vs custom connectors?

I assume for Kafka based CDC, as long as the cluster is functional I will get at least one delivery guarantee?

How about for custom connectors case? what if the connectors crash (I assume connectors in this context is an external client subscribe to something like a trigger or gRPC stream), how the connectors know where to begin again?

@Bessonov
Copy link

Never used it, but may be worth to take a look: https://debezium.io/

@cawfeecoder
Copy link

What's the current status on this?

@nvcnvn
Copy link
Contributor

nvcnvn commented May 21, 2021

Never used it, but may be worth to take a look: https://debezium.io/

Just look at it, it seems also rely on plugin like pgoutput or wal2json then push to Kafka,
the mentioned plugin won't work with Yugabyte I think.

@ma-hartma
Copy link

Seems like the preconditions for this are being worked on!

NATS Streaming has been deprecated in the meantime and replaced with NATS Jetstream, which would be awesome to have as a connector/sink: https://docs.nats.io/nats-concepts/jetstream

@gedw99
Copy link

gedw99 commented Jun 7, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cdc Change Data Capture community/request Issues created by external users
Projects
None yet
Development

No branches or pull requests