Глубокое понимание открытия сервисов: от основ к практике
Глубокое понимание открытия сервисов: от основ к практике

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

1. Введение в обнаружение сервисов
1.1. Основные понятия микросервисной архитектуры.

Архитектура микросервисов — это архитектурный стиль, который делит одно приложение на набор небольших сервисов. Каждая служба работает в своем собственном процессе, и службы взаимодействуют друг с другом через упрощенный механизм (обычно API-интерфейс HTTP-ресурсов). Эти услуги основаны на бизнес-возможностях и могут быть развернуты независимо с помощью полностью автоматизированного механизма развертывания. Кроме того, эти сервисы могут быть написаны на разных языках программирования и использовать разные технологии хранения данных.

1.2. Основные понятия обнаружения сервисов.

Обнаружение сервисов является ключевым компонентом распределенных систем, и его основная функция — отслеживание сетевого расположения всех сервисов в системе. В микросервисной архитектуре, поскольку существует множество сервисов и их расположение может часто меняться, необходим механизм обнаружения сервисов для динамического поиска и мониторинга сервисов.

Обнаружение службы обычно включает в себя два основных процесса: регистрацию службы и поиск службы. Регистрация службы означает регистрацию собственного сетевого адреса в центре регистрации службы при запуске службы; поиск службы означает, что, когда службе необходимо вызвать другую службу, она запрашивает центр регистрации службы, чтобы получить сетевой адрес вызываемой службы.

Благодаря обнаружению сервисов каждому сервису не нужно заботиться о конкретном местонахождении других сервисов. Для связи ему достаточно знать имя сервиса, что значительно повышает гибкость и масштабируемость системы.

1.3. Важность обнаружения сервисов в микросервисной архитектуре.

В микросервисной архитектуре важность обнаружения сервисов в основном отражается в следующих аспектах:

  1. Развязка системы: открытие Служить,Каждому Служить не нужно заботиться о конкретном местоположении другого Служить.,Для общения вам нужно знать только имя Служитьиз,Это значительно снижает степень связи между Служить и из.
  2. Улучшенная масштабируемость: поскольку информация о местоположении Служить управляется системой обнаружения Служить.,Поэтому когда необходимо увеличить или уменьшить количество экземпляров Служить,Просто обновите его в системе обнаружения Служить.,Нет необходимости изменять код вызова Служитьиз.
  3. Улучшите удобство использования:Служить Системы обнаружения обычноверно Служить Пройти проверку здоровья,Когда что-то идет не так,Вы можете быстро удалить его из списка Служить.,Не позволяет вызывающему абоненту указать на вину из Служить.
  4. балансировка нагрузка: Служить обнаружил, что система может взаимодействовать с балансировкой нагрузку использовать, динамически корректирует вызовы Служитьиз в зависимости от условий нагрузки.

Таким образом, обнаружение сервисов играет решающую роль в микросервисной архитектуре.

2. Как работает обнаружение сервисов

Принцип работы обнаружения служб в основном включает в себя два этапа: регистрацию службы и поиск службы.

2.1. Регистрация услуги.

Регистрация службы. Когда служба (например, экземпляр микрослужбы) запускается, она отправляет свой сетевой адрес (например, IP-адрес и номер порта) и, возможно, другую информацию (например, имя службы, номер версии и т. д.) в службу регистрации службы. центр. Реестр службы отвечает за хранение и поддержание этой информации, чтобы, когда другим службам потребуется взаимодействовать со службой, они могли получить сетевой адрес службы, запросив реестр службы. Этот механизм обеспечивает динамическое обнаружение и связь между службами, повышая гибкость и масштабируемость системы.

2.2. Поиск услуг

Поиск службы. Поиск службы — еще один важный шаг в процессе обнаружения службы. Когда службе (например, экземпляру микрослужбы) необходимо вызвать другую службу, она запрашивает сетевой адрес вызываемой службы из реестра служб. Центр регистрации услуги вернет адрес вызываемой услуги, после чего вызывающий абонент сможет напрямую связаться с вызываемой услугой. Этот механизм обеспечивает динамическое обнаружение и связь между службами, повышая гибкость и масштабируемость системы.

2.3. Балансировка нагрузки.

Центр регистрации услуг также должен иметь возможности балансировки нагрузки. В большой распределенной системе центру регистрации сервисов может потребоваться обработка большого количества запросов на регистрацию и поиск сервисов. Если все запросы обрабатываются одним центром регистрации сервисов, это может стать узким местом системы. Поэтому обычно развертываются несколько экземпляров центра регистрации служб, а запросы распределяются по разным экземплярам с помощью механизма балансировки нагрузки для улучшения возможностей обработки и доступности системы.

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

Поэтому центру регистрации сервисов необходимо не только управлять регистрацией и поиском сервисов, но и иметь возможности балансировки нагрузки для обеспечения высокой доступности и высокой производительности системы.

2.4. Мониторинг услуг

Мониторинг услуг. Центру регистрации услуг необходимо отслеживать зарегистрированные услуги, включая доступность услуг, время отклика, частоту ошибок и другие показатели. Эти данные мониторинга можно использовать для анализа рабочего состояния службы, а также для своевременного обнаружения и решения проблем.

Среди них тестирование доступности услуг обычно реализуется посредством проверки работоспособности:

2.5. Медицинский осмотр

Проверка работоспособности. Центр регистрации услуг обычно регулярно выполняет проверки работоспособности зарегистрированных услуг, чтобы проверить, доступна ли услуга. Проверка работоспособности обычно отправляет простой запрос к службе, например запрос HTTP HEAD. Если служба отвечает нормально, служба считается исправной; если служба не может ответить или ответ неправильный, центр регистрации службы считает службу неработоспособной и объявляет ее неработоспособной. будет удален из списка служб, что не позволит другим службам вызывать недоступную службу.

2.6. Динамическое обновление.

Динамическое обновление центра регистрации обнаружения услуг означает, что при изменении статуса услуги (например, услуга онлайн, офлайн, сбой и т. д.) центр регистрации услуги может обновлять информацию о состоянии услуги в режиме реального времени.

В частности, динамические обновления в основном включают в себя следующие аспекты:

  1. Служить регистрацию: при запуске нового экземпляра из Служить.,это будет самоизсеть Адрес и Другая необходимая информация для регистрации в регистрационном центре Служить,Регистрационный центр Служить добавит эту информацию в список Служить.
  2. Служить выход: когда экземпляр Служить остановлен.,Он отменит регистрацию в реестре Служить.,Центр регистрации Служить удалит Служить из списка Служить.
  3. Служитьвозобновлять:если Служитьизсеть Адрес или Другие изменения информации,Служить может обновить регистрационную информацию в регистрационном центре Служить из.
  4. проверка здоровья:Служить Регистрационный центр Период встречиверно Служить Пройти проверку здоровья,Если вы обнаружите, что Служить не отвечает должным образом,отметит Служить как недоступный,или удален из списка Служить.

Благодаря этому механизму динамического обновления центр регистрации сервисов может отражать последнее состояние сервисов в системе в режиме реального времени, тем самым обеспечивая динамическое обнаружение и связь между сервисами, а также повышая гибкость и доступность системы.

2.7. Преимущества и недостатки различных протоколов.

Обнаружение сервисов может использовать различные протоколы, включая HTTP, RPC, DNS и т. д. Каждый протокол имеет свои преимущества и недостатки:

HTTP:

  • Преимущества: HTTP — текстовый протокол общего назначения.,Легко понять и отладить,Может обрабатываться с помощью различных инструментов и библиотек.,Применимо к различным языкам и платформам;
  • Недостатки: HTTP Производительность может быть не такой хорошей, как у двоичных протоколов, особенно в сценариях крупномасштабного обнаружения. Кроме того, HTTP даа без сохранения состояния по протоколу,Не подходит для сценариев, требующих длинных соединений.

RPC (нравиться gRPC, Бережливость):

  • Преимущества: РПК обычно чем HTTP Более легкий, более высокая производительность. много RPC Все фреймворки предоставляют функцию «Служить обнаружению», которую можно использовать с RPC Связь тесно интегрирована и проста в использовании;
  • Недостатки: RPC требует определенных клиентских библиотек и не так универсален, как HTTP. Кроме того, некоторые протоколы RPC могут с трудом проходить через сетевые брандмауэры.

DNS:

  • Плюсы: DNS да Протокол обнаружения на основе доменного имени из Служить, который может напрямую использовать операционную систему из DNS Функциональность парсинга без необходимости использования дополнительных клиентских библиотек. Кроме того, DNS может быть очень хорошоподдерживатьбалансировка нагрузки при отказе;
  • Недостатки: DNS Задержка обновления высокая и не подходит для часто меняющихся сред. Кроме того, DNS Нет метаданных Служить Служитьиз, таких как версия Служитьиз, статус и т. д.

Выше приведены некоторые преимущества и недостатки использования различных протоколов для обнаружения сервисов. Какой протокол выбрать, зависит от конкретных потребностей и среды системы.

3. Реализация обнаружения сервисов
3.1. Реализация поставщика услуг обнаружения.

Реализация обнаружения служб поставщиком услуг в основном включает в себя следующие шаги:

  1. Регистрация при запуске: когда Служит запускается, он регистрирует свою собственную информацию (например, имя Служить, адрес, порт и т. д.) в центре регистрации Служить. Обычно это делается по телефону регистрационного центра из API добиться.
  2. Регулярная отправка контрольных сигналов: чтобы сообщить центру регистрации Служить, что Служить все еще доступен, Служить необходимо регулярно отправлять контрольные сигналы в центр регистрации Служить. Если центр регистрации Служить не получит контрольного сигнала от Служитьиз в течение определенного периода времени, он будет считать, что Служить отключен от сети.
  3. Проверка работоспособности: Служить может обеспечить проверку работоспособности через интерфейс, чтобы центр регистрации Служить мог проверить состояние здоровья Служитьиз. Если состояние здоровья Служить изменится, Служить необходимо обновить регистрационную информацию в регистрационном центре Служить из.
  4. Выход из системы при завершении работы: когда Служить завершает работу, ему необходимо выйти из реестра Служить, чтобы другие Служить не пытались вызвать уже недоступную из Служить.

Вот пример поставщика услуг, реализованный с использованием Spring Cloud и Eureka:

Язык кода:javascript
копировать
@SpringBootApplication
@EnableEurekaClient
public class ServiceProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }
}

В этом примере,@EnableEurekaClient Аннотации включены Eureka клиент, что приводит к автоматической регистрации службы в Eureka сервер и периодически отправляет контрольные сигналы. Другая информация о службе (например, имя службы, адрес, порт и т. д.) может быть установлена ​​в файле конфигурации.

3.2. Реализация потребителя обнаружения услуг.

Реализация обнаружения служб потребителем службы в основном включает в себя следующие шаги:

  1. Запрос Служить: Когда потребителю Служить необходимо позвонить другому Служить, ему сначала необходимо запросить центр регистрации Служить, чтобы получить информацию о поставщике Служить. Обычно это делается по телефону регистрационного центра из API добиться.
  2. балансировка нагрузка: если несколько поставщиков услуг Служить предлагают одну и ту же услугу, потребитель Служить должен выбрать одного из них для звонка. Обычно это да путем балансировки алгоритмы нагрузки (такие как опрос, случайный выбор, наименьшие соединения и т. д.) успеха.
  3. Обработка ошибок: если вызов Служить завершается неудачно (например, сетевая ошибка, Служить недоступно и т. д.), потребителю Служить необходимо выполнить обработку ошибок. Это может включать в себя такие стратегии, как повторная попытка, откат, автоматический выключатель и т. д.

Вот пример потребителя сервиса, реализованного с использованием Spring Cloud и Eureka:

Язык кода:javascript
копировать
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }

    @Autowired
    private DiscoveryClient discoveryClient;

    public void doSomething() {
        List<ServiceInstance> instances = discoveryClient.getInstances("service-provider");
        if (!instances.isEmpty()) {
            ServiceInstance instance = instances.get(0); // Здесь мы просто возьмем первый пример, который может понадобиться в реальных приложениях. нагрузкиалгоритм            // использовать instance.getHost() и instance.getPort() Получите адрес и порт Служить, затем сделайте звонок Служить.
        }
    }
}

В этом примере,@EnableDiscoveryClient Аннотации включен Служить клиент обнаружения, который позволяет Служить запросы Eureka Служить Приобретение устройства Служитьпоставщикизинформация。doSomething В методе мы сначала передаем discoveryClient.getInstances Метод получает информацию о поставщике услуг, а затем выполняет вызов службы.

Реализация обнаружения служб потребителем службы в основном включает в себя следующие шаги:

  1. Запрос Служить: Когда потребителю Служить необходимо позвонить другому Служить, ему сначала необходимо запросить центр регистрации Служить, чтобы получить информацию о поставщике Служить. Обычно это делается по телефону регистрационного центра из API добиться.
  2. балансировка нагрузка: если несколько поставщиков услуг Служить предлагают одну и ту же услугу, потребитель Служить должен выбрать одного из них для звонка. Обычно это да путем балансировки алгоритмы нагрузки (такие как опрос, случайный выбор, наименьшие соединения и т. д.) успеха.
  3. Обработка ошибок: если вызов Служить завершается неудачно (например, сетевая ошибка, Служить недоступно и т. д.), потребителю Служить необходимо выполнить обработку ошибок. Это может включать в себя такие стратегии, как повторная попытка, откат, автоматический выключатель и т. д.

Вот пример потребителя сервиса, реализованного с использованием Spring Cloud и Eureka:

Язык кода:javascript
копировать
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }

    @Autowired
    private DiscoveryClient discoveryClient;

    public void doSomething() {
        List<ServiceInstance> instances = discoveryClient.getInstances("service-provider");
        if (!instances.isEmpty()) {
            ServiceInstance instance = instances.get(0); // Здесь мы просто возьмем первый пример, который может понадобиться в реальных приложениях. нагрузкиалгоритм            // использовать instance.getHost() и instance.getPort() Получите адрес и порт Служить, затем сделайте звонок Служить.
        }
    }
}

В этом примере,@EnableDiscoveryClient Аннотации включен Служить клиент обнаружения, который позволяет Служить запросы Eureka Служить Приобретение устройства Служитьпоставщикизинформация。doSomething В методе мы сначала передаем discoveryClient.getInstances Метод получает информацию о поставщике услуг, а затем выполняет вызов службы.

3.3. Внедрение центра регистрации сервисов.

Внедрение обнаружения служб в центре регистрации в основном включает в себя следующие этапы:

  1. Получение регистрации Служить: Центр регистрации должен предоставить интерфейс, чтобы поставщики Служить могли зарегистрировать свою собственную информацию (например, имя Служить, адрес, порт и т. д.) в регистрационном центре.
  2. Хранить информацию о Служить: Центру регистрации необходимо хранить информацию о поставщике Служить, чтобы потребители могли запрашивать Служить. Обычно для реализации этого требуется какая-то база данных или структура данных в памяти.
  3. Предоставить запрос «Служить». Центру регистрации необходимо предоставить интерфейс, чтобы потребители «Служить» могли запрашивать информацию у поставщика «Служить».
  4. Получение пульса Служить: Центру регистрации необходимо получить провайдера Служить по пульсу, чтобы понять статус провайдера Служить по состоянию выживания. Если сообщение «Служить провайдеру из Heartbeat» не получено в течение определенного периода времени, центр регистрации будет считать, что «Служить провайдеру» отключено.
  5. Обеспечить выход из системы «Служить». Центр регистрации должен предоставить интерфейс, чтобы поставщики услуг «Служить» могли выйти из центра регистрации после его закрытия.

Ниже приводится использование Spring Boot и HTTP Пример реализованного упрощенного реестра сервисов:

Язык кода:javascript
копировать
@SpringBootApplication
@RestController
public class RegistryCenterApplication {
    private Map<String, String> services = new ConcurrentHashMap<>();

    public static void main(String[] args) {
        SpringApplication.run(RegistryCenterApplication.class, args);
    }

    @PostMapping("/register")
    public void register(@RequestParam String serviceName, @RequestParam String serviceAddress) {
        services.put(serviceName, serviceAddress);
    }

    @GetMapping("/discover")
    public String discover(@RequestParam String serviceName) {
        return services.get(serviceName);
    }
}

В этом примере мы используем ConcurrentHashMap хранить Служитьинформация,/register Интерфейс для регистрации Служить,/discover Интерфейс используется для запроса услуг. Это всего лишь очень упрощенный пример. Фактический реестр служб будет более сложным и должен решать такие проблемы, как параллелизм, сетевое взаимодействие, обработка ошибок и проверки работоспособности служб.

3.4 Простой случай реализации центра регистрации на Java.

Реализация полноценного центра регистрации услуг включает в себя большое количество контента, включая сетевое программирование, многопоточное программирование, обработку ошибок и т. д. Ниже приведен упрощенный пример с использованием Spring Boot и HTTP выполнить Служитьзарегистрироваться、Служить Находитьипроверка здоровьяиз Функция。

Сначала мы определяем ServiceInstance Класс для представления экземпляра службы:

Язык кода:javascript
копировать
public class ServiceInstance {
    private String serviceName;
    private String host;
    private int port;

    // Конструктор, геттер и setter упущение
}

Затем мы определяем ServiceRegistry Класс для реализации функции регистрации и обнаружения Служить:

Язык кода:javascript
копировать
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Component
public class ServiceRegistry {
    private Map<String, ServiceInstance> services = new ConcurrentHashMap<>();

    public void register(ServiceInstance instance) {
        services.put(instance.getServiceName(), instance);
    }

    public ServiceInstance discover(String serviceName) {
        return services.get(serviceName);
    }
}

Далее мы определяем RegistryController класс для обработки HTTP просить:

Язык кода:javascript
копировать
import org.springframework.web.bind.annotation.*;

@RestController
public class RegistryController {
    private final ServiceRegistry registry;

    public RegistryController(ServiceRegistry registry) {
        this.registry = registry;
    }

    @PostMapping("/register")
    public void register(@RequestBody ServiceInstance instance) {
        registry.register(instance);
    }

    @GetMapping("/discover/{serviceName}")
    public ServiceInstance discover(@PathVariable String serviceName) {
        return registry.discover(serviceName);
    }
}

Наконец, мы можем определить запланированную задачу для проверки работоспособности службы:

Язык кода:javascript
копировать
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class HealthCheckTask {
    private final ServiceRegistry registry;

    public HealthCheckTask(ServiceRegistry registry) {
        this.registry = registry;
    }

    @Scheduled(fixedRate = 60000)
    public void healthCheck() {
        // верно registry Каждый Служить в из выполняет проверку работоспособности. Если проверка не удалась, удалите Служить.
    }
}

Это всего лишь упрощенный пример, реальный реестр служб будет более сложным. Например, обработка параллелизма может потребовать использования блокировок или других механизмов управления параллелизмом; сетевая связь может потребовать использования более сложных протоколов, таких как TCP, UDP или HTTP/2; при обработке ошибок может потребоваться учитывать различные сетевые ошибки, таймауты, сбои в обслуживании и т.д.


4. Практические случаи применения обнаружения сервисов
4.1 Служба обнаружения программного обеспечения с открытым исходным кодом-Эврика.

Eureka да Netflix Продукт с открытым исходным кодом, который обеспечивает регистрацию и обнаружение Служить, это да Spring Cloud Часть экосистемы, в основном используемая для реализации функций управления сервисами в микросервисной архитектуре. Эврика Основные особенности включают в себя:

  1. Простота в использовании: Эврика Предоставляет простые и удобные в использовании аннотации и свойства конфигурации, которые разработчики могут легко Eureka интегрирован в Spring Cloud В проекте;
  2. Служить Регистрация и открытие: Эврика Server Предусмотрена функция регистрации «Служить» после запуска каждого узла микросервиса. Eureka Server Зарегистрируйтесь. Эврика Client Можно получить из Eureka Server Получить регистрационную информацию и осуществить Служить открытия;
  3. Балансировка клиента нагрузки:Eureka Client балансировка встроенная Сервер нагрузки может хорошо контролировать распределение запросов на различные узлы Служить;
  4. Высокая доступность: Эврика Server Его можно настроить в режиме высокой доступности и сформировать кластер центра регистрации «Служить» посредством взаимной регистрации;
  5. Самозащита: при возникновении сбоя сетевого раздела (задержка, лаг, Служить не выходит в автономный режим нормально и т. д.), Эврика Server Информация в реестре Служить будет защищена, а регистрационная информация Служить не будет удалена сразу, поэтому микросервисы по-прежнему доступны.
4.2 Служба обнаружения программного обеспечения с открытым исходным кодом и т. д.

Etcd Да CoreOS Разработано на основе Go Языковая реализация с открытым исходным кодом, высокодоступная распределенная система хранения значений «ключ-значение» для общей конфигурации и Служить обнаружению. И т.д. Основные особенности включают в себя:

  1. Простота в использовании: и т. д. Установка и настройка очень просты и обеспечивают HTTP API Интерактивный и простой в использовании;
  2. Хранение пар ключ-значение: Etcd даключевое значениеверносистема хранения,Данные хранятся в иерархической организации из каталогов.,Точно так же, как в стандартной файловой системе;
  3. Мониторинг изменений: и т.д. Может отслеживать изменения в конкретных ключах или каталогах.,иверноценитьизреагировать на изменения,этотверно Ввыполнить Динамическая конфигурациявозобновлятьи Служить Нашел очень полезный;
  4. Высокая производительность: согласно официальным данным тестирования, один экземпляр Etcd поддерживает более 2000 операций чтения в секунду, что может удовлетворить потребности большинства приложений;
  5. Высокая доступность и согласованность: и т. д. использовать Raft Алгоритм достижения доступности и согласованности данных распределенной системы. Даже если некоторые узлы выйдут из строя и т. д. Доступность и согласованность данных по-прежнему могут быть гарантированы.
4.3 Сервис обнаружения программного обеспечения с открытым исходным кодом — ZooKeeper.

ZooKeeper да Apache Это проект с открытым исходным кодом, это программное обеспечение, которое обеспечивает согласованность обслуживания распределенных приложений. Оно предоставляет такие функции, как: обслуживание конфигурации, обслуживание доменного имени, распределенная синхронизация, групповое обслуживание и т. д. смотритель зоопарка Основные особенности включают в себя:

  1. Простота в использовании: ZooKeeper из модели Дерево со структурой каталогов, очень похожее на файловую систему. Это обеспечивает простой набор API,Например, создание узлов, удаление узлов, чтение данных узла, установка данных узла и т. д.,Очень удобно использовать;
  2. Уведомление об изменении: ZooKeeper поддерживать Watcher механизм, клиент может зарегистрировать Watcher, при изменении данных узла, Watcher будет уведомлен。этотверно Ввыполнить Динамика конфигурациивозобновлять、Такие функции, как «Служить открытием», очень полезны;
  3. Высокая производительность: ZooKeeper принял метод под названием ZAB в качестве протокола для обеспечения высокой доступности и согласованности, он может обрабатывать большое количество операций чтения и стабильно выполнять операции записи;
  4. Высокая доступность и согласованность: ZooKeeper Через механизм копирования данные передаются на каждый рабочий узел, пока выживает более половины узлов, ZooKeeper. Это будет нормально Служить. В то же время ZooKeeper Гарантируется, что клиент может прочитать все самые последние данные.
  5. Последовательная согласованность: ZooKeeper гарантирует, что запросы транзакций, инициированные одним и тем же клиентом, в конечном итоге будут применены в ZooKeeper в том порядке, в котором они были инициированы.
4.4 Служба обнаружения программного обеспечения с открытым исходным кодом - Nacos.

Nacos даAlibaba с открытым исходным кодом — это простая в использовании платформа для управления, обнаружения и настройки микросервисов. Накос предоставляет простой набор API Осуществить Служитьиз регистрацию, открытие и проверку работоспособности. Накос Основные особенности включают в себя:

  1. Простота в использовании: Накос Предоставляет набор простых и удобных в использовании API и интерфейс позволяет разработчикам легко управлять и эксплуатировать Служить.
  2. Служить Регистрация и открытие: Nacos Обеспечивает Служить центр регистрации, поддерживать Служитьиз динамической регистрации и открытия, поддерживать DNS и HTTP Два способа открыть для себя Служить.
  3. Динамическая конфигурация Служить: Nacos Предоставляет такие функции, как динамическая настройка, поддержка конфигурации и управления версиями, принудительная рассылка обновлений конфигурации и т. д., что позволяет приложениям динамически получать и обновлять конфигурации во время выполнения.
  4. Высокая доступность и согласованность: Nacos Благодаря встроенному режиму кластера и сохранению данных гарантируется высокая доступность и согласованность регистрационной и конфигурационной информации.
  5. поддерживатьмикросервисы Архитектура:Nacos снабженный Spring Cloud、Dubbo Платформа микросервисов интегрирует влияние, позволяя разработчикам легко создавать архитектуру микросервисов.
4.5 Служба обнаружения программного обеспечения с открытым исходным кодом-K8s.

Кубернетес (сокращенно K8s)да Google Платформа оркестрации контейнеров с открытым исходным кодом для автоматического развертывания, расширения и управления контейнерными приложениями. Кубернетес Основные особенности включают в себя:

  1. Простота использования: Kubernetes Обеспечивает богатый и простой в использовании API Инструмент командной строки позволяет разработчикам легко управлять контейнерами и управлять ими.
  2. Служить Откройте для себя ибалансировка нагрузки:Kubernetes Может быть автоматически назначен контейнерам IP Адрес и DNS имя и может перемещаться между контейнерами балансировка нагрузки。
  3. Автоматическое развертывание и откат: Kubernetes может быть основано Предопределенные стратегии автоматического развертывания и обновления приложений. Если возникла проблема с новой версией приложения, оно также может автоматически вернуться к старой версии.
  4. Масштабирование: Kubernetes может быть основано на CPU использование скорости или других предопределенных индикаторов автоматически расширяет приложение.
  5. Самовосстановление: Kubernetes Неработоспособные контейнеры можно автоматически заменять, уничтожать и перезапускать для обеспечения доступности.
  6. Управление ключами и конфигурациями: Kubernetes Может управлять и защищать конфиденциальную информацию, такую ​​как пароли, OAuth. Токен, SSH ключи и т. д., а также может обновлять конфигурации приложения без пересборки образа.

Поэтому Kubernetes да Платформа оркестрации контейнеров, которая очень подходит для создания и запуска распределенных систем.

4.6. Будущие тенденции развития открытия сервисов.

Будущие тенденции развития Service Discovery, являющегося ключевым компонентом микросервисной архитектуры, могут включать следующие аспекты:

  1. Автоматизация: С развитием облачных вычислений и контейнерных технологий развертывание, расширение и сокращение Служит становится все более и более автоматизированным.
  2. Мультиоблачные и гибридные облака. Все больше и больше предприятий выбирают мультиоблачные и гибридные облачные среды и осознают необходимость обеспечения единого представления для нескольких облачных платформ и центров обработки данных;
  3. Безопасность: С широким применением микросервисов безопасность связи между Служит становится все более важной. Служить считает, что необходимо иметь возможность поддерживать аутентификацию и авторизацию для предотвращения несанкционированного доступа;
  4. Масштаб: С увеличением количества микросервисов компания Служить обнаружила необходимость иметь возможность управлять крупномасштабными из Служениями и обеспечивать эффективные возможности выполнения запросов и обновлений;
  5. Стандартизация: в настоящее время открытие стандартов или спецификаций осуществляется по-разному, и в нем отсутствует унифицированный стандарт.
  6. Интеграция: Discovery может быть более тесно интегрирован с другими инструментами управления системой и мониторинга для обеспечения более полных возможностей управления.

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

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.