Познакомьтесь с проектированием микросервисной архитектуры и общими компонентами в одной статье.
Познакомьтесь с проектированием микросервисной архитектуры и общими компонентами в одной статье.

Предисловие

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

BigDiagram

Давайте покажем полную картину микросервисной архитектуры из большой картины.

Во-первых, для входа трафика требуется обратный прокси-сервер (например, Nginx).

Обратный прокси контролируется API-шлюзом и распространяется на каждый микросервис в кластере микросервисов.

API-шлюз распределения трафика основан на маршрутизации,Маршрутизация осуществляется на основе списка Служить Конфигурация,Обычно существует система обнаружения и регистрации, которая помогает поддерживать информацию о состоянии микросервисов в кластере.

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

Для того, чтобы лучше осуществлять Служить управление, трассировка. ссылок、бревносистема、мониторсистема В микросервисной архитектуре Это тоже незаменимо。

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

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

Портал трафика | Обратный прокси

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

  1. Балансировка нагрузки: обратный прокси Может распределять запросы на несколько серверовмикросервисы Пример,Внедрить балансировку нагрузки,Улучшение масштабируемости и производительности системы.
  2. Завершение SSL: обратный прокси может обрабатывать входящий HTTPS-трафик,Отвечает за завершение SSL/TLS.,Расшифровать и зашифровать данные,Уменьшите нагрузку на серверные микросервисы.
  3. Улучшения безопасности: обратный прокси может действовать как барьер безопасности,Выполнять аутентификацию, авторизацию и контроль доступа,Защитите микросервисы от вредоносных атак.
  4. Маршрут запроса: обратный Прокси-сервер может маршрутизировать трафик к различным экземплярам микросервисов на основе запрошенного контента, пути или других правил для достижения индивидуальной обработки запросов.
  5. Служба статических ресурсов: обратный прокси Может использоваться для обслуживания статических файлов.Служить,Например, изображения, файлы CSS и JavaScript.,Уменьшите нагрузку на серверную часть.

Ниже приведены распространенные обратные прокси:

  1. Nginx: Nginx — это высокопроизводительный вариант прокси Служитьустройство,Широко используется для балансировки нагрузки.、прекращение SSL、Статические ресурсы Служить и т.д. Он поддерживает гибкую конфигурацию и высокопараллельную обработку запросов.
  2. HAProxy: HAProxy — это высокопроизводительный балансировщик нагрузки и прокси-инструмент, подходящий для обработки крупномасштабных одновременных соединений. Он поддерживает несколько алгоритмов балансировки нагрузки и механизмов проверки работоспособности.
  3. Envoy: Envoy — это программа с открытым исходным кодом, поддерживаемая CNCF. прокси и пограничные прокси, предназначенные для поддержки архитектуры микросервисов. Он обеспечивает высокую степень масштабируемости, гибкости и оптимизации производительности.

API-шлюз

В микросервисной архитектуре,API-шлюз выступает в качестве точки входа в систему,Часто объединяют в один компонент с обратной прокси.,Отвечает за управление и обработку внешних запросов. К его основным функциям относятся:

  1. Единый вход: Обеспечьте единый вход API,Заставьте клиента просто общаться с API-шлюзом,без необходимости напрямую взаимодействовать с отдельными микросервисами,Упрощенная коммуникация между клиентом и микросервисами.
  2. Маршрутизация с Балансировкой нагрузки: По запрошенному пути、Параметры или заголовки будутпотокдорога Зависит отсоответствующемуизмикросервисы Пример,Реализуйте распределение запросов и балансировку нагрузки.,Обеспечить стабильность и производительность системы.
  3. Преобразование протокола: Обработка преобразования между различными протоколами,Позволяет системе поддерживать несколько протоколов связи.,Например, HTTP, WebSocket и т. д.
  4. Аутентификация и авторизация: Управление аутентификацией и авторизацией пользователей,Убедитесь, что только авторизованные пользователи имеют доступ к определенным микросервисам.,Повышение безопасности системы.
  5. Запросить конвертацию: Преобразование и изменение запросов,Приведите его в соответствие с ожидаемым форматом и протоколом серверных микросервисов.,Тем самым уменьшая связь между микросервисами.

Общий API-шлюз:

  1. Zuul: API-шлюз, разработанный Netflix, с использованием Spring Интеграция с облаком обеспечивает маршрутизацию, балансировку нагрузки, безопасность и другие функции.
  2. Kong: API-шлюз с открытым исходным кодом и управление микросервисами,Поддержка подключаемой архитектуры,Доступно дляпотокконтроль、Сертификация、бревно записи и т.п.
  3. Apigee: Платформа управления облачными API, запущенная Google, обеспечивает комплексные функции управления API, анализа и безопасности и подходит для крупномасштабных задач управления API.
  4. AWS API Gateway: Хостинг от Amazon Служить,Поддержка создания, публикации и управления API.,Интегрируйте другие ресурсы в экосистему AWS.
  5. Spring Cloud Gateway: На основе весны CloudизAPI-шлюз,Легкий и гибкий,Применяется к микросервисной архитектуре.

Эти инструменты API-шлюза помогают упростить микросервисные системы, обеспечивая централизованный способ управления и контроля трафика и доступа к микросервисам.

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

Регистрация и обнаружение услугкомпонентыизэффект:

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

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

общийиз Регистрация и обнаружение услугкомпоненты:

  1. Consul: Регистрация от HashiCorp и обнаружение услугинструмент,Поддерживает несколько центров обработки данных, проверку работоспособности и другие функции.,Высоконадежный компонент распределенной системы.
  2. Eureka: Регистрация с открытым исходным кодом Netflix и обнаружение Компонент услуг, который может реализовать автоматическую регистрацию и обнаружение микросервисов посредством простой конфигурации, — это Spring. Часть облачной экосистемы.
  3. etcd: Распределенное хранилище ключей-значений с открытым исходным кодом, поддерживаемое командой CoreOS, а также используемое для регистрации. и обнаружение услуги, также доступны в виде распределенных услуг конфигурация и основа распределенных блокировок.
  4. Zookeeper: ApacheОткрытый исходный кодиз Распределенная координация Служить,Обеспечивает высокую доступность и согласованность,Он широко используется при регистрации, управлении конфигурацией и других сценариях.
  5. Nacos: Alibaba с открытым исходным кодом Служить открытие, Центр конфигурацииидинамичныйDNSсистема,Поддерживает мультисредную конфигурацию, проверку работоспособности и другие функции.,Это комплексное решение.

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

Центр конфигурации

В микросервисной архитектуре,Центр конфигурация — это механизм централизованного управления и динамического обновления информации о конфигурации приложения. К его основным функциям относятся:

  1. Централизованно управляемая конфигурация: Обеспечить централизованноеиз Местоположение приходитуправлятьмикросервисысистемаиз Конфигурацияинформация,Избегайте распространения Конфигурации среди различных микросервисов.,Делает конфигурацию более удобной и последовательной.
  2. Динамически обновлять конфигурацию: поддерживатьдинамичныйвозобновлять Конфигурация,Не нужно перезапускать Служить, чтобы применить новую конфигурацию.,Повысить гибкость и ремонтопригодность системы.
  3. Контроль версий: поддерживать Конфигурацияиз版本контроль,Возможность отслеживать историю изменений Конфигурации.,Удобен для отката и управления версиями.
  4. Управление безопасностью: обеспечить безопасностьиз Конфигурациямеханизм управления,Обеспечьте защиту конфиденциальной информации, такой как пароли базы данных.,И позволяет правильно контролировать конфигурацию в различных средах.
  5. Живой монитор: Обеспечить в режиме реального временимонитористатистика,Вы можете узнать информацию о конфигурации, используемую в настоящее время каждым микросервисом.,Удобен для эксплуатации, обслуживания и оптимизации производительности.

Общие компоненты конфигурации Центра:

  1. Spring Cloud Config: На основе весны Cloudиз Центр конфигурации,Поддерживает несколько серверных хранилищ,Обеспечивает централизованное управление конфигурацией и контроль версий.
  2. Consul: Инструменты с открытым исходным кодом, предоставляемые HashiCorp в дополнение к регистрации. и обнаружение услуги, также предлагает Центр Функция конфигурации поддерживает динамическое обновление Конфигурации.
  3. Nacos: Alibaba с открытым исходным кодом Центр Конфигурировать и Служить компонентам обнаружения, поддерживать многоязычную конфигурацию, мультисредовую конфигурацию и динамические обновления конфигурации.
  4. etcd: Распределенное хранилище значений ключей, поддерживаемое командой CoreOS, которое можно использовать в качестве центра. конфигурации, поддерживает управление версиями и динамические обновления.
  5. Apollo: Ctrip с открытым исходным кодом Центр конфигурации, поддерживает распределенное управление конфигурацией, публикацию в оттенках серого и стандартизированный контроль разрешений.

Эти Центр конфигурациикомпоненты Помогает упроститьмикросервисысистемаиз Конфигурацияуправлять,Предоставляет централизованные и динамические решения по управлению конфигурацией.,Делаем систему более гибкой, ремонтопригодной и безопасной.

трассировка ссылок

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

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

Часто используемые компоненты трассировки ссылок и их введение:

  1. Zipkin: Распределенная трассировка с открытым исходным кодом ссылоксистема,Отслеживая и собирая пути выполнения запросов,Предоставляет визуальные графики вызовов и данные о времени.
  2. Jaeger: Убер Технологии Open Source трассировка ссылокинструмент,Поддерживает несколько языков и несколько серверов хранения.,Обеспечивает отчеты в режиме реального времени и устранение неполадок в распределенной системе.
  3. SkyWalking: Распределенный APM (управление производительностью приложений) с открытым исходным кодом, разработанный Apache Foundation, обеспечивающий сквозной мониторинг производительности и трассировку. ссылок。

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

бревно

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

в то же время,Благодаря централизованному управлению и анализу микросервисовбревно,Может достичь глобального монитора производительности и оптимизации системы.,Помогите разработчикам быстро обнаружить проблемы и оптимизировать Служить,И улучшить стабильность и ремонтопригодность всей системы микросервисов.

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

Текущей коммуникативной бревносистемой является ELK:

  1. Logstash: Logstash отвечает за сбор, фильтрацию и пересылку бревно. Он может собирать краткие данные из различных источников, таких как файлы, в свою очередь сообщений、База данных и т. д.,Затем данные фильтруются и обрабатываются.,Окончательный результат отправляется в Elasticsearch для хранения и индексирования.
  2. Elasticsearch: Elasticsearchэто распределенная поисковая система,Используется для хранения, индексирования и поиска кратких данных. Logstash отправляет обработанные данные в кластер Elasticsearch.,Данные распределяются и хранятся на нескольких узлах.,для горизонтальной масштабируемости и высокопроизводительного поиска.
  3. Kibana: Kibanaиспользуется для визуализацииианализироватьбревноданныеизинтерфейс。он соединяется сElasticsearch,Позволяет пользователям создавать информационные панели и запрашивать краткие данные через графический интерфейс.,и создавать различные диаграммы и отчеты,Для того, чтобы отслеживать и анализировать бревно информацию более интуитивно.

монитор

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

К общим мониторсистемам относятся:

  1. Prometheus: 一个Открытый исходный кодизмониторитревогаинструмент,Особенно подходит для контейнерных сред,Поддерживает многомерные модели данных и мощные языки запросов.
  2. Zabbix: Открытый исходный кодизсетьмониторпрограммное обеспечение,Поддержка нескольких методов мониторинга,Включая SNMP, JMX, IPMI и т. д.,Имеет мощные функции сигнализации и уведомления.
  3. ELK Stack: Зависит отElasticsearch、LogstashиKibanaкомпозиция,В основном используется для бревномонитора и анализа.,Также доступно для мониторинга производительности приложений в среде микросервисов.

Планирование задач

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

Система планирования задач может обеспечить дублирование в системе.、Запланированные задачи можно выполнить вовремя、выполнять в упорядоченном порядке。проходить Планированиеи Выполнять запланированные задачи,система позволяет автоматизировать обработку данных, создание отчетов или выполнение задач по очистке,Повышение эффективности и снижение трудозатрат,и обеспечивать точность и своевременность выполнения задач. Это незаменимо для распространенных сценариев, таких как периодическая обработка данных, создание запланированных отчетов и очистка.,Способствуют стабильной работе и эффективному управлению системой.

О сроках Планирование задачиз Больше контента,Можно обратиться к**Введение в распределенные запланированные задачи**

Постоянное хранилище | реляционная база данных

Большинству систем требуется постоянное хранение и хранение реляционных данных.

Общие реляционные базы данных включают MySQL, MSSQL, OracleDB и т. д.

Распределенный кеш |

Роль распределенного кэша в системе заключается в повышении производительности доступа к данным и снижении нагрузки на базу данных. Сохраняя «горячие» данные в памяти, можно добиться быстрого чтения и ответа, тем самым улучшая производительность и масштабируемость системы. Общие компоненты распределенного кэша включают:

  1. Redis: Высокопроизводительная система хранения ключей и значений с открытым исходным кодом, поддерживает богатые структуры данных и мощные возможности кэширования, часто используется для кэширования, хранения сеансов и поворота. сообщения и другие сцены.
  2. Memcached: Система кэширования объектов с распределенной памятью,Сохраняя данные в памяти,Обеспечивает быстрое хранение и извлечение пар ключ-значение.,Подходит для сценариев с высоким уровнем одновременного чтения.

Файловое, объектное хранилище

Более сложные бизнес-системы часто предполагают хранение файлов, изображений и прочего. Компонент «Материалы. Файловое, объектное хранилище» в основном используется для постоянного хранения большого количества файлов и данных и подходит для организации и извлечения файловой системы.

  1. Hadoop Distributed File System (HDFS): Распределенная файловая система для хранения файлов, поддерживающая крупномасштабное хранение и обработку данных.
  2. Amazon S3: Предоставлено Amazonизхранилище объектов Служить,Через простой интерфейс RESTful,Поддерживает хранение и извлечение огромных объемов данных.
  3. Google Cloud Storage: Предоставлено Google Cloudизхранилище объектов Служить,Высокая доступность и долговечность,Подходит для различных нужд хранения данных.
  4. Tencent Cloud COS: Доступно в облаке Tencent.изхранилище объектов Служить。

Индексный склад |

Роль хранилища индексов в бизнес-системе заключается в обеспечении эффективного поиска данных и функций запроса. Построение структуры индекса ускоряет операцию поиска данных и повышает производительность запросов в системе. Общие индексные склады включают:

  1. Elasticsearch: Поисковая система с открытым исходным кодом,Поддерживает полнотекстовый поиск в реальном времени, распределенный поиск и сложные запросы.,Он широко используется в таких сценариях, как бревный анализ и полнотекстовый поиск.
  2. Apache Solr: Еще одна поисковая платформа с открытым исходным кодом, построенная на Lucene, предоставляет мощные функции поиска и анализа и подходит для поиска и получения информации на уровне предприятия.

Эти индексные хранилища обеспечивают быстрые и надежные функции поиска и извлечения данных для бизнес-систем, удовлетворяя потребности в эффективных запросах крупномасштабных наборов данных.

очередь сообщений

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

  1. Apache Kafka: Высокая пропускная способность, распределенная очередь сообщенийсистема, широко используемая в обработке потоков данных в реальном времени и в событийно-ориентированной архитектуре.
  2. RabbitMQ: Программное обеспечение брокера сообщений с открытым исходным кодом обеспечивает гибкий режим обмена сообщениями и поддерживает надежный обмен сообщениями и несколько протоколов обмена сообщениями.

Эта система сообщений обеспечивает надежный механизм обмена сообщениями для бизнес-системы.,Обеспечить совместную работу различных частей системы,Улучшить общую масштабируемость и ремонтопригодность системы.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose