apache / apache/brpc

base::Endpoint支持域名及更多形式

Open
#207 7 comments 0 reactions 0 assignees View on GitHub
enhancement official
Dominant language
C++
Stars
17.6k
Forks
4.1k
Avg merge
2d 12h
Merged PRs (30d)
69

Description

需要支持的类型:
* ipv4:
* ipv6: 目前不支持
* hostname:目前channel.init面对的如果是域名,只会在init函数里查一次dns,之后再也不更新。这还会导致init阻塞较长时间(也许是秒级),其次dns查询没有算进超时时间内。如果EndPoint能带域名的话,那就可以在真正访问时再去异步查询dns,这样每次的结果可能是不同的,这更符合用户的直觉。
naming service中返回的结果其实也可能是一个域名,在ns里一次性解析好其实也不算是最合理的方式,应该是按需的。
* rdma: 目前是在SocketMap上增加额外参数以区分。
* unix domain socket : 用途一般是单机测试,规避端口问题

其他注意点:
* EndPoint使用较为广泛,修改应尽量保证ABI兼容。修改方式可在不增加EndPoint的size的前提下塞入指针(指向string或更多内容),通过一些bits区分,拷贝指针内容应引用计数。
* 现存的EndPoint不应该在内部分配内存。
* 一些函数参数上的EndPoint没有加常引用,需要改一下。
* 不同类型的连接方式是显著不同的,一些helper函数都是以EndPoint为参数,结果肯定是不OO的。不过也未必需要OO。
* 命名服务中与每个地址都可能相伴的tag和地址类型是正交关系,不会塞到EndPoint中来,而是在RPC中进行封装。
* str2endpoint要支持所有类型,而不仅仅是ip。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.