Lời nói đầu

Workerman, Container PHP hiệu suất cao

Workerman là gì?

Workerman là một container PHP mã nguồn mở hiệu suất cao được phát triển hoàn toàn bằng PHP.

Workerman không phải là một dự án lặp lại, nó không phải là một framework MVC, mà là một framework dịch vụ đa năng và cơ bản hơn, bạn có thể sử dụng nó để phát triển các dịch vụ proxy TCP, proxy lướt web, máy chủ game, máy chủ email, máy chủ FTP, thậm chí phát triển phiên bản PHP của Redis, cơ sở dữ liệu bằng PHP, Nginx bằng PHP, PHP-FPM bằng PHP, v.v. Workerman có thể coi là một sự đổi mới trong lĩnh vực PHP, giúp các lập trình viên hoàn toàn thoát khỏi ràng buộc rằng PHP chỉ có thể làm web.

Thực tế, Workerman giống như một phiên bản Nginx bằng PHP, với lõi được xây dựng dựa trên kiến trúc đa tiến trình + Epoll + I/O không đồng bộ. Mỗi tiến trình của Workerman có thể giữ hàng chục nghìn kết nối đồng thời. Do nó tự động chạy trong bộ nhớ và không phụ thuộc vào Apache, Nginx, PHP-FPM, nó có hiệu suất cực cao. Đồng thời, nó hỗ trợ TCP, UDP, UNIXSOCKET, kết nối dài, WebSocket, HTTP, WSS, HTTPS và nhiều giao thức giao tiếp khác cũng như các giao thức tùy chỉnh. Workerman có nhiều thành phần hiệu suất cao như bộ định thời, client socket không đồng bộ, Redis không đồng bộ, HTTP không đồng bộ, hàng đợi tin nhắn không đồng bộ, v.v.

Một số hướng ứng dụng của Workerman

Workerman khác với các framework MVC truyền thống, Workerman không chỉ có thể sử dụng cho phát triển web mà còn có nhiều lĩnh vực ứng dụng khác, chẳng hạn như giao tiếp tức thì, Internet of Things, game, quản lý dịch vụ, các máy chủ hoặc middleware khác. Điều này chắc chắn mở rộng tầm nhìn cho các lập trình viên PHP. Hiện nay, các lập trình viên PHP trong những lĩnh vực này đang rất hiếm. Nếu bạn muốn có lợi thế công nghệ riêng trong lĩnh vực PHP, không muốn chỉ làm công việc CRUD hàng ngày, hoặc muốn phát triển theo hướng kiến trúc sư hoặc trở thành những chuyên gia công nghệ, Workerman là một framework rất đáng để học hỏi. Chúng tôi khuyến nghị các lập trình viên không chỉ biết cách sử dụng mà còn phải phát triển dựa trên Workerman để tạo ra các dự án mã nguồn mở của riêng mình, nâng cao kỹ năng và mở rộng ảnh hưởng cá nhân, chẳng hạn như Beanbun - framework thu thập dữ liệu đa tiến trình là một ví dụ rất tốt, vừa mới ra mắt đã nhận được nhiều phản hồi tích cực.

Một số hướng ứng dụng của Workerman bao gồm:

  1. Giao tiếp tức thì
    Ví dụ như chat trực tuyến, thông báo tức thì, ứng dụng WeChat, thông báo ứng dụng di động, thông báo phần mềm PC, v.v.
    [Ví dụ workerman-chat phòng chat, Gửi thông báo web, Phòng chat bé gái]

  2. Internet of Things
    Ví dụ như Workerman giao tiếp với máy in, với vi điều khiển, vòng tay thông minh, nhà thông minh, xe đạp chia sẻ, v.v.
    [Các trường hợp khách hàng như YiLianYun, YiBoShiDai]

  3. Máy chủ game
    Ví dụ như trò chơi cờ bạc trực tuyến, trò chơi MMORPG, v.v. [Ví dụ browserquest-php]

  4. Dịch vụ HTTP
    Ví dụ như viết API HTTP hiệu suất cao, trang web hiệu suất cao. Nếu bạn muốn thực hiện các dịch vụ liên quan đến HTTP hoặc các trang web, chúng tôi rất khuyến nghị webman

  5. Dịch vụ SOA
    Sử dụng Workerman để đóng gói các đơn vị chức năng khác nhau của hệ thống hiện có thành các dịch vụ, cung cấp một giao diện thống nhất cho bên ngoài, nhằm đạt được hệ thống lỏng lẻo, dễ duy trì, khả dụng cao, dễ mở rộng. [Ví dụ workerman-json-rpc, workerman-thrift]

  6. Phần mềm máy chủ khác
    Ví dụ GatewayWorker, PHPSocket.IO, proxy http, proxy sock5, thành phần giao tiếp phân tán, thành phần chia sẻ biến phân tán, hàng đợi tin nhắn, máy chủ DNS, WebServer, máy chủ CDN, máy chủ FTP, v.v.

  7. Thành phần
    Ví dụ Redis không đồng bộ, client HTTP không đồng bộ, client mqtt cho Internet of Things, hàng đợi tin nhắn workerman/redis-queue, workerman/stomp, workerman/rabbitmq, thành phần giám sát tệp, và rất nhiều thành phần framework được phát triển bởi bên thứ ba, v.v.

Rõ ràng các framework MVC truyền thống rất khó để thực hiện tất cả các chức năng trên, vì vậy Workerman ra đời.

Triết lý của Workerman

Cực kỳ đơn giản, ổn định, hiệu suất cao, phân tán.

Cực kỳ đơn giản

Nhỏ là đẹp, lõi của Workerman cực kỳ đơn giản, chỉ có một vài tệp PHP và chỉ tiết lộ một vài giao diện, rất dễ học. Tất cả các chức năng khác được mở rộng thông qua các thành phần.

Workerman có tài liệu đầy đủ + trang chủ uy tín + cộng đồng năng động + nhiều nhóm QQ có hàng nghìn người + nhiều thành phần hiệu suất cao + vô số ví dụ, tất cả những điều này giúp các lập trình viên dễ dàng sử dụng hơn.

Ổn định

Workerman đã mã nguồn mở trong nhiều năm và được nhiều công ty niêm yết sử dụng quy mô lớn, cực kỳ ổn định. Một số dịch vụ đã không được khởi động lại trong hơn 2 năm vẫn hoạt động nhanh chóng. Không có core dump, không có rò rỉ bộ nhớ, không có lỗi.

Hiệu suất cao

Workerman do thường trú trong bộ nhớ, tự nó không phụ thuộc vào apache/nginx/php-fpm, không có chi phí giao tiếp từ container đến PHP, không có chi phí khởi tạo và hủy bỏ mọi thứ cho mỗi yêu cầu, mang lại hiệu suất vượt trội. So với các framework MVC truyền thống, hiệu suất cao hơn nhiều lần, với PHP7 thông qua kiểm tra áp lực ab QPS thậm chí còn cao hơn so với Nginx riêng lẻ.

Phân tán

Hiện nay không còn là thời đại một mình nữa, dù một máy chủ có mạnh mẽ đến đâu cũng có giới hạn, việc triển khai nhiều máy chủ phân tán mới là con đường đúng. Workerman trực tiếp cung cấp một giải pháp giao tiếp phân tán với kết nối dài GatewayWorker framework, việc thêm máy chủ chỉ cần cấu hình đơn giản và khởi động, mã nghiệp vụ không cần thay đổi, khả năng chịu tải của hệ thống tăng gấp bội. Nếu bạn phát triển ứng dụng TCP với kết nối dài, chúng tôi khuyên bạn nên sử dụng GatewayWorker, nó là một lớp bao quanh Workerman, cung cấp nhiều giao diện phong phú và khả năng xử lý phân tán mạnh mẽ hơn cho ứng dụng kết nối dài.

Phạm vi của tài liệu này

Phiên bản Workerman 3.x - 5.x

Người dùng Windows (bắt buộc đọc)

Workerman hỗ trợ cả hệ thống Linux và Windows. Phiên bản Windows của Workerman không phụ thuộc vào bất kỳ mở rộng nào, chỉ cần cấu hình đúng biến môi trường PHP, cài đặt và lưu ý cho phiên bản Windows của Workerman xem người dùng Windows cần lưu ý.

Khách hàng

Giao thức truyền thông của Workerman là mở và có thể tùy chỉnh, do đó, về lý thuyết Workerman có thể giao tiếp với bất kỳ khách hàng nào trên bất kỳ nền tảng nào sử dụng bất kỳ giao thức nào. Khi người dùng phát triển khách hàng, họ có thể hoàn thành việc giao tiếp với server dựa trên giao thức truyền thông tương ứng.