scaling php

17
Scaling PHP Trần Khánh Nam

Upload: david-tran

Post on 13-Jul-2015

385 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scaling php

Scaling PHP

Trần Khánh Nam

Page 2: Scaling php

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

Page 3: Scaling php

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

Page 4: Scaling php

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.

Page 5: Scaling php
Page 6: Scaling php

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.

Page 7: Scaling php

Demo haproxy

Page 8: Scaling php

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

Page 9: Scaling php
Page 10: Scaling 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

Page 11: Scaling php

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

Page 12: Scaling php

Data cache

Example:

$report = $redis->get('my-report');

if($report != null){

$report = get_your_report();

$redis->set('my-report',$report);

}

$pdf->render($report);

Page 13: Scaling php

Data cache

Các chương trình datacache:

- APC

- Memcached

- Redis

Page 14: Scaling php

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

Page 15: Scaling php

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.

Page 16: Scaling php

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

Page 17: Scaling php

Trần Khánh Nam

[email protected]