Dijkstra June 2018 | Page 18

LÊ NGUYÊN DŨNG | Thuộc lứa 8x cuối cùng, hiện là kỹ sư backend cho một ứng dụng OTT quen thuộc với người dùng Việt Nam, đang ẩn cư tại Sài Gòn. N ăm 1989, Tim Berners-Lee phát minh ra HTTP. Năm 1996, HTTP/1.0 được tổ chức RFC thông qua trở thành một chuẩn (standard), HTTP/1.1 cũng hình thành cùng năm đó, đây là một trong những cột mốc quan trọng bậc nhất khiến thế giới công nghệ phát triển như vũ bão và định hình như ngày hôm nay. Sau 26 năm kể từ ngày phát minh và gần 20 năm kể từ ngày phiên bản 1.0 xuất hiện, tháng 5 năm 2015, tổ chức RFC đã thông qua đặc tả HTTP/2, đánh dấu thay đổi lớn nhất kể từ ngày hình thành tới nay của giao thức HTTP. Nội dung của bài viết này sẽ không đi sâu vào chi tiết đặc tả của HTTP/2, thay vào đó người viết sẽ cố gắng nhìn nhận vấn đề cốt lõi của việc nâng cấp này thông qua tập trung phân tích hai cơ chế: kết nối và truyền dữ liệu. HTTP/1 Đầu tiên, chúng ta quan sát lại cách làm của HTTP/1: 1. KẾT NỐI CÓ VÒNG ĐỜI NGẮN thông dụng nhất. Tuy nhiên cách làm này rất không tối ưu vì thời gian thiết lập kết nối mới tốn rất nhiều thời gian do phải thực hiện quá trình bắt tay 3 bước (three-hand-shaking), chưa kể nếu có các lớp xử lý bảo mật như TLS sẽ càng làm tăng độ trễ của việc thiết lập kết nối này. 2. KẾT NỐI CÓ VÒNG ĐỜI DÀI HẠN (KEEP-ALIVE CONNECTION) Hình: HTTP/1 connection có vòng đời ngắn Trong dạng xử lý này, mỗi kết nối (connection) sẽ yêu cầu một tài nguyên độc lập. Kết nối sẽ được tạo mới khi cần yêu cầu một tài nguyên và đóng lại sau khi nhận được dữ liệu trả về. Đây là dạng làm việc đơn giản và cũng là 18 DIJSKTRA Hình: Connection keep-alive