У розробці інтернет-проєктів необхідно взаємодіяти з різними сервісами, а користувачі отримують дані з сервера, а висока доступність інтерфейсів сервісів особливо важлива, особливо в електронній комерції та платіжних системах, де висока доступність також вимірює надійність системи. У випадку кластерів багато сервісів також важко підтримувати.
Огляд консула
Consul — це інструмент з відкритим кодом, розроблений мовою Go, запущений компанією HashiCorp, який використовується для виявлення сервісів і налаштування розподілених систем із вбудованою системою реєстрації та виявлення сервісів, реалізацією протоколу сумісності розподілу, перевіркою стану, зберіганням ключів/значень та рішеннями для мульти-дата-центрів, які відносно прості у використанні.
Відкриття консульської служби
Як використовувати Consul Service Discovery:
- Запускайте агента Consul у клієнтському режимі на кожному комп'ютері, який відповідає лише за ефективний обмін останньою реєстраційною інформацією з Consul Cluster (не бере участі у виборах лідера).
- Сервіс на кожному комп'ютері реєструє ім'я сервісу та URL сервісу у місцевого агента-консула
- Коли програма, розгорнута на Computer1, потребує виклику ServiceB, програма ServiceA безпосередньо отримує адресу доступу ServiceB від місцевого агента консула через ім'я сервісу, а потім безпосередньо робить запит на URL ServiceB.
Код виглядає так:
У класі «Старт» зателефонуйте наступним чином:
Медичний огляд
Інтерфейс перевірки здоров'я повинен лише повернути код статусу 200 до консула, і код виглядає так:
Починайте проєкт, запишіться на сервіс
Контролер може визначити метод тестування наступним чином:
Перейдемо до каталогу bin проєкту і запустимо його через командний рядок, код виглядає так:
Перегляньте посилання через браузер:
http://127.0.0.1:8500/ui/dc1/services/test.itsvse
http://127.0.0.1:8500/v1/catalog/service/test.itsvse
Дані json такі:
[ { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Адреса": "127.0.0.1", "Дата-центр": "dc1", "TaggedAddresses": { "LAN": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "Consul-Network-сегмент": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ «тест», "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Пас": 1, "Увага": 1 }, "ServiceMeta": {}, "ServicePort": 8083, "ServiceEnableTagOverride": неправда, "ServiceProxy": { "MeshGateway": {}, "Expose": {} }, "ServiceConnect": {}, "CreateIndex": 1317, "ModifyIndex": 1317 }, { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Node": "DESKTOP-EB7B69D", "Адреса": "127.0.0.1", "Дата-центр": "dc1", "TaggedAddresses": { "LAN": "127.0.0.1", "WAN": "127.0.0.1" }, "NodeMeta": { "Consul-Network-сегмент": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ «тест», "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { "Пас": 1, "Увага": 1 }, "ServiceMeta": {}, "ServicePort": 8082, "ServiceEnableTagOverride": неправда, "ServiceProxy": { "MeshGateway": {}, "Expose": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
Консульський сервісний виклик
Створіть новий проєкт консолі .NET Core з таким кодом:
Я випадково дзвоню до зареєстрованого сервісу test.itsvse, і результат такий:
Нарешті, завантажити вихідний код:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь |