Giới thiệu Thumb-me - Giải pháp thumb ảnh bị động

Giới thiệu Thumb-me - Giải pháp thumb ảnh bị động

Mình luôn tìm kiếm một giải pháp tạo ảnh thumb bị động tốt, nhanh, và dễ dàng scale ngang trên các hệ thống, nhưng có vẻ đa số các giải pháp đều không được open source. Khi mà không có thì đành phải xắn tay vào mà làm thôi.

##Nhu cầu

  1. Gen ảnh thumb bị động, tức là khi nào có request từ client thì mới tiến hành gen ảnh thumb.
  2. Cache lại ảnh thumb để sử dụng lại.
  3. Cho phép lấy file từ các hệ thống khác nhau: local file system, network file system, distributed file system (như là GridFS, MogileFS, HDFS, GlusterFS, v.v.) thông qua các file handler.
  4. Dễ dàng thêm mới các phương thức thumb ảnh.
  5. Bảo vệ hệ thống bằng cách tạo ra token tránh bị gen ảnh hàng loạt.

##Giải pháp

Mình cũng có đưa ra khá nhiều giải pháp khác nhau, ban đầu được viết bằng PHP, sau đó là LUA. Trong thời gian này, mình cũng thử NodeJS, nhưng hơi bí bách một số chỗ, như là cache ảnh. Sau đó cũng sử dụng GoLANG, nhưng sự phức tạp của GoLANG cộng với thiếu lib để phát triển tạo ra một hàng rào lớn.

May mắn là trong thời gian gần đây, mình làm việc khá nhiều với nginx reverse proxy, và cũng thực sự là may mắn khi nhớ đến là nginx có một cơ chế cache response từ proxy rất hay. Vậy là ra đời thumb-me.

Về mặt kỹ thuật, thumb-me bao gồm 2 lớp: reverse proxy và app.

####Lớp app

Bao gồm các thành phần sau:

  1. Server (server.js): xử lý các request đến. Nếu file tồn tại thì trả lại trực tiếp vào response, nếu không có thì chuyển request đó đến một method, method này sẽ trả lại response.
  2. Handler (trong thư mục handlers): sử dụng để lấy các file lưu trữ. Với nhu cầu trong tương lai, mình sẽ viết thêm các handler để có thấy lấy (và lưu?, hiện tại chỉ có chức năng lấy, vì ảnh thumb tạo ra sẽ cache ở nginx) từ các file system khác nhau.
  3. Method (trong thư mục methods): sử dụng để xử lý ảnh. Ví dụ như: thumb, zoom, rotate, crop, watermark, v.v. Được thiết kế để có thể thêm vào một cách dễ dàng.

####Lớp reverse proxy

Nginx là ứng cử viên tuyệt với vì các tính chất sau:

  1. Dễ config và nhiều document.
  2. Stable.
  3. Có khả năng cache response khi chạy ở reverse proxy.

##Download

Tất cả source code và hướng dẫn config mình đều có chia sẻ tại github: thumb-me. Tất cả các đóng góp để phát triển dự án rất được hoan nghênh, vì hiện tại mình sẽ không có nhiều thời gian để phát triển dự án. Khi nào nhu cầu mình thay đổi thì mình mới viết tiếp các handler, method mới.

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Dân mạng lên cơn sốt với “Sát thủ - Chết bất hủ”

Dân mạng lên cơn sốt với “Sát thủ - Chết bất hủ”

Trò vui mới đang gây xôn xao cộng đồng Facebook Việt này.

Cydia cập nhật phiên bản 1.1.9 với thiết kế phẳng theo phong cách iOS 7

Nhóm phát triển Cydia mới đây đã phát hành phiên bản 1.1.9 cho ứng dụng của mình với giao diện theo phong cách phẳng của iOS 7.

Nhóm phát triển kính Project Glass trình diễn cách tìm kiếm trên kính Glass

Nhóm phát triển kính Project Glass trình diễn cách tìm kiếm trên kính Glass

Nhóm phát triển kính Project Glass đăng một video cho thấy chiếc kính thông minh của Google hoạt động ấn tượng với khả năng nhận diện giọng nói và tương tác thực ảo (AR - augmented reality).

Công ty diệt chuột T&C

 

Diet con trung