我很好奇是否有服务切换定义的规范。 例如,如果在 PaaS/IaaS 上预配了服务,则最终用户需要包含服务内容、可以访问终结点的位置、发布的端口以及使用的身份验证的详细信息的哈希值。 (想想HATEOAS ref_的( 我有几个模型,一个看起来像:
对象存储示例
name: myobjstor
family: s3
about: https://aws.amazon.com/documentation/s3
zone: public
protocol:
spec: http
host: s3.mysite.com
port: 443
tls: true
authentication:
strategy: oauth2
username: someuser
password: somepassword
definition:
type: swagger
url: 'https://mysite/swagger.json'
开放堆栈示例
name: myostack
family: openstack-keystone_v2.1
about: http://developer.openstack.org/api-ref.html
zone: public
protocol:
spec: http
host: keystone.mysite.com
port: 443
tls: true
authentication:
strategy: oauth2
username: someuser
password: somepassword
definition:
type: swagger
url: 'https://mysite/swagger.json'
瑞迪斯示例
name: myredis
family: redis
about: http://redis.io/documentation
zone: public
protocol:
spec: redis
host: redis.mysite.com
port: 6379
options:
db: 0
NFS 示例
name: mynfs
family: nfs
about: http://nfs.sourceforge.net
zone: public
protocol:
spec: nfsv4
host: nfs.mysite.com
ports:
- 111
- 2049
有没有已经存在的这样的标准?
我建议您研究"服务发现"模式。
有几种工具可以轻松实现,但其中大多数工具使用键/值对描述服务,例如参见 etcd,但看起来 Consul 添加了一些可能对您有用的字段 这里
领事定义示例
{
"service": {
"name": "redis",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8000,
"enableTagOverride": false,
"checks": [
{
"script": "/usr/local/bin/check_redis.py",
"interval": "10s"
}
]
}
}