[C ++ Tutorial Avançado] Desenvolvendo uma estrutura de servidor do zero (SYLAR)
Suporta o estilo de escrita de log de streaming e o estilo de escrita de log, suporta a personalização do formato de log, o nível de log, a separação de vários logs e outras funções, o uso do log de streaming: sylar_log_info (g_logger) << "é um log"; Nome, nível de log, nome do log, nome do arquivo, número da linha, etc.
Adote a idéia de convenção devido à configuração. Definição está disponível. Não há necessidade de analisar separadamente. Suporta a função de notificação de mudança. Use arquivos YAML como conteúdo de configuração. Suporta tipos de dados em formatos de nível, suporta contêineres STL (vetor, listagem, conjunto, mapa etc.), suporta tipos personalizados (requer métodos de serialização e deserivação) da seguinte forma:
static sylar::ConfigVar< int >::ptr g_tcp_connect_timeout =
sylar::Config::Lookup ( " tcp.connect.timeout " , 5000 , " tcp connect timeout " );Um parâmetro de tempo limite de conexão TCP é definido.
tcp:
connect:
timeout: 10000O módulo Thread encapsula algumas funções comumente usadas no PTHREAD, como thread, semáforo, mutex, rwmutex, spinlock, etc., que podem facilitar o desenvolvimento de threads para uso diário. Além disso, o C ++ 11 não fornece leitura e gravação mutex, rwmutex, spinlock etc. e em cenários de alta concorrência, esses objetos são frequentemente usados. Então eu escolhi encapsular o pThread por mim
Coroutine: o encadeamento do modo de usuário, equivalente a threads em threads, é mais leve. O gancho de soquete é configurado na configuração subsequente, que pode encapsular chamadas assíncronas complexas em operações síncronas. Reduza a complexidade de escrever lógica de negócios. Atualmente, a coroutina é implementada com base no uContext_t e será implementada da maneira subsequente usando FContext_T em boost.context.
O Scheduler Coroutine gerencia a programação de coroutinas e é implementado internamente como um pool de threads, que suporta coroutinas para alternar entre vários threads e também pode especificar que as coroutinas sejam executadas em threads fixos. É um modelo de agendamento de coroutina NM, com N Threads e M Coroutines. Reutilize cada thread.
Herite e corooutine Scheduler, encapsule o epoll (Linux) e suporta a função do timer (usando o Epoll para implementar o timer, o nível de milissegundos) e suporta a adição, exclusão e cancelamento do tempo de leitura e gravação do soquete. Suporta cronômetro único, cronômetro, cronômetro de condição e outras funções
O sistema de gancho subjacente e as APIs relacionadas ao soquete, APIs relacionadas ao Socket IO e APIs da série Sleep. O controle de ativação do gancho é granular. Livre escolha. Através do módulo Hook, algumas APIs sem funções assíncronas podem ser usadas para mostrar desempenho assíncrono. Por exemplo (MySQL)
Encapsula a classe de soquete, fornece todas as funções da API de soquete, unifique a classe de endereço e unifique os endereços IPv4, IPv6 e Unix. Ele também fornece funções de nome de domínio e resolução IP.
O módulo de serialização binária do ByTearray fornece operações comuns em dados binários. Leia e escreva tipos básicos INT8_T, INT16_T, INT32_T, INT64_T, ETC., Suporte VARINT, STD :: String para ler e gravar suporte, suportar conversão de bytes, suporte de serialização em arquivos e deserialização de arquivos.
Com base na classe de soquete, ele encapsula uma classe geral do servidor TCPServer, fornece uma API simples, é fácil de usar e pode vincular rapidamente um ou mais endereços, iniciar serviços, ouvir portas, aceitar conexões, manipular conexões de soquete e outras funções. A implementação do servidor de funções comerciais específicas pode ser implementada rapidamente herdando esta classe.
Interface unificada de streaming encapsulada. Encapsula arquivos e soquetes em interfaces unificadas. Ao usá -lo, use um estilo unificado. Com base em um estilo unificado, ele pode fornecer uma expansão mais flexível. SocketStream está atualmente implementado
Ragel (máquina de estado finita, desempenho comparável à montagem), implementa a implementação simples do protocolo de HTTP/1.1 e a análise do URI. Com base no SocketStream, HttpConnection (cliente HTTP) e HTTPSession (link do servidor HTTP) são implementados. O HTTPSERVER é implementado com base no TCPServer. Fornece função completa da solicitação de API do cliente HTTP e função de servidor de API Basic HTTP
Seguindo o servlet de Java, um conjunto de interfaces servlet é implementado, ServletDispatch e Functionservlet. NotfoundServlet. Suporta a correspondência precisa da URI, a combinação difusa e outras funções. Juntamente com o módulo HTTP, forneça funções de servidor HTTP
Informações de contato: qq: 564628276 E-mail: [email protected] WECHAT: Sylar-Yin QQ Grupo: 8151915 (Sylar Technology Group) HomePage: www.sylar.top github: https:/githubb.com/sylarin/sylar.sylar.top github: https:/github.com/sylarin/sylarin/sylar.top: https:/github.com/sylarin/sylar.sylar.top Github: https:/github.com/sylarin/sylarin/sylar.top: https:/github.com/sylarin/sylar.sylar.top Github: https:/github.com/sylarin/sylarin/sylar.