предисловие
Thrift — это облегченная межъязыковая среда RPC, которая предоставляет механизмы генерации кода, предоставляя четкие абстракции для передачи данных, сериализации и обработки на уровне приложений. Thrift сама по себе очень зрелая, поддерживает более 20 языков.Некоторые базовые проекты, такие как hadoop, также интегрируют thrift в свой собственный многоязычный пакет SDK.Если ваша компания занимается выбором технологии многоязычных микросервисов, thrift будет хорошим выбором. В этой серии статей будет проанализирована общая архитектура и исходный код модуля, а также будет предпринята попытка представить более конкретную структуру бережливости.
Диаграмма архитектуры
Модульное деление
Оставляя в стороне языковой уровень, экономию можно разделить на следующие компоненты, где транспортный уровень подразделяется на низкоуровневый транспортный уровень и транспортный уровень репликации.
- Генератор кода
Сгенерируйте код каждого языка в соответствии с файлом idl thrift, который находится в каталоге компилятора.
- транспортный уровень низкого уровня
Он близок к сетевому уровню и служит точкой входа для платформы rpc для получения сообщений и предоставляет различные базовые реализации, такие как создание сокетов, чтение и запись, а также получение соединений.
- Переопределить транспортный уровень
На основе низкоуровневого транспортного уровня реализованы различные транспортные уровни с перезаписью, включая HTTP, кадровый, буферизованный, сжатый транспортный уровень и т. д. Транспортный уровень с перезаписью может напрямую использоваться уровнем протокола, и пользователи также могут реализовывать свою собственную передачу. путем перезаписи низкоуровневого транспортного уровня и перезаписи транспортного уровня.
- Уровень протокола
Уровень протокола в основном отвечает за анализ сообщений запроса и ответа в определенные структуры и экземпляры классов для непосредственного использования уровнем обработки.Текущие протоколы включают двоичные (наиболее часто используемые), json и многоканальные смешанные протоколы.
- слой обработки
Сгенерированный генератором кода, конкретная обработка интерфейса выполняется в соответствии с полученной конкретной информацией, такой как имя метода. Запись конструктора уровня обработки содержит обработчик. Обработчик специально реализуется бизнес-стороной, а затем вызывается в процессе обработки. слой Результат обработки ответа.
- сервисный уровень
Интегрируя низкоуровневый транспортный уровень, транспортный уровень репликации, уровень протокола и уровень обработки, он включает в себя различные типы моделей обслуживания, такие как неблокирующий однопроцессный сервис, один запрос на ответвление, один запрос на поток, пул потоков и другие модели.
Суммировать
Выше приведено общее модульное деление бережливости, В следующей статье каждый модуль будет проанализирован отдельно.