Познакомьтесь с проектированием микросервисной архитектуры и общими компонентами в одной статье.
Познакомьтесь с проектированием микросервисной архитектуры и общими компонентами в одной статье.
Предисловие
В современной быстро развивающейся области разработки программного обеспечения микросервисная архитектура стала одним из ключевых методов построения гибких и масштабируемых систем. Эта статья поможет читателям глубже понять основные идеи микросервисной архитектуры и познакомит их с общими компонентами, необходимыми для построения этой архитектуры, а также предоставит всесторонние рекомендации и знания для разработчиков.
BigDiagram
Давайте покажем полную картину микросервисной архитектуры из большой картины.
Во-первых, для входа трафика требуется обратный прокси-сервер (например, Nginx).
Обратный прокси контролируется API-шлюзом и распространяется на каждый микросервис в кластере микросервисов.
API-шлюз распределения трафика основан на маршрутизации,Маршрутизация осуществляется на основе списка Служить Конфигурация,Обычно существует система обнаружения и регистрации, которая помогает поддерживать информацию о состоянии микросервисов в кластере.
Среда выполнения микросервисов обычно требует получения Служить Конфигурация,В микросервисной у архитектуры обычно есть удаленный Центр конфигурациицентрализованно управлять Конфигурация。
Для того, чтобы лучше осуществлять Служить управление, трассировка. ссылок、бревносистема、мониторсистема В микросервисной архитектуре Это тоже незаменимо。
Некоторым микросервиснымсистемам также требуется система планирования задач для выполнения задач, которые необходимо выполнять регулярно.
кроме того,Работа системы часто требует хранения и извлечения данных.,В микросервисной архитектуре,Часто приходится использовать реляционную база данных、Распределенный кеш, объектное хранилище, индексная база данных, очередь Компоненты/промежуточное ПО для сообщений
Портал трафика | Обратный прокси
В микросервисной архитектуре обратный прокси-сервер (например, Nginx) часто используется для входа трафика. Обратный прокси-сервер может выполнять следующие функции:
Балансировка нагрузки: обратный прокси Может распределять запросы на несколько серверовмикросервисы Пример,Внедрить балансировку нагрузки,Улучшение масштабируемости и производительности системы.
Завершение SSL: обратный прокси может обрабатывать входящий HTTPS-трафик,Отвечает за завершение SSL/TLS.,Расшифровать и зашифровать данные,Уменьшите нагрузку на серверные микросервисы.
Улучшения безопасности: обратный прокси может действовать как барьер безопасности,Выполнять аутентификацию, авторизацию и контроль доступа,Защитите микросервисы от вредоносных атак.
Маршрут запроса: обратный Прокси-сервер может маршрутизировать трафик к различным экземплярам микросервисов на основе запрошенного контента, пути или других правил для достижения индивидуальной обработки запросов.
Служба статических ресурсов: обратный прокси Может использоваться для обслуживания статических файлов.Служить,Например, изображения, файлы CSS и JavaScript.,Уменьшите нагрузку на серверную часть.
Ниже приведены распространенные обратные прокси:
Nginx: Nginx — это высокопроизводительный вариант прокси Служитьустройство,Широко используется для балансировки нагрузки.、прекращение SSL、Статические ресурсы Служить и т.д. Он поддерживает гибкую конфигурацию и высокопараллельную обработку запросов.
HAProxy: HAProxy — это высокопроизводительный балансировщик нагрузки и прокси-инструмент, подходящий для обработки крупномасштабных одновременных соединений. Он поддерживает несколько алгоритмов балансировки нагрузки и механизмов проверки работоспособности.
Envoy: Envoy — это программа с открытым исходным кодом, поддерживаемая CNCF. прокси и пограничные прокси, предназначенные для поддержки архитектуры микросервисов. Он обеспечивает высокую степень масштабируемости, гибкости и оптимизации производительности.
API-шлюз
В микросервисной архитектуре,API-шлюз выступает в качестве точки входа в систему,Часто объединяют в один компонент с обратной прокси.,Отвечает за управление и обработку внешних запросов. К его основным функциям относятся:
Единый вход: Обеспечьте единый вход API,Заставьте клиента просто общаться с API-шлюзом,без необходимости напрямую взаимодействовать с отдельными микросервисами,Упрощенная коммуникация между клиентом и микросервисами.
Маршрутизация с Балансировкой нагрузки: По запрошенному пути、Параметры или заголовки будутпотокдорога Зависит отсоответствующемуизмикросервисы Пример,Реализуйте распределение запросов и балансировку нагрузки.,Обеспечить стабильность и производительность системы.
Преобразование протокола: Обработка преобразования между различными протоколами,Позволяет системе поддерживать несколько протоколов связи.,Например, HTTP, WebSocket и т. д.
Аутентификация и авторизация: Управление аутентификацией и авторизацией пользователей,Убедитесь, что только авторизованные пользователи имеют доступ к определенным микросервисам.,Повышение безопасности системы.
Запросить конвертацию: Преобразование и изменение запросов,Приведите его в соответствие с ожидаемым форматом и протоколом серверных микросервисов.,Тем самым уменьшая связь между микросервисами.
Общий API-шлюз:
Zuul: API-шлюз, разработанный Netflix, с использованием Spring Интеграция с облаком обеспечивает маршрутизацию, балансировку нагрузки, безопасность и другие функции.
Kong: API-шлюз с открытым исходным кодом и управление микросервисами,Поддержка подключаемой архитектуры,Доступно дляпотокконтроль、Сертификация、бревно записи и т.п.
Apigee: Платформа управления облачными API, запущенная Google, обеспечивает комплексные функции управления API, анализа и безопасности и подходит для крупномасштабных задач управления API.
AWS API Gateway: Хостинг от Amazon Служить,Поддержка создания, публикации и управления API.,Интегрируйте другие ресурсы в экосистему AWS.
Spring Cloud Gateway: На основе весны CloudизAPI-шлюз,Легкий и гибкий,Применяется к микросервисной архитектуре.
Эти инструменты API-шлюза помогают упростить микросервисные системы, обеспечивая централизованный способ управления и контроля трафика и доступа к микросервисам.
Регистрация и обнаружение услуг
Регистрация и обнаружение услугкомпонентыизэффект:
В микросервисной архитектуре,Регистрация и обнаружение услуг является ключевым механизмом.,Используется для управления и поддержки динамических изменений экземпляров микросервисов. К его основным функциям относятся:
Регистрация услуги: микросервисы Пример При запуске,Зарегистрируйте свою информацию (например, IP-адрес, номер порта, состояние здоровья и т. д.) в регистрационном центре Служить.,Это позволяет регистрационному центру Служить осознать существование Служить.
Обнаружение службы: Клиент обращается в регистрационный центр Служить,Получить список доступных экземпляров Служить,Это обеспечивает динамическое обнаружение и связь с необходимыми микросервисами.
динамичный Балансировка нагрузки: проходить Служить Обнаружить,Динамическая балансировка нагрузки может быть достигнута,Распределите запросы на несколько доступных экземпляров микросервисов.,Улучшение масштабируемости и производительности системы.
Поиск неисправностей: Регистрация и обнаружение услуг Компоненты могут контролироватьмикросервисы Примеризсостояние здоровья,Когда экземпляр выходит из строя или переходит в автономный режим,Автоматически обновлять центр регистрации Служить,Убедитесь, что клиенты не получают доступ к недоступной Служить.
Адаптируемое расширение: Поддерживает динамическое расширение и сокращение экземпляров микросервисов, позволяя системе адаптивно регулировать размер Служить в соответствии с потребностями.
общийиз Регистрация и обнаружение услугкомпоненты:
Consul: Регистрация от HashiCorp и обнаружение услугинструмент,Поддерживает несколько центров обработки данных, проверку работоспособности и другие функции.,Высоконадежный компонент распределенной системы.
Eureka: Регистрация с открытым исходным кодом Netflix и обнаружение Компонент услуг, который может реализовать автоматическую регистрацию и обнаружение микросервисов посредством простой конфигурации, — это Spring. Часть облачной экосистемы.
etcd: Распределенное хранилище ключей-значений с открытым исходным кодом, поддерживаемое командой CoreOS, а также используемое для регистрации. и обнаружение услуги, также доступны в виде распределенных услуг конфигурация и основа распределенных блокировок.
Zookeeper: ApacheОткрытый исходный кодиз Распределенная координация Служить,Обеспечивает высокую доступность и согласованность,Он широко используется при регистрации, управлении конфигурацией и других сценариях.
Nacos: Alibaba с открытым исходным кодом Служить открытие, Центр конфигурацииидинамичныйDNSсистема,Поддерживает мультисредную конфигурацию, проверку работоспособности и другие функции.,Это комплексное решение.
Эти компоненты обеспечивают автоматическую регистрацию, обнаружение и координацию служб в микросервисной архитектуре, обеспечивая критически важную поддержку устойчивости и надежности системы.
Центр конфигурации
В микросервисной архитектуре,Центр конфигурация — это механизм централизованного управления и динамического обновления информации о конфигурации приложения. К его основным функциям относятся:
Централизованно управляемая конфигурация: Обеспечить централизованноеиз Местоположение приходитуправлятьмикросервисысистемаиз Конфигурацияинформация,Избегайте распространения Конфигурации среди различных микросервисов.,Делает конфигурацию более удобной и последовательной.
Динамически обновлять конфигурацию: поддерживатьдинамичныйвозобновлять Конфигурация,Не нужно перезапускать Служить, чтобы применить новую конфигурацию.,Повысить гибкость и ремонтопригодность системы.
Контроль версий: поддерживать Конфигурацияиз版本контроль,Возможность отслеживать историю изменений Конфигурации.,Удобен для отката и управления версиями.
Управление безопасностью: обеспечить безопасностьиз Конфигурациямеханизм управления,Обеспечьте защиту конфиденциальной информации, такой как пароли базы данных.,И позволяет правильно контролировать конфигурацию в различных средах.
Живой монитор: Обеспечить в режиме реального временимонитористатистика,Вы можете узнать информацию о конфигурации, используемую в настоящее время каждым микросервисом.,Удобен для эксплуатации, обслуживания и оптимизации производительности.
Общие компоненты конфигурации Центра:
Spring Cloud Config: На основе весны Cloudиз Центр конфигурации,Поддерживает несколько серверных хранилищ,Обеспечивает централизованное управление конфигурацией и контроль версий.
Consul: Инструменты с открытым исходным кодом, предоставляемые HashiCorp в дополнение к регистрации. и обнаружение услуги, также предлагает Центр Функция конфигурации поддерживает динамическое обновление Конфигурации.
Nacos: Alibaba с открытым исходным кодом Центр Конфигурировать и Служить компонентам обнаружения, поддерживать многоязычную конфигурацию, мультисредовую конфигурацию и динамические обновления конфигурации.
etcd: Распределенное хранилище значений ключей, поддерживаемое командой CoreOS, которое можно использовать в качестве центра. конфигурации, поддерживает управление версиями и динамические обновления.
Apollo: Ctrip с открытым исходным кодом Центр конфигурации, поддерживает распределенное управление конфигурацией, публикацию в оттенках серого и стандартизированный контроль разрешений.
Эти Центр конфигурациикомпоненты Помогает упроститьмикросервисысистемаиз Конфигурацияуправлять,Предоставляет централизованные и динамические решения по управлению конфигурацией.,Делаем систему более гибкой, ремонтопригодной и безопасной.
трассировка ссылок
Трассировка ссылок — это технология, используемая для мониторинга и анализа пути потока запросов между различными службами в распределенной системе. В ее функции входит:
Поиск неисправностей: Это может помочь быстро обнаружить неисправности и проблемы с производительностью в распределенной системе и сократить время устранения неполадок.
Оптимизация производительности: Обеспечивает визуализацию путей выполнения запросов, что помогает оптимизировать производительность и выявить потенциальные узкие места в производительности.
Отслеживание транзакций: Весь процесс выполнения распределенных транзакций можно отслеживать, чтобы обеспечить согласованность и надежность транзакций.
мониторанализировать: По трассировке данные обрабатываются и анализируются для предоставления показателей эффективности в реальном времени и отчетов визуального анализа ссылок.
Пользовательский опыт: Улучшите качество обслуживания конечных пользователей,Понимая путь запроса,Обеспечить быстрое реагирование системы на запросы пользователей.
Часто используемые компоненты трассировки ссылок и их введение:
Zipkin: Распределенная трассировка с открытым исходным кодом ссылоксистема,Отслеживая и собирая пути выполнения запросов,Предоставляет визуальные графики вызовов и данные о времени.
Jaeger: Убер Технологии Open Source трассировка ссылокинструмент,Поддерживает несколько языков и несколько серверов хранения.,Обеспечивает отчеты в режиме реального времени и устранение неполадок в распределенной системе.
SkyWalking: Распределенный APM (управление производительностью приложений) с открытым исходным кодом, разработанный Apache Foundation, обеспечивающий сквозной мониторинг производительности и трассировку. ссылок。
Эти компоненты трассировки ссылок помогают разработчикам и эксплуатационным группам лучше понимать распределенную систему и управлять ею, тем самым улучшая стабильность и производительность системы.
бревно
бревносистема В микросервисной Архитектура играет ключевую роль,Записывая рабочее состояние и информацию о взаимодействии каждого микросервиса в распределенной системе.,Предоставляет необходимые данные в режиме реального времени для устранения неполадок.
в то же время,Благодаря централизованному управлению и анализу микросервисовбревно,Может достичь глобального монитора производительности и оптимизации системы.,Помогите разработчикам быстро обнаружить проблемы и оптимизировать Служить,И улучшить стабильность и ремонтопригодность всей системы микросервисов.
бревносистема также может записывать путь запроса пользователя, нештатные ситуации и другую информацию.,Обеспечить поддержку поведенческого анализа и аудита безопасности.,Обеспечьте соответствие и безопасность архитектуры микросервисов.
Текущей коммуникативной бревносистемой является ELK:
Logstash: Logstash отвечает за сбор, фильтрацию и пересылку бревно. Он может собирать краткие данные из различных источников, таких как файлы, в свою очередь сообщений、База данных и т. д.,Затем данные фильтруются и обрабатываются.,Окончательный результат отправляется в Elasticsearch для хранения и индексирования.
Elasticsearch: Elasticsearchэто распределенная поисковая система,Используется для хранения, индексирования и поиска кратких данных. Logstash отправляет обработанные данные в кластер Elasticsearch.,Данные распределяются и хранятся на нескольких узлах.,для горизонтальной масштабируемости и высокопроизводительного поиска.
Kibana: Kibanaиспользуется для визуализацииианализироватьбревноданныеизинтерфейс。он соединяется сElasticsearch,Позволяет пользователям создавать информационные панели и запрашивать краткие данные через графический интерфейс.,и создавать различные диаграммы и отчеты,Для того, чтобы отслеживать и анализировать бревно информацию более интуитивно.
монитор
микросервисы мониторсистема — ключевой компонент в архитектуре микросервисов,Используется для мониторинга и оценки рабочего состояния системы в режиме реального времени. Собирая и анализируя показатели производительности микросервисов, частоту ошибок и краткие данные.,мониторсистема сможет вовремя обнаружить потенциальные проблемы,Обеспечьте быстрое обнаружение неисправностей и реагирование на них. Это позволяет команде иметь представление обо всей системе экологии микросервисов.,Оптимизация производительности,Обеспечить стабильность и надежность системы.
К общим мониторсистемам относятся:
Prometheus: 一个Открытый исходный кодизмониторитревогаинструмент,Особенно подходит для контейнерных сред,Поддерживает многомерные модели данных и мощные языки запросов.
Zabbix: Открытый исходный кодизсетьмониторпрограммное обеспечение,Поддержка нескольких методов мониторинга,Включая SNMP, JMX, IPMI и т. д.,Имеет мощные функции сигнализации и уведомления.
ELK Stack: Зависит отElasticsearch、LogstashиKibanaкомпозиция,В основном используется для бревномонитора и анализа.,Также доступно для мониторинга производительности приложений в среде микросервисов.
Планирование задач
Когда потребности бизнеса продолжают расти, приложениям часто приходится выполнять некоторые запланированные задачи для реализации бизнес-логики или системных функций.
Система планирования задач может обеспечить дублирование в системе.、Запланированные задачи можно выполнить вовремя、выполнять в упорядоченном порядке。проходить Планированиеи Выполнять запланированные задачи,система позволяет автоматизировать обработку данных, создание отчетов или выполнение задач по очистке,Повышение эффективности и снижение трудозатрат,и обеспечивать точность и своевременность выполнения задач. Это незаменимо для распространенных сценариев, таких как периодическая обработка данных, создание запланированных отчетов и очистка.,Способствуют стабильной работе и эффективному управлению системой.
Большинству систем требуется постоянное хранение и хранение реляционных данных.
Общие реляционные базы данных включают MySQL, MSSQL, OracleDB и т. д.
Распределенный кеш |
Роль распределенного кэша в системе заключается в повышении производительности доступа к данным и снижении нагрузки на базу данных. Сохраняя «горячие» данные в памяти, можно добиться быстрого чтения и ответа, тем самым улучшая производительность и масштабируемость системы. Общие компоненты распределенного кэша включают:
Redis: Высокопроизводительная система хранения ключей и значений с открытым исходным кодом, поддерживает богатые структуры данных и мощные возможности кэширования, часто используется для кэширования, хранения сеансов и поворота. сообщения и другие сцены.
Memcached: Система кэширования объектов с распределенной памятью,Сохраняя данные в памяти,Обеспечивает быстрое хранение и извлечение пар ключ-значение.,Подходит для сценариев с высоким уровнем одновременного чтения.
Файловое, объектное хранилище
Более сложные бизнес-системы часто предполагают хранение файлов, изображений и прочего. Компонент «Материалы. Файловое, объектное хранилище» в основном используется для постоянного хранения большого количества файлов и данных и подходит для организации и извлечения файловой системы.
Hadoop Distributed File System (HDFS): Распределенная файловая система для хранения файлов, поддерживающая крупномасштабное хранение и обработку данных.
Amazon S3: Предоставлено Amazonизхранилище объектов Служить,Через простой интерфейс RESTful,Поддерживает хранение и извлечение огромных объемов данных.
Google Cloud Storage: Предоставлено Google Cloudизхранилище объектов Служить,Высокая доступность и долговечность,Подходит для различных нужд хранения данных.
Tencent Cloud COS: Доступно в облаке Tencent.изхранилище объектов Служить。
Индексный склад |
Роль хранилища индексов в бизнес-системе заключается в обеспечении эффективного поиска данных и функций запроса. Построение структуры индекса ускоряет операцию поиска данных и повышает производительность запросов в системе. Общие индексные склады включают:
Elasticsearch: Поисковая система с открытым исходным кодом,Поддерживает полнотекстовый поиск в реальном времени, распределенный поиск и сложные запросы.,Он широко используется в таких сценариях, как бревный анализ и полнотекстовый поиск.
Apache Solr: Еще одна поисковая платформа с открытым исходным кодом, построенная на Lucene, предоставляет мощные функции поиска и анализа и подходит для поиска и получения информации на уровне предприятия.
Эти индексные хранилища обеспечивают быстрые и надежные функции поиска и извлечения данных для бизнес-систем, удовлетворяя потребности в эффективных запросах крупномасштабных наборов данных.
очередь сообщений
очередь Роль сообщений в бизнес-системе заключается в обеспечении асинхронной связи и развязки. Отправляя сообщения в очередь, различные компоненты или службы могут работать независимо, улучшая масштабируемость и надежность системы. Обычная очередь сообщенийвключать:
Apache Kafka: Высокая пропускная способность, распределенная очередь сообщенийсистема, широко используемая в обработке потоков данных в реальном времени и в событийно-ориентированной архитектуре.
RabbitMQ: Программное обеспечение брокера сообщений с открытым исходным кодом обеспечивает гибкий режим обмена сообщениями и поддерживает надежный обмен сообщениями и несколько протоколов обмена сообщениями.
Эта система сообщений обеспечивает надежный механизм обмена сообщениями для бизнес-системы.,Обеспечить совместную работу различных частей системы,Улучшить общую масштабируемость и ремонтопригодность системы.