Chạy redis trên dyno là một ý tưởng thú vị. Bạn có thể sẽ cần tạo một gói xây dựng redis để các dynos của bạn có thể tải xuống và chạy redis. Vì "redis không có phụ thuộc nào ngoài trình biên dịch GCC và libc đang hoạt động" nên về mặt kỹ thuật, điều này có thể thực hiện được.
Tuy nhiên, đây là một số vấn đề bạn có thể gặp phải:
-
Heroku dynos không có địa chỉ IP tĩnh
"dynos không có địa chỉ IP tĩnh .. bạn không bao giờ có thể truy cập trực tiếp dyno bằng IP"
Ngay cả khi bạn thiết lập và chạy Redis trên dyno, tôi cũng không biết cách xác định phiên bản dyno đó và gửi yêu cầu redis. Điều này có nghĩa là máy chủ Redis của bạn có thể sẽ phải chạy trên cùng một dyno như máy chủ web / ứng dụng chính của bạn.
Điều này cũng có nghĩa là nếu bạn cố gắng mở rộng quy mô ứng dụng của mình bằng cách tạo nhiều web dynos hơn, bạn cũng sẽ tạo ra nhiều phiên bản redis cục bộ hơn. Dữ liệu sẽ không được chia sẻ giữa chúng. Đây không phải là một thiết kế có khả năng mở rộng đặc biệt, nhưng nếu ứng dụng của bạn đủ nhỏ để chỉ yêu cầu một web dyno thì nó có thể hoạt động.
-
Heroku dynos có một hệ thống tệp phù du
"không có tệp nào được viết hiển thị với các quy trình trong bất kỳ dyno nào khác và mọi tệp được viết sẽ bị hủy bỏ tại thời điểm dyno được dừng hoặc khởi động lại"
Theo mặc định, Redis ghi tệp RDB và bản ghi AOF vào đĩa. Bạn sẽ cần thường xuyên sao lưu những thứ này ở đâu đó để có thể tìm nạp và khôi phục sau khi khởi động lại dyno. Xem tài liệu về tính bền bỉ của Redis.
-
Heroku dynos thường được khởi động lại
"Dyno được chạy theo chu kỳ ít nhất một lần mỗi ngày hoặc bất cứ khi nào ống góp dyno phát hiện ra lỗi trong phần cứng bên dưới"
Bạn sẽ cần có khả năng khởi động máy chủ redis của mình mỗi khi dyno khởi động và khôi phục dữ liệu.
-
Heroku dynos có RAM 512MB
"Mỗi dyno được cấp phát 512MB bộ nhớ để hoạt động bên trong"
Nếu máy chủ Redis của bạn đang chạy trên cùng một dyno với máy chủ web của bạn, hãy trừ RAM cần thiết cho ứng dụng chính của bạn. Bạn cần bao nhiêu bộ nhớ Redis?
Dưới đây là một số câu hỏi nhằm ước tính và theo dõi việc sử dụng bộ nhớ của Redis:
- Redis:Kích thước Cơ sở dữ liệu trên Tỷ lệ Bộ nhớ?
- Lập hồ sơ sử dụng bộ nhớ Redis
-
Nhìn chung: Tôi khuyên bạn nên đọc 12 Ứng dụng Nhân tố để hiểu thêm một chút về mô hình ứng dụng dự định của heroku.
Phiên bản ngắn gọn là dynos nhằm mục đích trở thành những nhân viên độc lập có thể dễ dàng tạo ra và loại bỏ để đáp ứng nhu cầu và dynos truy cập vào các tài nguyên khác nhau để đọc hoặc ghi dữ liệu và phục vụ ứng dụng của bạn. Một cá thể redis là một ví dụ về tài nguyên. Như bạn có thể thấy từ các mục ở trên, bằng cách sử dụng tiện ích bổ sung redis, bạn sẽ nhận được một thứ được đảm bảo là tĩnh, ổn định và có thể truy cập được.
Đọc tài liệu:
- http://www.12factor.net/ - cụ thể là Quy trình và Dịch vụ
- Mô hình quy trình Heroku
- Blog Heroku - Mô hình Quy trình