7个版本
使用旧的Rust 2015
0.2.4 | 2016年4月3日 |
---|---|
0.2.3 | 2016年3月16日 |
0.2.1 | 2016年2月25日 |
0.1.1 | 2016年2月5日 |
0.1.0 | 2016年1月30日 |
#13 in #service-request
390KB
8K SLoC
Delix
Delix背后的想法是创建一个连接微服务的覆盖网络。它使用语义寻址,并负责加密、故障转移和负载均衡。
安装
cargo install delix
示例
在三个不同的终端中运行三个delix节点。
delix -c example/one.conf.toml
delix -c example/two.conf.toml
delix -c example/three.conf.toml
节点 one
在 127.0.0.1:4200
打开一个接口接收http请求。所有节点都配置了 slashdot
服务。为了从服务请求响应,运行...
curl -H 'Host: slashdot.org' -H 'X-Delix-Service: slashdot' http://127.0.0.1:4200
让我们深入查看节点一的配置文件。
[log]
type = "console"
level = "debug"
[metric]
type = "terminal"
refresh_interval_ms = 100
[cipher]
type = "symmetric"
key = "000102030405060708090a0b0c0d0e0f"
[discovery]
type = "constant"
addresses = [ ]
[transport]
type = "direct"
local_address = "localhost:4001"
request_timeout_ms = 5000
balancer = { type = "dynamic_round_robin" }
[[relay]]
type = "http"
address = "localhost:4200"
header_field = "X-Delix-Service"
[[relay.service]]
name = "slashdot"
address = "slashdot.org:80"
discovery
部分包含 addresses
字段,它存储在节点启动时用于搜索其他节点的一组IP(带端口)。由于节点 one
是第一个,所以这里列表为空。
cipher
部分定义了用于节点间流量加密和认证的密钥。密钥长度可以是16、24或32字节(十六进制编码),并将产生 AES-{128, 192或256}-GCM 加密。网络中的所有节点必须共享相同的密钥。
为了将节点绑定到接口,必须在 transport
部分的 local_address
中设置。如果接口与节点可见的接口不同,可以设置 public_address
字段。
最后的 relay
部分定义了一个 http
中继,该中继在 address
打开一个端口接收HTTP请求。请求中的 header_field
告诉 delix 请求应被路由到哪个服务。服务在 relay.service
部分定义,并定义了请求发送的端点名称和地址。在此示例中是 slashdot 服务器。
许可证
代码许可在 Apache 2.0 下。
依赖
~11–21MB
~306K SLoC