Closed zxuanhong closed 3 months ago
这是个不错的功能,不过对于目前的 jraft 不容易实现,在 jraft 中地址信息记录在 Endpoint 对象中,通信层也是直接使用这个 Endpoint 的,没有一个 id 到地址的映射。 不知道使用域名能否解决你的问题
@fengjiachun 其实通信还是ip模式,你注意看atomix,他有nodeid,还有对应的address。域名肯定能,但是这降低了灵活性
@fengjiachun 而且我觉得能在容器化项目大规模应用,这个还真是很需要的功能,虽然可以使用像k8s的dns地址来配置,到其实还是会遇到很大问题。 长远来看还真实必不可少的,很多继续raft协议的项目都有配置nodeid。
如果你已经有设计思路,可以提个方案上来看看讨论下?
@fengjiachun 我抽时间先验证下可行性。
我支持这个改动,我一直期望可以有这样的功能,目前我使用了svc的域名来代替nodeid,避免了容器下ip容易变化的问题,但是这样对部署带来的改动比较多
并且我们也想在安全度上做提升,如何去验证一个想要加入的成员的合法性也是一个问题。
@fengjiachun @funky-eyes 最近有点忙,上周做了一点。估计下星期后才有时间继续
@fengjiachun @funky-eyes 最近有点忙,上周做了一点。估计下星期后才有时间继续
期待,不过向下兼容上我觉得要考虑下,避免升级的时候老的集群信息中没有nodeid起不来或者有其他问题等。
@funky-eyes ok。我需要先在我项目探索下可行性。不过有更好的方案也可以提出来,参考下。
或许你可以把当前的设计方案在issue里画一下,我们一起讨论下看下是否有更优解?
@fengjiachun @funky-eyes 最近有点忙,上周做了一点。估计下星期后才有时间继续
期待,不过向下兼容上我觉得要考虑下,避免升级的时候老的集群信息中没有nodeid起不来或者有其他问题等。
是的,需要向前兼容
@fengjiachun @funky-eyes 很抱歉带来不好的消息。基于内部讨论,目前我们做法要能实现大规模集群。因此内部成员会基于jraft进行大改。比如成员确定这块会使用SWIM协议进行调整(在大规模集群下心跳机制是一种消耗巨大的机制)。目前这种做法与jraft完全背离。因此我将关闭当前issue。望知晓。
Your question
Environment
java -version
):uname -a
):