[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 연결 시간 초과 매개 변수가 정의되어 있습니다. G_TCP_CONNECT_TIMEOUT-> GETVALUE ()를 직접 사용하여 구성이 수정되고 다시로드 될 수 있습니다.
tcp:
connect:
timeout: 10000스레드 모듈은 PTHREAD에서 일반적으로 사용되는 일부 기능을 캡슐화합니다. 예를 들어 스레드, 세마포어, 뮤트, 스핀 락 등은 C ++ 11의 스레드가 C ++ 11을 사용하지 않는 이유는 무엇입니까? 또한 C ++ 11은 뮤 테스, rwmutex, 스핀 락 등을 읽고 쓰고 쓰는 것을 제공하지 않으며 동시성 시나리오에서는 이러한 객체가 종종 사용됩니다. 그래서 나는 혼자서 pthread를 캡슐화하기로 결정했습니다
COROUTINE : 스레드의 스레드에 해당하는 사용자 모드 스레드가 더 가볍습니다. 소켓 후크는 후속 구성에서 구성되어 복잡한 비동기 호출을 동기화 작업으로 캡슐화 할 수 있습니다. 비즈니스 논리 작성의 복잡성을 줄입니다. 현재 Coroutine은 ucontext_t를 기반으로 구현되며 boost.context에서 fcontext_t를 사용하여 후속 방식으로 구현 될 것입니다.
코 루틴 스케줄러는 코 루틴의 스케줄링을 관리하고 내부적으로 스레드 풀로 구현되며, 이는 스레드 풀로 구현되어 여러 스레드를 전환 할 수있는 코 루틴을 지원하며 고정 스레드에서 코 루틴을 실행하도록 지정할 수 있습니다. NM COROUTINE 스케줄링 모델이며 N 스레드 및 M 코 루틴이 있습니다. 각 스레드를 재사용하십시오.
상속 및 코 루틴 스케줄러, Epoll (LINUX)을 캡슐화하고 타이머 기능 (에폴을 사용하여 타이머, 밀리 초 레벨)을 지원하고 소켓 판독 및 쓰기 시간의 추가, 삭제 및 취소를 지원합니다. 일회성 타이머, 사이클 타이머, 조건 타이머 및 기타 함수 지원
기본 후크 시스템 및 소켓 관련 API, 소켓 IO 관련 API 및 Sleep Series API. 후크의 턴온 제어는 나사산 세분치입니다. 자유 선택. 후크 모듈을 통해 비동기 기능이없는 일부 API를 사용하여 비동기 성능을 표시 할 수 있습니다. 예를 들어 (MySQL)
소켓 클래스를 캡슐화하고, 모든 소켓 API 기능을 제공하고, 주소 클래스를 통합하며, IPv4, IPv6 및 Unix 주소를 통합합니다. 또한 도메인 이름 및 IP 해상도 기능을 제공합니다.
BytearRay 이진 직렬화 모듈은 이진 데이터에 대한 공통 작업을 제공합니다. 기본 유형을 읽고 쓰고 쓰기 int8_t, int16_t, int32_t, int64_t 등, support varint, std :: 지원을 읽고 쓰기 위해 지원하고, 바이트 변환을 지원하고, 파일에 대한 직렬화를 지원하고, 파일의 사로화.
소켓 클래스를 기반으로 일반적인 TCPSERVER 서버 클래스를 캡슐화하고 간단한 API를 제공하며 사용하기 쉽고 하나 이상의 주소를 신속하게 바인딩하고 서비스를 시작하고 서비스를 듣고, 연결 수용, 소켓 연결 및 기타 기능을 처리 할 수 있습니다. 특정 비즈니스 기능의 서버 구현은이 클래스를 상속하여 빠르게 구현할 수 있습니다.
캡슐화 된 스트리밍 통합 인터페이스. 파일과 소켓을 통합 인터페이스로 캡슐화합니다. 그것을 사용할 때는 통일 된 스타일을 사용하십시오. 통합 스타일을 기반으로 더 유연한 확장을 제공 할 수 있습니다. SocketStream이 현재 구현되었습니다
Ragel (유한 상태 기계, 어셈블리와 비슷한 성능)은 HTTP/1.1의 간단한 프로토콜 구현 및 URI의 구문 분석을 구현합니다. SocketStream을 기반으로 HTTPConnection (HTTP Client) 및 HTTPSESSION (HTTP Server Link)이 구현됩니다. httpserver는 tcpserver를 기반으로 구현됩니다. 완전한 HTTP 클라이언트 API 요청 기능 및 HTTP 기본 API 서버 기능 제공
Java의 서블릿에 이어 서블릿 인터페이스 세트가 구현, Servletdispatch 및 FunctionServlet이 구현됩니다. NotFoundServlet. URI의 정확한 일치, 퍼지 매칭 및 기타 기능을 지원합니다. HTTP 모듈과 함께 HTTP 서버 기능을 제공하십시오
연락처 정보 : QQ : 564628276 이메일 : [email protected] Wechat : Sylar-Yin QQ Group : 8151915 (Sylar Technology Group) 개인 홈페이지 : www.sylar.top github : https://github.com/sylar-yin/sylar