2016-02-01 3 views
1

Мне любопытно, есть ли спецификация для определения эстафетной передачи обслуживания. Например, если на 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' 

OpenStack например

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' 

Redis например

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 

есть стандартный так, что уже существует?

+0

Кто бы «потреблять» эта спецификация? Я могу представить себе случай, когда клиент хотел бы получить доступ как к службе HTTP, так и к службе с помощью настраиваемого протокола. Почему бы просто не дать им услугу REST для всего? Это тенденция, которую я вижу. – Charlie

+0

Это был бы факультет остального призыва для привлечения службы. Например, если клиент делает вызов для включения служб postgres, ответ будет включать информацию о том, где будет использоваться конечная точка (ip, порт, протокол, auth и т. Д.). Мне любопытно, есть ли спецификация/схема для такого ответа. – user1777667

+0

любое обновление по этому вопросу? – Charlie

ответ

0

Предлагаю вам изучить «сервисное открытие» pattern.

Существует несколько инструментов, которые упрощают реализацию, но большинство из них описывают службы, использующие пары ключ/значение, например. см etcd, но это выглядит как Консул добавляет несколько полей, которые могут быть полезны для вас увидеть here

Пример Консул Определение

{ 
    "service": { 
    "name": "redis", 
    "tags": ["master"], 
    "address": "127.0.0.1", 
    "port": 8000, 
    "enableTagOverride": false, 
    "checks": [ 
     { 
     "script": "/usr/local/bin/check_redis.py", 
     "interval": "10s" 
     } 
    ] 
    } 
} 
Смежные вопросы