We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
自定义 Dubbo 服务对外暴露的主机地址
在 Dubbo 中, Provider 启动时主要做两个事情,一是启动 server,二是向注册中心注册服务。启动 server 时需要绑定 socket,向注册中心注册服务时也需要发送 socket 唯一标识服务地址。
dubbo
host
一般的 dubbo 协议配置如下:
... <dubbo:protocol name="dubbo" port="20890" /> ...
可以看到,只配置了端口号,没有配置 host,此时设置的 host 又是什么呢?
查看代码发现,在 org.apache.dubbo.config.ServiceConfig#findConfigedHosts() 中,通过 InetAddress.getLocalHost().getHostAddress() 获取默认 host。其返回值如下:
org.apache.dubbo.config.ServiceConfig#findConfigedHosts()
InetAddress.getLocalHost().getHostAddress()
除此之外,可以通过 dubbo.protocol 或 dubbo.provider 的 host 属性对 host 进行配置,支持IP地址和域名,如下:
dubbo.protocol
dubbo.provider
... <dubbo:protocol name="dubbo" port="20890" host="www.example.com"/> ...
见 dubbo 通过环境变量设置 host
有些部署场景需要动态指定服务注册的地址,如 docker bridge 网络模式下要指定注册宿主机 ip 以实现外网通信。dubbo 提供了两对启动阶段的系统属性,用于设置对外通信的ip、port地址。
以上四个配置项均为可选项,如不配置 dubbo 会自动获取 ip 与端口,请根据具体的部署场景灵活选择配置。 dubbo 支持多协议,如果一个应用同时暴露多个不同协议服务,且需要为每个服务单独指定 ip 或 port,请分别在以上属性前加协议前缀。 如:
PORT_TO_REGISTRY 或 IP_TO_REGISTRY 不会用作默认 PORT_TO_BIND 或 IP_TO_BIND,但是反过来是成立的。如:
PORT_TO_REGISTRY=20881
IP_TO_REGISTRY=30.5.97.6
PORT_TO_BIND
IP_TO_BIND
PORT_TO_BIND=20881
IP_TO_BIND=30.5.97.6
The text was updated successfully, but these errors were encountered:
No branches or pull requests
自定义 Dubbo 服务对外暴露的主机地址
背景
在 Dubbo 中, Provider 启动时主要做两个事情,一是启动 server,二是向注册中心注册服务。启动 server 时需要绑定 socket,向注册中心注册服务时也需要发送 socket 唯一标识服务地址。
dubbo
中不设置host
时默认host
是什么?dubbo
中如何指定服务的host
,我们是否可以用hostname或domain代替IP地址作为host
?示例
dubbo 中不设置 host 时默认 host 是什么
一般的 dubbo 协议配置如下:
可以看到,只配置了端口号,没有配置 host,此时设置的 host 又是什么呢?
查看代码发现,在
org.apache.dubbo.config.ServiceConfig#findConfigedHosts()
中,通过InetAddress.getLocalHost().getHostAddress()
获取默认 host。其返回值如下:那在 dubbo 中如何指定服务的 socket?
除此之外,可以通过
dubbo.protocol
或dubbo.provider
的host
属性对host
进行配置,支持IP地址和域名,如下:在使用 docker 时,有时需要设置端口映射,此时,启动 server 时绑定的 socket 和向注册中心注册的 socket 使用不同的端口号,此时又该如何设置?
见 dubbo 通过环境变量设置 host
有些部署场景需要动态指定服务注册的地址,如 docker bridge 网络模式下要指定注册宿主机 ip 以实现外网通信。dubbo 提供了两对启动阶段的系统属性,用于设置对外通信的ip、port地址。
以上四个配置项均为可选项,如不配置 dubbo 会自动获取 ip 与端口,请根据具体的部署场景灵活选择配置。 dubbo 支持多协议,如果一个应用同时暴露多个不同协议服务,且需要为每个服务单独指定 ip 或 port,请分别在以上属性前加协议前缀。 如:
PORT_TO_REGISTRY 或 IP_TO_REGISTRY 不会用作默认 PORT_TO_BIND 或 IP_TO_BIND,但是反过来是成立的。如:
PORT_TO_REGISTRY=20881
和IP_TO_REGISTRY=30.5.97.6
,则PORT_TO_BIND
和IP_TO_BIND
不受影响PORT_TO_BIND=20881
和IP_TO_BIND=30.5.97.6
,则默认PORT_TO_REGISTRY=20881
且IP_TO_REGISTRY=30.5.97.6
总结
dubbo.protocol
或dubbo.provider
的host
属性对host
进行配置,支持IP地址和域名.但此时注册到注册中心的IP地址和监听IP地址是同一个值dubbo.protocol
或dubbo.provider
的host
配置参考
The text was updated successfully, but these errors were encountered: