sofastack / sofa-registry

SOFARegistry is a production-level, low-latency, high-availability service registry powered by Ant Financial.
https://www.sofastack.tech/sofa-registry/docs/Home
Apache License 2.0
650 stars 246 forks source link

TaskDispatcher #49

Open fan2008shuai opened 5 years ago

fan2008shuai commented 5 years ago
sofastack-bot[bot] commented 5 years ago

Hi @fan2008shuai, we detect non-English characters in the issue. This comment is an auto translation by @sofastack-robot to help other users to understand this issue.

We encourage you to describe your issue in English which is more friendly to other users.

Synex-wh commented 5 years ago

不好意思,回复的晚了 1、对于使用task模型我们当时考虑到在session一侧是所有地址变更的推送主体,这些推送和一些过程执行需要异步化和统一的重试机制,所以考虑大任务模型,我们目前任务模型确实模仿了Eureka的实现,只是增加了重试和一些任务过期判断。统一使用这个模型的好处是可以确定固定活跃线程数量进行某一类任务处理,可以统一进行任务队列执行情况监控,当时还考虑到我们可能存在批量任务执行的可能这个模型是支持批次执行固定数量任务(目前没有用到),同时统一的任务模型对外是一致编程方式比较好扩展和添加新的任务类型。至于你说的生产消费模式当然就是这套任务模型的基本原理,当然直接使用线程池来处理也是可以的 2、client发现session的方式是通过固定的9603端口随便访问一台session机器就可以,我们内部这个随便一台session机器是采用域名映射一台的,具体目前配置的dns服务,在通过这个9603提供的http接口返回真实集群的session列表进行长连接后交互数据的

fan2008shuai commented 5 years ago

没关系,你们也很忙,理解

fan2008shuai commented 5 years ago
Synex-wh commented 5 years ago

1、DNS服务的域名是指session所有容器也好虚机也好,前面有一个dns服务器映射这些ip对应的域名,比如“xxx.alipay.registry.net”这样,客户端首次链接通过”http://xxx.alipay.registry.net:9603“ 访问,随机获取到一个session,session上的集群内其他session地址是通过meta定期获取并推送到session上的,这样地址列表是准确并且最新的。session不一定是物理机,我们云上都部署的是docker容器ip确实是浮动的,但是只要启动就会去meta注册具体ip,并且分发给每个session

2、注册中心目前我们不只一套集群,按照不同域有所划分,不过都主要是提供rpc服务注册发现的,你说的其他注册发现需求不知道是指啥,如果是配置相关不在注册中心是在配置中心

fan2008shuai commented 5 years ago