[C ++ Advanced Tutorial] Разработка серверной структуры с нуля (SYLAR)
Поддерживает стиль написания журнала потоковой передачи и стиль написания журнала, поддерживает настройку формата журнала, уровень журнала, многолаколонную отделение и другие функции, использование потокового журнала: SYLAR_LOG_INFO (G_LOGGER) << «Это журнал»; Уровень журнала, имя журнала, имя файла, номер строки и т. Д.
Принять идею соглашения из -за конфигурации. Определение доступно. Нет необходимости проанализировать отдельно. Поддерживает функцию уведомления об изменении. Используйте файлы YAML в качестве конфигурации. Поддерживает типы данных в форматах уровня, поддерживает контейнеры STL (вектор, список, набор, карта и т. Д.), Поддерживает индивидуальные типы (требуют методов сериализации и десериализации) следующим образом:
static sylar::ConfigVar< int >::ptr g_tcp_connect_timeout =
sylar::Config::Lookup ( " tcp.connect.timeout " , 5000 , " tcp connect timeout " );Определяется параметр TCP-подключения.
tcp:
connect:
timeout: 10000Модуль потока инкапсулирует некоторые обычно используемые функции в Pthread, такие как потоки, семафор, мутекс, RWMutex, Spinlock и т. Д., Которые могут облегчить разработку потоков для ежедневного использования. Кроме того, C ++ 11 не предоставляет чтение и писать мутекс, rwmutex, spinlock и т. Д., И в сценариях с высоким содержанием параллелистики эти объекты часто используются. Поэтому я решил инкапсулировать pthread самостоятельно
Coroutine: Поток пользовательского режима, эквивалентный потокам в потоках, легче. Крюк сокета настроен в последующей конфигурации, которая может инкапсулировать сложные асинхронные вызовы в синхронные операции. Уменьшите сложность написания бизнес -логики. В настоящее время Coroutine реализована на основе uContext_t и будет реализована последующим способом с помощью fcontext_t в boost.context.
Планировщик Coroutine управляет планированием CORUTINES и реализуется внутренне как пул потоков, который поддерживает Coroots для переключения между несколькими потоками, а также может указать, что Coroutines выполняются в фиксированных потоках. Это модель расписания NM COROUTINE, с N потоками и M -Coroutines. Повторно используйте каждую ветку.
Унаследует и коратинский планировщик, инкапсулирует Epoll (Linux) и поддерживает функцию таймера (используя Epoll для реализации таймера, уровня миллисекундов) и поддерживает добавление, удаление и отмену времени чтения и записи сокетов. Поддерживает одноразовый таймер, таймер цикла, таймер состояния и другие функции
Основная система крючков и API-интерфейсы, связанные с гнездом, API, связанные с гнездом, и API серии Sleep. Включим управления крючком является нитью гранулированным. Свободный выбор. Через модуль крюка некоторые API без асинхронных функций могут использоваться для показа асинхронной производительности. Например (MySQL)
Инкапсулирует класс сокетов, предоставляет все функции API сокета, объединить адреса и Unify IPv4, IPv6 и UNIX. Он также предоставляет функции доменного имени и разрешения IP.
Bytearray Binary Serialization Module обеспечивает общие операции по бинарным данным. Читать и записать основные типы int8_t, int16_t, int32_t, int64_t и т. Д., Поддержка Varint, std :: string для чтения и записи поддержки, преобразование байта поддержки, поддержка сериализации в файлы и десериализация из файлов.
Основываясь на классе сокетов, он инкапсулирует общий класс сервера TCPSERVER, предоставляет простой API, прост в использовании и может быстро привязать один или несколько адресов, службы запуска, прослушивать порты, принимать подключения, подключения к сокетам и другие функции. Реализация сервера конкретных бизнес -функций может быть быстро реализована путем наследства этого класса.
Инкапсулированный потоковой унифицированный интерфейс. Инкапсулируют файлы и розетки в унифицированные интерфейсы. При его использовании используйте унифицированный стиль. Основываясь на унифицированном стиле, он может обеспечить более гибкое расширение. SocketStream в настоящее время реализован
Ragel (конечное состояние машины, производительность, сравнимая с сборкой), реализует простую реализацию протокола HTTP/1.1 и анализ URI. На основе SocketStream, реализованы HTTPConnection (HTTP Client) и HTTPSession (ссылка на сервер HTTP). Httpserver реализован на основе TCPServer. Обеспечивает полную функцию запроса клиента API клиента HTTP и функцию API -сервера HTTP
После сервлета Java реализован набор интерфейсов сервлета, ServletDispatch и FunctionServlet. NotFoundServlet. Поддерживает точное соответствие URI, нечеткое сочетание и другие функции. Вместе с модулем HTTP предоставьте функции HTTP -сервера
Контактная информация: QQ: 564628276 Электронная почта: [email protected] WeChat: Sylar-yin QQ Группа: 8151915 (Technology Group).