Scala SDK
Module Info
需要在项目中添加如下依赖:
- sbt
libraryDependencies += "com.akka-fusion.fusion" %% "discoveryx-client" % "0.1.0"
- Gradle
dependencies { compile group: 'com.akka-fusion.fusion', name: 'discoveryx-client_2.13', version: '0.1.0' }
- Maven
<dependency> <groupId>com.akka-fusion.fusion</groupId> <artifactId>discoveryx-client_2.13</artifactId> <version>0.1.0</version> </dependency>
使用
gRPC Client配置
Fusion DiscoveryX Client for Scala SDK 使用 akka-grpc 开发,使用时需要配置 akka.grpc.client
指定 DiscoveryX Server 地址。
akka.grpc.client {
// DiscoveryX 配置管理服务
"fusion.discoveryx.grpc.ConfigService" {
// 是否使用 tls
use-tls = false
host = "127.0.0.1"
port = 48000
}
// DiscoveryX 服务注册、发现管理服务
"fusion.discoveryx.grpc.NamingService" {
// 是否使用 tls
use-tls = false
host = "127.0.0.1"
port = 48000
}
}
Note
gRPC服务全限定名在HOCON配置里需要使用英文双引号括起来,因为HOCON默认使用英文点号来区分配置层级。
测试时可以把use-tls
参数设置为false
,但在生产环境中建议使用默认值true
。
自动注册服务
若需要把服务自动注册到 DiscoveryX Server,需要配置 discoveryx.client.naming.auto-registration = true
。同时,还需要设置namespace
、service-name
、ip
、port
,其中ip
可通过自动检测获取(当不指定或设置为空字符串时,若发现自动检测到的IP地址不正确请手动指定)。
discoveryx.client {
naming {
// 自动注册服务。default: false
#auto-registration = false
// 心跳间隔
heartbeat-interval = 10.seconds
// 查询服务实例时只返回一个健康实例(轮询)
one-healthy = true
// 查询服务实例时返回所有健康实例(若 one-healthy 设置为 true,则 all-healthy 不进行判断)
all-healthy = false
// 名称空间
#namespace = ""
// 注册的服务实例名
#service-name = "discoveryx"
// 注册的服务实例IP地址
#ip = "127.0.0.1"
// 注册的服务实例网络端口
#port = 8000
// 是否启用。default: true
#enable = true
// 设置为true服务注册后立即可用,否则等一次心跳消息后可用。default: true
#health = true
// 注册的服务实例权重。default: 1.0
#weight = 1.0
// 注册的服务实例元数据
# env = test
# application = web-backend
#}
// 健康检查方法,支持:CLIENT_REPORT, SERVER_SNIFF。default:CLIENT_REPORT
#healthy-check-method = CLIENT_REPORT
// 健康检查间隔(秒),当 healthy-check-method = SERVER_SNIFF 时有效。default:15
#healthy-check-interval = 15
// 几次健康检查失败设置服务实例为不健康状态。default:1
#unhealthy-check-count = 1
// 健康检查协议,支持:UDP、TCP、HTTP(当 healthy-check-method = SERVER_SNIFF 时有效 )。default:HTTP
#protocol = HTTP
// 健康检查是否使用 TLS。default: false
# use-tls = false
// protocol 设置为 HTTP 或 HTTPS 时指定的GET请求URI PATH路径
// 对于HTTP(HTTPS)检测,当HTTP响应状态值为 [200, 299] 范围内时认为服务实例状态为 healthy。
// 调用NamingClient.generateUri默认超时时间。default: 5 seconds
#query-timeout = 5.seconds
}
}