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

关于社区版集群支持的一些疑问 #587

Open
MR-Yang07 opened this issue Nov 26, 2024 · 4 comments
Open

关于社区版集群支持的一些疑问 #587

MR-Yang07 opened this issue Nov 26, 2024 · 4 comments

Comments

@MR-Yang07
Copy link

在阅读相关文档以后我有一些疑问,希望作者能够解答。
1.在jetlinks-support项目的提交记录中,我发现了基于Redis的集群支持相关类-AbstractClusterEventBroker(在1.20版本被废弃,但是代码还在),这是为什么呢? 后期社区版采用InternalEventBus(但是不支持集群部署),而企业版新的集群支持采用的是ExtendedCluster(采用scalecube框架)实现是吗?

2.在Redis集群支持中,使用的是Pub/Sub来进行集群内不同机器间消息传递,在作者看来是否有必要采用Kafka专业的消息中间件来替代Redis的Pub/Sub功能(Spring reactive kafka也有类似的响应式代码)?

3.后期为什么采用scalecube框架来实现企业版的集群支持呢?scalecube是有什么特别的过人之处吗?

4.在 #9 中的回复中,作者有提到 ”你可以尝试使用RpcManager来实现集群通信)“,随后在我在jetlinks-supports1.2.2中发现ExtendedClusterImpl和ScalecubeRpcManager等跟scalecube框架相关的类,请问这些类就是用来支持企业版集群管理的核心类吧?是否存在一种可能:在社区版的代码中引入jetlinks-supports1.2.2,然后基于官方提供的ScalecubeRpcManager来实现社区版的集群通信?

5.在我的理解中,企业版的代码应该是不对外公开的而社区版的功能代码应该是”阉割“的,但是一些企业版特有功能——集群管理,却出现在jelinks-support公开项目中,这是为什么呢?亦或者企业版特有功能不是这些(比如集群管理),而是其他?能否透露一下有什么功能是企业版特有,而社区版不具有的(尤其在代码上的体现)?

希望作者能解答一下疑问!感激不尽!

@zhou-hao
Copy link
Member

  1. JetLinks核心基础功能(包含集群),都是直接开源的。企业版是基于开源的RpcManager来实现的 集群Eventbus。
  2. 目前已经基本弃用了使用redis pubsub来进行集群实现。而kafka等实现太重,且很难支持细粒度的订阅发布。
  3. scalecube 是基于reactor+rsocket实现的,更符合响应式的使用。
  4. 是可以的。
  5. 核心基础功能开源,但是业务功能需要使用其基础功能进行适配(如 配置变更的集群同步等),由于社区版和企业版代码管理是分开的,没有那么多精力去维护。企业版和社区版相同功能的代码,基本上没有太大的区别,主要是集群适配以及功能性上的增加(统一认证、数据权限控制、可视化规则编排、更多存储策略、同时支持单体集群和微服务(分布式)、更多的业务功能等)。

@MR-Yang07
Copy link
Author

如果要基于社区版的代码 + jetlinks-supports1.2.2 中官方提供的ScalecubeRpcManager来实现社区版的集群通信,除了要确认如何引入scalecube框架以外,社区版代码会受到影响的业务有哪些呢?能否点明一下方向?

@zhou-hao
Copy link
Member

EventBus需要实现集群, 设备接入网关、网络组件、规则引擎 等的启动 保存操作 需要适配集群,如:某个节点保存后,应当同步到集群其它节点。

@MR-Yang07
Copy link
Author

感谢回答!

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