서문

Workerman, 고성능 PHP 애플리케이션 컨테이너

Workerman은 무엇인가요?

Workerman은 순수 PHP로 개발된 오픈 소스 고성능 PHP 애플리케이션 컨테이너입니다.

Workerman은 기존의 플랫폼을 반복해서 만들지 않습니다. MVC 프레임워크가 아니라, 보다 저수준이며 일반적인 서비스 프레임워크로, TCP 프록시, 해외 VPN, 게임 서버, 메일 서버, FTP 서버, 심지어 PHP 버전의 Redis, PHP 버전의 데이터베이스, PHP 버전의 Nginx, PHP 버전의 PHP-FPM 등을 개발할 수 있습니다. Workerman은 PHP 분야에서 혁신을 이끌어내어 개발자들이 PHP가 웹만으로 한정된 제약에서 벗어날 수 있게 해줍니다.

실제로 Workerman은 PHP 버전의 Nginx와 유사하며, 핵심은 멀티 프로세스 + Epoll + 비차단 IO입니다. Workerman의 각 프로세스는 수만 개의 동시 연결을 유지할 수 있습니다. 본질적으로 메모리에 상주하며, Apache, Nginx, PHP-FPM과 같은 컨테이너에 의존하지 않기 때문에 초고속 성능을 가집니다. 또한 TCP, UDP, UNIXSOCKET을 지원하고, 장기 연결, Websocket, HTTP, WSS, HTTPS 등의 통신 프로토콜 및 다양한 사용자 정의 프로토콜을 지원합니다. 타이머, 비동기 소켓 클라이언트, 비동기 Redis, 비동기 HTTP, 비동기 메시지 큐 등 다양한 고성능 컴포넌트를 가지고 있습니다.

Workerman의 일부 응용 방향

Workerman은 기존의 전통적인 MVC 프레임워크와는 다르게, 웹 개발뿐만 아니라 더 넓은 응용 분야에 사용할 수 있습니다. 예를 들어, 실시간 통신, 사물인터넷, 게임, 서비스 거버넌스, 기타 서버나 미들웨어 등이 있습니다. 이는 PHP 개발자들에게 실질적으로 큰 시야를 제공합니다. 현재 이러한 분야의 PHP 개발자는 부족하므로, PHP 분야에서 기술적 우위를 가지려면 매일의 CRUD 작업에 만족하지 않거나, 아키텍트 방향이나 기술 리더로 나아가고 싶다면 Workerman을 배우는 것이 매우 가치 있는 선택입니다. 개발자가 단순히 사용하기만 할 것이 아니라 Workerman을 기반으로 자신만의 오픈 소스 프로젝트를 개발하여 기술을 향상시키고 자신의 영향력을 키우는 것이 좋습니다. 예를 들어 Beanbun 다중 프로세스 웹 크롤러 프레임워크는 훌륭한 사례로, 출시된 지 얼마 되지 않아 많은 호평을 받았습니다.

Workerman의 일부 응용 방향은 다음과 같습니다:

  1. 실시간 통신
    예를 들어 웹 기반 실시간 채팅, 즉시 메시지 푸시, WeChat 미니 프로그램, 모바일 앱 메시지 푸시, PC 소프트웨어 메시지 푸시 등
    [예시 workerman-chat 채팅방 , 웹 메시지 푸시 , 작은 올챙이 채팅방]

  2. 사물인터넷
    예를 들어 Workerman을 이용한 프린터 통신, 단일칩 마이크로컨트롤러 통신, 스마트 밴드, 스마트 홈, 공유 자전거 등
    [고객 사례 예: 이연클라우드, 이주차 시대 등]

  3. 게임 서버
    예를 들어 카드 게임, MMORPG 게임 등. [예시 browserquest-php]

  4. HTTP 서비스
    예: 고성능 HTTP 인터페이스, 고성능 웹사이트. HTTP 관련 서비스를 구축하려면 webman을 강력히 추천합니다.

  5. SOA 서비스화
    Workerman을 활용하여 기존 비즈니스의 서로 다른 기능 단위를 캡슐화하여 서비스 형태로 외부에 제공하는統一한 인터페이스를 만듭니다. 이를 통해 시스템의 느슨한 결합, 유지 보수 용이성, 고가용성 및 확장성을 달성할 수 있습니다. [예시 workerman-json-rpc, workerman-thrift]

  6. 기타 서버 소프트웨어
    예: GatewayWorker, PHPSocket.IO, http 프록시, sock5 프록시, 분산 통신 컴포넌트, 분산 변수 공유 컴포넌트, 메시지 큐, DNS 서버, 웹 서버, CDN 서버, FTP 서버 등

  7. 컴포넌트
    예: 비동기 Redis, 비동기 HTTP 클라이언트, 사물인터넷 mqtt 클라이언트, 메시지 큐 workerman/redis-queue , workerman/stomp, workerman/rabbitmq , 파일 모니터링 컴포넌트 및 많은 제3자 개발의 컴포넌트 프레임워크 등

명백히 전통적인 MVC 프레임워크로는 위 기능을 쉽게 구현할 수 없으므로 Workerman이 탄생하게 된 이유입니다.

Workerman 이념

극단적으로 간단하며, 안정적이고, 고성능이며, 분산형입니다.

극단적으로 간단함

작음이 아름다움입니다. Workerman의 코어는 극단적으로 간단하며, 몇 개의 PHP 파일만 존재하고 몇 개의 인터페이스만 노출되므로 배우기가 매우 쉽습니다. 모든 다른 기능은 컴포넌트 방식으로 확장됩니다.

Workerman은 완벽한 문서 + 권위 있는 홈페이지 + 활발한 커뮤니티 + 수 개의 수천 명 규모의 QQ 그룹 + 많은 고성능 컴포넌트 + 수많은 예제가 있어 개발자들이 더 수월하게 사용할 수 있습니다.

안정성

Workerman은 수년간 오픈 소스로 공개되어 있으며, 많은 상장 기업에서 대규모로 사용되고 있으며 안정성이 매우 뛰어납니다. 어떤 서비스는 2년 넘게 재시작 없이도 연속적으로 실행되고 있습니다. core dump도, 메모리 누수도, 버그도 없습니다.

고성능

Workerman은 메모리에 상주하며, Apache/Nginx/PHP-FPM에 의존하지 않으므로 PHP와의 통신 오버헤드가 없고, 각 요청마다 초기화 및 종료하는 비용이 없기 때문에 성능이 매우 높습니다. 전통적인 MVC 프레임워크에 비해 성능이 수십 배 더 높으며, PHP7에서 ab 성능 테스트에 의해 QPS가 심지어 개별 Nginx보다 높은 것으로 나타났습니다.

분산형

현재는 더 이상 혼자 힘으로 버티는 시대가 아닙니다. 하나의 서버가 아무리 강력하더라도 한계가 있으며, 분산 다중 서버 배포가 진리입니다. Workerman은 장기 연결 분산 통신 솔루션인 GatewayWorker 프레임워크를 직접 제공합니다. 서버를 추가하려면 간단하게 설정한 후 시작하기만 하면 되며, 비즈니스 코드는 전혀 변경되지 않고 시스템의 수용 능력이 기하급수적으로 증가합니다. TCP 장기 연결 애플리케이션 개발자인 경우 GatewayWorker를 직접 사용하시는 것이 좋습니다. 이는 Workerman에 대한 패키지로, 장기 연결 애플리케이션을 위해 더 풍부한 인터페이스 및 강력한 분산 처리 능력을 제공합니다.

이 매뉴얼의 적용 범위

Workerman 3.x - 5.x 버전

윈도우 사용자(필독)

Workerman은 리눅스 시스템과 윈도우 시스템을 모두 지원합니다. 윈도우 버전의 Workerman은 어떠한 확장에도 의존하지 않으며, PHP 환경 변수를 설정하기만 하면 됩니다. 윈도우 버전 Workerman 설치 및 주의사항은 윈도우 사용자 필독을 참조하십시오.

클라이언트

Workerman의 통신 프로토콜은 개방적이며, 커스터마이즈 가능하므로 이론적으로 Workerman은 임의의 프로토콜을 사용하는 임의의 플랫폼 클라이언트와 통신할 수 있습니다. 사용자가 클라이언트를 개발할 때 적절한 통신 프로토콜에 따라 서버와 통신을 완료할 수 있습니다.