Giter VIP home page Giter VIP logo

microservice_architecture's Introduction

Микросервисная архитектура

Основано на книге: Микросервисы. "Паттерны разработки и рефакторинга" - Ричардсон Крис.

Часть 1

Масштабирование
    Способы масштабирования веб-приложений
    Масштабирование по оси Х (горизонтальное)
    Масштабирование по оси Z (запросы в зависимости от атрибутов)
    Масштабирование по оси Y (разбивка на разные сервисы, с разными функциями)

Часть 2

Архитектура, сравнение, связанность
    Сравнение микросервисов и SOA
    Пример слабой связанности и развертываемости микросервисов
    Пример шестигранной(гексогональной) архитектуры
    Подробный пример микросервисной архитектуры
    Типы запросов в микросервисах: команды и запросы

Часть 3

Межпроцессное взаимодействие и их типы
    REST

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

    gRPC

    Это фреймворк для написания многоязыч­ных клиентов и серверов (см. ru.Wikipedia.org/wiki/Удалённый-ВызоВ-Процедур). gRPC представляет собой двоичный протокол на основе сообщений. Как вы помните из обсуждения двоичных форматов, это означает, что проектирование сервиса должно начинаться с его API. API в gRPC описывается с помощью языка IDL на основе Protocol Buffers — многоязычного механизма сериализации структурированных данных от компании Google.

    Взаимодействие с помощью асинхронного обмена сообщениями (брокеры сообщений)
      Реализация синхронных и асинхронных запросов/ответов
      Сравнение взаимодействия на прямую и через брокер сообщений

Часть 4

Восстановление и обнаружение
    Восстановление после отказа сервиса
    Обнаружение сервисов на уровне приложения Смысл: Сетевое местоположение назначается экземплярам сервисов динамически. Более того, набор этих экземпляров постоянно меняется из-за автоматического масшта­ бирования, отказов и обновлений. Из-за этого ваш клиент должен использовать обнаружение сервисов.
    Применение шаблонов обнаружения сервисов, предоставляемых платформой

Часть 5

Управление транзакциями в микросервисной архитектуре
    Операция createOrder() обновляет данные в нескольких сервисах
    Пример повествования: создание заказа
    Повествования, основанные на хореографии Хореография — это один из способов реализации повествований. Она не предусма­ тривает центрального координатора, который выдает участникам команды. Вместо этого участники подписываются на события друг друга и реагируют соответству­ ющим образом.
    Повествования на основе оркестрации Оркестрация — это еще один способ реализации повествований. Она подразумевает определение класса-оркестратора, единственной задачей которого является рассыл­ ка инструкций участникам. Оркестратор взаимодействует с участниками в стиле «команда/асинхронный ответ».
    Моделирование оркестраторов повествований в виде конечных автоматов Конечный автомат — это хорошая модель для оркестратора повествования. Он со­ стоит из набора состояний и переходов между ними, которые инициируются с по­ мощью событий. У каждого перехода может быть какое-то действие, которое в кон­ тексте повествования означает вызов участника.
    Пример архитектуры сервиса Order и его повествований
    Фреймворк Eventuate Tram Saga для создания повествований

Часть 6

Шаблоны организации бизнес-логики
    Проектирование бизнес-логики с помощью шаблона «Сценарий транзакции»
    Проектирование бизнес-логики с помощью шаблона «Доменная модель»
    Шаблон "Агрегат" Агрегат — это кластер доменных объектов, с которыми можно обращаться как с еди­ ным целым. Он состоит из корневой сущности и иногда одной или нескольких сущ­ ностей и объектов значений.
    Правила для агрегатов
    • Правило 1. Ссылайтесь только на корень агрегата Оно требует, чтобы корневая сущность была единственной частью агрегата, на которую могут ссылаться внешние классы. Для обновления агрегата клиенту необходимо вызвать метод из его корня.
    • Правило 2. Межагрегатные ссылки должны применять первичные ключи I [равило состоит в том, что агрегаты ссылаются друг на друга по уникальному зна­ чению, например по первичному ключу, а не по объектным ссылкам.
    • Правило 3. Одна транзакция создает или обновляет один агрегат транзакция может создать или обновить только один агрегат
    Проектирование бизнес-логики с помощью агрегатов
    Бизнес-логика сервиса Kitchen (пример)
    Бизнес-логика сервиса Order (пример)

Часть 7

Разработка бизнес-логики с порождением событий
    Шаблон "Порождение событий" Сохраняет агрегат в виде последовательности доменных событий, которые представляют изменения состояния: см https://microservices.io/patterns/data/event-sourcing
    Развитие доменных событий

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

    Реализация хранилища событий

    Хранилище событий — это гибрид базы данных и брокера сообщений. Оно ведет себя как БД, потому что у него есть API для вставки и извлечения событий агрегата по первичному ключу. Но оно похоже и на брокер сообщений, потому что у него есть API, который позволяет подписываться на события.

Часть 8

Реализация запросов в микросервисной архитектуре
    Выполнение запросов с помощью объединения API

    Операция findOrder() извлекает заказ по его первичному ключу. Она принимает orderld в качестве параметра и возвращает объект OrderDetails, который содержит информацию о заказе

    Обзор шаблона «Объединение API»
    Пример реализации объеденения API
    Обзор CQRS

    CQRS расшифровывается как разделение ответственности командных запросов. Как следует из названия, этот шаблон предназначен для разделения обязанностей.

    QRS и сервисы, предназначенные только для запросов

Часть 9

Тестирование микросервисов
    Схема автоматического теста
    Типы тестов
    • модульные тесты, которые тестируют небольшую часть сервиса, такую как класс;
    • интеграционные тесты, которые проверяют, может ли сервис взаимодействовать с инфраструктурными компонентами, такими как базы данных и другие сервисы приложения;
    • компонентные тесты — приемочные тесты для отдельного сервиса;
    • сквозные тесты — приемочные тесты для целого приложения.
    Пирамида тестов

microservice_architecture's People

Contributors

gecsagen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

drwalther

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.