1. Введение в Даббо
Apache Dubbo — это среда разработки службы RPC, которая используется для решения проблем управления службами и связи в рамках микросервисной архитектуры.Он официально предоставляет многоязычные реализации SDK, такие как Java и Golang. Микросервисы, разработанные с использованием Dubbo, имеют встроенные возможности удаленного обнаружения адресов и связи друг с другом.Используя богатые функции управления сервисами, предоставляемые Dubbo, можно реализовать такие требования к управлению сервисами, как обнаружение сервисов, балансировка нагрузки и планирование трафика. Dubbo обладает высокой масштабируемостью, и пользователи могут легко реализовать различные пользовательские логические схемы для перехвата трафика и выбора местоположения.
В эпоху облачных технологий компания Dubbo успешно разработала Dubbo3, Proxyless Mesh и другие архитектуры и решения, а также провела всесторонние обновления в нескольких основных направлениях, таких как простота использования, сверхкрупномасштабная практика микросервисов, адаптация облачной инфраструктуры и т. д. и безопасность.
2. Даббо, что он умеет?
Согласно определению микросервисной архитектуры, организации, которые ее внедряют, могут повысить эффективность бизнес-итераций и стабильность системы, но предпосылка состоит в том, чтобы гарантировать, что микросервисы работают ожидаемым образом.Для этого нам нужно решить проблему разделения сервисов и A ряд вопросов, таких как определение, передача данных, обнаружение адресов, управление трафиком, согласованность данных и отказоустойчивость системы.
Dubbo может помочь решить следующие проблемы с микросервисами:
- Парадигмы и инструменты программирования микросервисов
Dubbo поддерживает определения сервисов на основе IDL или методов, зависящих от языка, и предоставляет различные формы вызова сервисов (такие как синхронный, асинхронный, потоковый и т. д.).
- Высокопроизводительная связь RPC
Dubbo помогает решать проблемы со связью между компонентами микросервиса, предоставляет различные реализации высокопроизводительных протоколов связи на основе HTTP, HTTP/2, TCP и т. д., а также поддерживает расширения протокола сериализации для управления сетевыми подключениями, передачи данных и т. д. Основной вопрос .
- Мониторинг и управление микросервисами
Официальное обнаружение сервисов Dubbo, динамическая настройка, балансировка нагрузки, маршрутизация трафика и другие базовые компоненты могут помочь решить проблемы базовой практики микросервисов. Кроме того, вы также можете использовать консоль администратора для мониторинга состояния микросервисов, а также выполнения текущих ограничений и перехода на более раннюю версию, согласованности данных, отслеживания ссылок и других возможностей с помощью окружающей среды.
- Развертывание в различных средах
Сервисы Dubbo можно напрямую развернуть в нескольких архитектурах, таких как контейнеры, Kubernetes и Service Mesh.
- активное сообщество
Проект Dubbo размещен в сообществе Apache. Существует более 10 экологических проектов, поддерживаемых активными международными и местными участниками. В число участников входят технические эксперты из-за рубежа, Alibaba, Industrial and Commercial Bank of China, Ctrip, Ant, Tencent и другие известные известные предприятия, чтобы обеспечить своевременную работу Dubbo. Устранение дефектов проекта, требований и уязвимостей безопасности, а также отслеживание последних тенденций развития технологий в отрасли.
- огромная пользовательская база
Dubbo3 успешно заменил инфраструктуру HSF в Alibaba и добился полной реализации, став единой инфраструктурой услуг Alibaba Group для облачной эпохи.Огромная группа пользователей является основой для Dubbo для поддержания стабильности, источников спроса и продвижения.
3. Почему стоит выбрать Дуббо?
- Быстрое начало работы, позволяющее разработчикам сосредоточиться на развитии бизнеса
Многоязычный SDK определяет парадигму разработки микросервисов, гибкое переключение протоколов связи и поддерживает любой протокол, например HTTP/2, gRPC, REST, Thrift и TCP.
- Управление услугами, мониторинг в режиме реального времени и контроль состояния кластера
Встроенные стратегии управления трафиком, такие как обнаружение служб, балансировка нагрузки и маршрутизация, а также предоставление универсальной микросервисной экосистемы, такой как полное отслеживание ссылок, текущее ограничение и ухудшение качества, согласованные транзакции, журналы, метрики, сетка служб и визуальная консоль администратора. .
- Сверхвысокая производительность, предназначенная для кластеров из миллионов экземпляров
Alibaba работает на Dubbo с миллионами экземпляров и триллионами вызовов каждый год во время Double 11. С самого начала проектирования главными приоритетами являются низкая задержка, высокая пропускная способность и масштабируемость.
- Решения корпоративного уровня, годы проверки производственной среды предприятия
Группы пользователей охватывают все сферы жизни, типичными представителями являются Промышленный и коммерческий банк Китая, Ctrip, Haier, Kingdee, поставщики облачных услуг (Alibaba Cloud, Tencent Cloud, Huawei Cloud) и т. д. В 2022 году Dubbo3 полностью заменил HSF в Alibaba на получить единую структуру.
4. Основные концепции и архитектура
Выше приведена диаграмма принципа работы Dubbo, которая разделена на два уровня абстрактной архитектуры: абстрактная плоскость управления службами и плоскость данных Dubbo.
- Поверхность управления управлением услугами. Плоскость управления управлением услугами не относится конкретно к одному конкретному компоненту, такому как центр регистрации, а является абстрактным выражением системы управления Dubbo. Плоскость управления включает в себя центр регистрации для координации обнаружения сервисов, политик управления трафиком, консоль администратора Dubbo и т. д. Если используется архитектура Service Mesh, она также включает плоскости управления сервисной сеткой, такие как Istio.
- Плоскость данных Даббо. Плоскость данных представляет собой все процессы Dubbo, развернутые в кластере, а обмен данными между процессами осуществляется по протоколу RPC.Dubbo определяет спецификации разработки и вызова микросервисных приложений и отвечает за завершение кодирования и декодирования передачи данных.
- Потребитель службы (Dubbo Consumer), процесс Dubbo, который инициирует деловые вызовы или RPC-связь.
- Поставщик услуг (Dubbo Provider), процесс Dubbo, который принимает деловые вызовы или сообщения RPC.
6. Протокол связи
Dubbo не привязан к какому-либо конкретному коммуникационному протоколу по своей конструкции.Среда Dubbo может обеспечить поддержку практически всех основных коммуникационных протоколов, таких как HTTP/2, REST, gRPC, JsonRPC, Thrift и Hessian2. Такой шаблон проектирования протокола обеспечивает наибольшую гибкость для создания микросервисов. Разработчики могут выбирать различные протоколы связи в соответствии со своими потребностями, такими как производительность и общий тип. Dubbo реализует миграцию между различными протоколами.
Протокол Dubbo предназначен для поддержки расширений.Вы можете адаптировать внутренний частный протокол к среде Dubbo, а затем подключить частный протокол к системе Dubbo, чтобы воспользоваться опытом разработки Dubbo и возможностями управления службами. Например, Alibaba, типичный пользователь Dubbo3, реализовал общий перенос внутренней инфраструктуры HSF на платформу Dubbo3, расширив поддержку протокола HSF.
Dubbo также поддерживает работу с несколькими протоколами. Вы можете использовать несколько протоколов на одном порту. Dubbo Server может автоматически идентифицировать запрос и обеспечивать его правильную обработку. Вы также можете опубликовать один и тот же сервис RPC на разных портах (протоколах) для разных технологических стеков. службы вызывающего абонента.
Dubbo предоставляет две встроенные высокопроизводительные реализации протокола Dubbo2 и Triple (совместимые с gRPC) для удовлетворения потребностей некоторых пользователей микросервисов в высокопроизводительной связи.Оба они изначально были разработаны и созданы во внутренних бизнес-сценариях высокопроизводительной связи Alibaba.
- Протокол Dubbo2 — это двоичный протокол связи, разработанный поверх протокола транспортного уровня TCP.
- Triple — это коммуникационный протокол, поддерживающий режим потоковой передачи на основе HTTP/2, а Triple полностью совместим с gRPC, но сделано больше оптимизаций в соответствии с характеристиками фреймворка Dubbo.
В целом поддержка протоколов связи в Dubbo имеет следующие характеристики:
- Не привязан к протоколу связи
- Обеспечить высокопроизводительную реализацию протокола связи
- Поддерживает потоковую модель связи
- Не связывает протокол сериализации
- Поддерживает мультипротокольную экспозицию одной службы
- Поддержка однопортовой многопротокольной публикации
- Поддержка нескольких сервисов в одном приложении с использованием разных протоколов связи
7. Управление сервисом Дуббо
Среда разработки сервисов решает проблемы разработки и связи, но в среде кластера микросервисов нам по-прежнему необходимо решать динамические изменения сервисных узлов без сохранения состояния, внешнюю конфигурацию, отслеживание журналов, наблюдаемость, управление трафиком, высокую доступность и согласованность данных. ряд вопросов, мы все вместе называем эти вопросы управлением услугами.
Ниже приведена схема основного принципа работы механизма обнаружения служб Dubbo:
Обнаружение службы включает в себя три роли: поставщик, потребитель и реестр. Среди них экземпляр поставщика Dubbo регистрирует URL-адрес в реестре, а реестр отвечает за агрегирование данных. Потребители Dubbo читают список адресов из реестра и подписываются на изменения. , при каждом изменении списка адресов реестр уведомляет все подписанные экземпляры потребителей о последнем списке.
Dubbo абстрагирует набор моделей управления микросервисами и выпускает соответствующие официальные реализации.Управление сервисами может помочь упростить разработку, эксплуатацию и обслуживание микросервисов, позволяя разработчикам больше сосредоточиться на самом микросервисном бизнесе.
Абстракция управления услугами
Ниже показано определение основных функций управления услугами Dubbo.
- обнаружение адреса
Обнаружение службы Dubbo имеет преимущества высокой производительности, поддержки крупномасштабных кластеров и настройки метаданных на уровне службы. По умолчанию он предоставляет Nacos, Zookeeper, Consul и другие адаптации реестра. Он подключается к моделям Spring Cloud и Kubernetes Service и поддерживает пользовательские расширения.
- Балансировка нагрузки
По умолчанию Dubbo предоставляет такие политики, как взвешенный случайный выбор, взвешенный циклический перебор, сначала наименее активные запросы, сначала самое короткое время ответа, последовательное хеширование и адаптивная загрузка.
- маршрутизация трафика
Dubbo поддерживает ряд правил трафика для управления распределением трафика и поведением вызовов службы.На основе этих правил пропорциональное распределение трафика на основе веса, проверка оттенков серого, канареечный выпуск, маршрутизация в соответствии с параметрами запроса, приоритет в одном регионе, конфигурация тайм-аута, Такие возможности, как повторная попытка, текущий предел и переход на более раннюю версию.
- отслеживание ссылок
Dubbo официально предоставляет полную поддержку отслеживания ссылок для Tracing, адаптируя OpenTelemetry, и пользователи могут получить доступ к продуктам, поддерживающим стандарт OpenTelemetry, таким как Skywalking, Zipkin и т. д. Кроме того, многие сообщества, такие как Skywalking, Zipkin и т. д., также предоставляют адаптации Dubbo на официальном сайте.
- Наблюдаемость
Инстансы Dubbo сообщают QPS, RT, время запросов, процент успешных попыток, время исключений и другие многомерные наблюдаемые индикаторы через Prometheus, чтобы помочь понять статус работы службы и помочь реализовать визуальное отображение индикаторов данных через доступ к Grafana и консоли администратора.
Экосистема управления услугами Dubbo также обеспечивает поддержку адаптации для таких сценариев, как шлюз API, текущее ограничение и переход на более раннюю версию, согласованность данных, аутентификация и аутентификация.
Даббо Админ
Консоль администратора обеспечивает визуальное представление кластера Dubbo, через администратора вы можете выполнять почти все управление и контроль над кластером.
- Запросить статус службы, приложения или машины
- Создание проектов, тестирование услуг, документооборот и т. д.
- Просмотр трафика кластера в режиме реального времени, обнаружение ненормальных проблем и т. д.
- Выдача правил управления трафиком, таких как распределение коэффициента трафика и маршрутизация параметров
сервисная сетка
Подключите Dubbo к системам управления сетью обслуживания, таким как Istio.
8. Экология микросервисов
Сообщество Dubbo и многие превосходные проекты с открытым исходным кодом установили богатую экологическую поддержку микросервисов вокруг Dubbo, что позволяет разработчикам выбирать Dubbo в качестве среды разработки с первого дня, не беспокоясь о последующих требованиях к управлению сервисом.Dubbo поддерживает все распространенные проблемы. решения класса.
В следующей таблице показано состояние поддержки экологических компонентов на основе статистики последней версии Dubbo Java 3.2.x, и она будет постоянно обновляться в соответствии с ходом разработки. При этом комплектность компонентов, поддерживаемых каждым языком, будет различаться, подробнее см. подробное описание в справочном руководстве каждого языка.
================================
Если статья была вам полезна, пожалуйста, не забудьте добавить внимание и поставить лайк!