scaling php
TRANSCRIPT
Scaling PHP
Trần Khánh Nam
Người thuyết trình
- Trần Khánh Nam
- 3 năm kinh nghiệm làm việc với các dự án
PHP
- Từng tham gia 2 startup và hiện đang làm
việc tại Lazada
Nội dung
● Sử dụng load balancer
● Tăng tốc máy chủ của bạn
● Data cache
● Queue
● Lời kết
Sử dụng load balancer
● Chuyển hướng request đến các server của
bạn một cách đồng đều
● Giúp website có chịu được nhiều lượng truy
cập hơn và bạn có thể nâng cấp
performance của website bằng cách thêm
vào máy chủ vào hệ thống
● HAProxy là load balancer phổ biến nhất.
Demo load balancer
● Load balancer ở địa chỉ localhost:1000
● App server nằm ở địa chỉ localhost:1001 và
localhost:1002
● Truy cập vào load balancer, request sẽ
được chuyển hướng tới app server và phản
hồi về địa chỉ của nó và port.
Demo haproxy
Tăng tốc máy chủ website của bạn
● Sử dụng Linux
● Sử dụng phiên bản PHP mới nhất
● Loại bỏ apache và thay bằng nginx
● Sử dụng opcode cache cho PHP
Loại bỏ apache và thay bằng nginx
- Nginx xử lý nhanh và tiết kiệm tài nguyên hơn
apache
Sử dụng opcode cache cho PHP
● Code PHP của bạn sẽ được biên dịch thành
opcode trước khi thực thi
● Việc lưu lại lại opcode sẽ tiết kiệm thời gian
biên dịch ở các request sau
● Các opcode cache thông dụng như APC,
Zend Opcache, xCache
Data cache
Example:
$report = $redis->get('my-report');
if($report != null){
$report = get_your_report();
$redis->set('my-report',$report);
}
$pdf->render($report);
Data cache
Các chương trình datacache:
- APC
- Memcached
- Redis
Queue
● Nơi nhận các công việc không cần xử lý
ngay lập tức ( gửi email, post ảnh lên
Facebook....)
● Xử lý các tác vụ đó một cách ngầm bên
trong server của bạn.
● Các queue phổ biến như rabbitmq,
gearman, php-resque, beantalk
Queue
Demo website upload ảnh.
- Cho phép người dùng upload ảnh lên website
- Sau khi ảnh được upload xong sẽ hiện trang
thông tin hình ảnh ngay lập tức
- Việc resize ảnh là upload ảnh lên amazon S3
được thực hiện bằng 1 job queue.
Kết luận
● Tập trung tối ưu kiến trúc website của bạn
thay vì tối ưu các đoạn code của bạn.
● Open mind - luôn tìm kiếm và học hỏi các
công nghệ mới để website của bạn chạy
nhanh hơn
Trần Khánh Nam