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

对注册中心的支持是否可以单独拿一个模块说明和讲解 #39

Open
bilinxing opened this issue Feb 1, 2023 · 7 comments

Comments

@bilinxing
Copy link

bilinxing commented Feb 1, 2023

当前文档中看到服务注册发现是以go-zero为例说明的,如果使用其他的框架,是否支持服务发现?能否像seata那样对服务注册专门出一个章节说明:seata

@yedf2
Copy link
Contributor

yedf2 commented Feb 1, 2023

说明一下,dtm和seata有很大不同,dtm一开始就支持HTTP/gRPC这类对云原生友好的协议,dtm本身完全不需要注册中心。因此dtm可以很好的与K8S结合在一起,把dtm当做一个普通的HTTP/gRPC服务进行部署,设定副本数就具备了高可用。

dtm同时也支持微服务协议,例如go-zero,kratos,dapr,以及其他的,对这些微服务协议的支持都在驱动层完成。这些微服务协议支持哪些注册中心,那么dtm就直接支持,直接使用。业务使用时,只需要加载相关的驱动即可。

@bilinxing
Copy link
Author

如果使用的是内部自研的微服务框架,想要把dtm注册到consul、nacos等注册中心,在不改动dtm源码的前提下是否可行?

@yedf2
Copy link
Contributor

yedf2 commented Feb 2, 2023

那么这就相当于让dtm多支持一种微服务协议,过程是,写好了dtmdriver-微服务 驱动之后,提一个PR(一行代码,加载驱动)到dtm,这样就行了。

参考go-zero和kratos等驱动是如何编写的

@bilinxing
Copy link
Author

是不是可以提供更友好方式?比如kratos的服务注册可以按照提供的interface自行实现具体的注册逻辑,然后替换到默认的注册实现,这样服务注册就跟框架自身解耦,就不用往框架仓库提交代码。

@yedf2
Copy link
Contributor

yedf2 commented Feb 2, 2023

你再想想,你业务的代码能否跟微服务框架无关?能否今天用你自研的微服务框架,改天用另一个框架go-zero,然后都不需要重新编译?
dtm要支持一个新的微服务协议,一行代码不改,不重新编译,那么新的微服务协议的逻辑,怎么进入dtm呢?

@bilinxing
Copy link
Author

bilinxing commented Feb 2, 2023

我先研究下go-zero和kratos的驱动。或许可以实现dtmdriver-consul 、dtmdriver-nacos、dtmdriver-etcd等注册中心的驱动,毕竟使用java的,只是想要把dtm的服务做一个服务发现,发现dtm的http、grpc调用地址

@yedf2
Copy link
Contributor

yedf2 commented Feb 2, 2023

go-zero - etcd 跟 kratos-etcd是不一样的,无法一个dtmdriver-etcd同时支持go-zero和kratos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants