экономный анализ исходного кода - проектирование архитектуры

Apache Thrift

предисловие

Thrift — это облегченная межъязыковая среда RPC, которая предоставляет механизмы генерации кода, предоставляя четкие абстракции для передачи данных, сериализации и обработки на уровне приложений. Thrift сама по себе очень зрелая, поддерживает более 20 языков.Некоторые базовые проекты, такие как hadoop, также интегрируют thrift в свой собственный многоязычный пакет SDK.Если ваша компания занимается выбором технологии многоязычных микросервисов, thrift будет хорошим выбором. В этой серии статей будет проанализирована общая архитектура и исходный код модуля, а также будет предпринята попытка представить более конкретную структуру бережливости.

Диаграмма архитектуры

Модульное деление

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

  • Генератор кода

Сгенерируйте код каждого языка в соответствии с файлом idl thrift, который находится в каталоге компилятора.

  • транспортный уровень низкого уровня

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

  • Переопределить транспортный уровень

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

  • Уровень протокола

Уровень протокола в основном отвечает за анализ сообщений запроса и ответа в определенные структуры и экземпляры классов для непосредственного использования уровнем обработки.Текущие протоколы включают двоичные (наиболее часто используемые), json и многоканальные смешанные протоколы.

  • слой обработки

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

  • сервисный уровень

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

Суммировать

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

использованная литература

официальный сайт бережливости

бережливая белая бумага