При разработке интернет-проектов необходимо взаимодействовать с различными сервисами, и пользователи получают данные с сервера, а высокая доступность интерфейсов сервисов особенно важна, особенно в электронной коммерции и платежных системах, где высокая доступность также измеряет надёжность системы. В случае кластеров многие сервисы также сложно поддерживать.
Обзор консула
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-segment": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ «тест», "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { «Проходимо»: 1, «Предупреждение»: 1 }, "ServiceMeta": {}, "ServicePort": 8083, "ServiceEnableTagOverride": false, "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-segment": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ «тест», "itsvse" ], "ServiceAddress": "127.0.0.1", "ServiceWeights": { «Проходимо»: 1, «Предупреждение»: 1 }, "ServiceMeta": {}, "ServicePort": 8082, "ServiceEnableTagOverride": false, "ServiceProxy": { "MeshGateway": {}, «Expose»: {} }, "ServiceConnect": {}, «CreateIndex»: 1314, "ModifyIndex": 1314 }
]
Консульский сервисный вызов
Создайте новый консольный проект для .NET Core с следующим кодом:
Я случайно звоню в зарегистрированный сервис test.itsvse, и результат такой:
Наконец, скачайте исходный код:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ |