1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_Tencent-flare

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README-en.md

Flare Backend Service Framework

license NewBSD

C++

Code Style

Platform

Tencent Ads — один из важнейших бизнесов Tencent, его бэкенд активно разрабатывается на C++.

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

Проект Flare стартовал в 2019 году и сейчас широко используется во многих бэкенд-сервисах Tencent Ads, с десятками тысяч запущенных экземпляров, и был протестирован на реальных производственных системах.

В мае 2021 года Flare был официально открыт для общественности, чтобы вернуть сообществу и поделиться технологиями.

Переводится больше документов на английский язык.

Особенности

  • Современный стиль проектирования на C++ с широким использованием новых синтаксических функций и стандартных библиотек C++11/14/17/2a.
  • Предоставляет микропоточную реализацию модели M:N потоков Fiber (flare/doc/fiber.md) для бизнес-разработчиков, позволяющую писать высокопроизводительный асинхронный код вызовов с удобным синтаксисом синхронных вызовов.
  • Поддержка потоковой RPC (flare/doc/streaming-rpc.md).
  • Помимо RPC, предоставляется ряд удобных базовых библиотек (flare/base), таких как строки, время и дата, обработка кодирования, сжатие, шифрование и дешифрование, конфигурация, HTTP-клиент и т. д., которые удобны для быстрого начала разработки бизнес-кода.
  • Обеспечивает гибкий механизм расширения. Легко поддерживает несколько протоколов, обнаружение служб, балансировку нагрузки, мониторинг и оповещение, трассировку RPC (flare/doc/tracing.md) и т.д.
  • Обширные оптимизации для современных архитектур. Например, группа планирования (flare/doc/scheduling-group.md) и пул объектов (flare /doc/object-pool.md), осведомлённые о NUMA, буфер нулевого копирования (flare /doc/buffer.md) и др.
  • Высококачественный код. Строгое соблюдение спецификации Google C++ Code Specification (https://google.github.io/styleguide/cppguide.html), с охватом тестирования 80%.
  • Полная документация (flare/doc) и примеры (flare/example), а также поддержка отладки (flare/doc/debugging.md), легко начать работу быстро.

Системные требования

  • Linux 3.10 kernel или выше, другие ОС в настоящее время не поддерживаются.
  • Процессоры x86-64, aarch64 и ppc64le также поддерживаются, но не использовались в производственной среде.
  • Компилятор GCC 8 или выше.

Начало работы

Flare поставляется с необходимыми сторонними библиотеками (thirdparty/), поэтому обычно нет необходимости устанавливать дополнительные зависимые библиотеки. Просто скачайте код и используйте его под Linux.

Архив tarball в thirdparty/ хранился через Git LFS (https://git-lfs.github.com/), поэтому перед извлечением кода необходимо убедиться, что git-lfs установлен правильно.

Сборка

Мы используем blade (https://github.com/chen3feng/blade-build) для сборки этого проекта.

  • Скомпилировать: ./blade build ... .
  • Протестировать: ./blade test ... .

После этого вы можете обратиться к введению в Руководстве по началу работы (flare/doc/intro-rpc.md), чтобы создать простой RPC-сервис.

Отладка

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

  • Плагин GDB для перечисления ожидающих волокон (flare/doc/gdb-plugin.md).
  • Поддержка различных Sanitizers (flare/doc/sanitizers.md).

Тестирование

Чтобы улучшить опыт написания тестов, мы предоставляем ряд инструментов для написания... В этом примере мы:

  • инициировали три асинхронных запроса через трёх разных клиентов (HTTP, Tencent Cloud COS, RPC);
  • синхронно ожидаем завершения всех запросов с помощью flare::fiber::BlockingGet. Здесь мы блокируем только поток пользовательского режима и проблем с производительностью нет;
  • выводим логи для отображения ответа каждой службы.

Для демонстрации мы запрашиваем здесь три разнородные службы. При необходимости можно запрашивать однородные или частично однородные и частично разнородные службы таким же образом.

Вклад

Разработчики, которые хотят узнать больше о внутренней структуре Flare или участвовать в разработке Flare, могут найти дополнительную документацию в разделе flare/doc/.

Более подробную информацию смотрите в CONTRIBUTING.md.

Производительность

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

В целях простого сравнения мы предоставили предварительные данные о производительности (flare/doc/benchmark.md).

Благодарности

  • Наша базовая реализация во многом основана на дизайне brpc.
  • В части RPC мы черпали вдохновение из grpc.
  • Мы полагаемся на множество сторонних библиотек от сообщества открытого исходного кода. Стоя на плечах гигантов, мы можем разрабатывать этот проект быстрее и лучше и поэтому активно возвращаем долг сообществу открытого исходного кода.

Мы хотели бы выразить им нашу искреннюю благодарность и признательность.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Flare — это открытая платформа для разработки серверных служб от компании Tencent, цель которой — предоставить удобные, высокопроизводительные и надёжные инструменты для создания сервисов в современных программно-аппаратных окружениях. Развернуть Свернуть
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors_Tencent-flare.git
git@api.gitlife.ru:oschina-mirror/mirrors_Tencent-flare.git
oschina-mirror
mirrors_Tencent-flare
mirrors_Tencent-flare
master