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

sofa-rpc 支持 etcd 注册中心 #153

Closed
wynn5a opened this issue May 31, 2018 · 10 comments
Closed

sofa-rpc 支持 etcd 注册中心 #153

wynn5a opened this issue May 31, 2018 · 10 comments
Assignees
Labels
claimed dev task has been claimed extension Integrate with 3rd component help wanted Extra attention is needed

Comments

@wynn5a
Copy link

wynn5a commented May 31, 2018

任务认领:完成 sofa-rpc 对 etcd 作为注册中心的支持,包括服务注册、服务健康检查等常用功能。

@wynn5a
Copy link
Author

wynn5a commented May 31, 2018

@ujjboy 请确认,谢谢

@ujjboy
Copy link
Member

ujjboy commented May 31, 2018

Hi @wynn5a 已加到任务认领,可参考如下文档:

参与贡献:https://github.com/alipay/sofa-rpc/wiki/Contributing
扩展demo:https://github.com/ujjboy/sofa-rpc-extension-demo
也可以参考 registry-zookeeper 模块的实现。

@ujjboy ujjboy added help wanted Extra attention is needed extension Integrate with 3rd component claimed dev task has been claimed labels May 31, 2018
@ujjboy
Copy link
Member

ujjboy commented May 31, 2018

@wynn5a 您好,感谢任务认领。 不知道你计划用哪种etcd客户端呢?是计划用原生 gRPC API 还是类似 jetcd 客户端?

@wynn5a
Copy link
Author

wynn5a commented May 31, 2018

@ujjboy 你好,我这边今天刚看到 sofa 这个项目,十分感兴趣,可能我需要先梳理下具体的对接需求之后,才能确定是否用官方或者第三方的客户端,我现在比较倾向于直接使用 gRPC 借口开发,毕竟现在官方 v3 的客户端 jetcd 还不成熟,周末我这边会详细的描述下我准备使用的技术栈,到时候咱们再讨论下。

@ujjboy
Copy link
Member

ujjboy commented May 31, 2018

@wynn5a 是的,一个是 jetcd 目前是 0.x 版本不成熟,另外一个是 jetcd 目前需要 JDK8,而 SOFARPC 是需要 JDK7 编译为 1.6 的,而 gRPC 只需要 JDK6。

涉及的需求点:https://github.com/alipay/sofa-rpc/wiki/Registry-Extension-Guide

期待你的功能扩展设计!

@wynn5a
Copy link
Author

wynn5a commented Jun 3, 2018

@ujjboy 你好,我看了一下 sofa-rpc 项目,参考了已有的示例,初步设计了这个任务的实现思路

                             etcd register
                         +-------------------+
                         |                   |
+-----------+            |   +-----------+   |
| provider  +------------>   |  register |   |
+-----------+            |   +--+-----^--+   |
                         |      |     |      |
                         |      |     |      |
                         |      |     |      |
+-----------+            |      |     |      |
| consumer  <------------+   +--v-----+--+   |     +---------------+
+-----------+            |   |  client   <--------->  etcd cluster |
                         |   +-----------+   |     +---------------+
                         +-------------------+

和 etcd 相关的细节:

  1. client 组件负责和 etcd 集群交互,封装了需要使用的 gRPC 接口
  2. 服务注册到 etcd 中存储时,key 的格式为 service name:version:unique identifier,并且授予租约
  3. 服务发现时使用前缀查找的方式,从 etcd 中获取可用的服务
  4. 服务通过定时刷新租约的方式来维持自己在 etcd 中的存在,保证自己是可被发现的

接下来我会开始开发这部分的功能,到时候有什么问题再请教

@ujjboy
Copy link
Member

ujjboy commented Jun 4, 2018

@wynn5a config 模型里 version 字段已不推荐,只需要 service[:uniqueId] 即可。

@leizhiyuan
Copy link
Contributor

@wynn5a 最近我们会很快出 jdk8的版本,这个功能不知道怎么样了?是否可以提个 pr 先看下?

#384

@wynn5a
Copy link
Author

wynn5a commented Dec 5, 2018

@leizhiyuan 是准备支持 JDK8 了么,那我觉得可以使用官方的 client 来实现,我这边前一段时间自己写好了一个简陋的 client ,然后就换工作了,现在新公司比较忙,目前只是实现了服务注册和发现,SOFA RPC 相关的配置还没有接入,可能还需要去看源码,如果可以的话,我晚点整理一下提交一个 PR

@leizhiyuan
Copy link
Contributor

@wynn5a 是的,大概下周一 master 分支会是 jdk8的版本,你方便的话,可以先提一个 pr 给这个项目,我们先一起看下,结合 SOFABoot 配置相关的我们这边可以在 starter 中修改,感谢~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
claimed dev task has been claimed extension Integrate with 3rd component help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants