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

Apache-2.0

390KB
8K SLoC

Delix

build status

Delix背后的想法是创建一个连接微服务的覆盖网络。它使用语义寻址,并负责加密、故障转移和负载均衡。

安装

cargo install delix

示例

在三个不同的终端中运行三个delix节点。

delix -c example/one.conf.toml
delix -c example/two.conf.toml
delix -c example/three.conf.toml

节点 one127.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