Nội dung bài viết
Video học lập trình mỗi ngày
Bài viết này được đưa vào Series: Dự án DDD - vetautet.com có lượng đồng thời CAO
Câu nói hay
Bạn có cuộc sống rực rỡ của bạn, tôi có cuộc sống bình dị của tôi.
Lập trình viên hồi đó.
Thú thật mà nói, giờ đây các anh chị cũng có thể hỏi AI một phát là ra mấy nhát về câu hỏi: "HA (Tính khả dụng) là gì? Vì sao hệ thống luôn cần HA.." thì nó ra một loạt câu trả lời rất chất lượng, nhưng thành thật mà nói, cho dù có lý thuyết mà bạn không thực hành chúng thì cũng như việc bạn đi học bằng lái xe ô tô mà không bao bao giờ tự mình cấm vô lăng để điều khiển thực tế, tất cả mọi chuyện là để cho người khác.
Nói về HA
(High Availability)
đó dạng như là một chỉ số đo lường và từ đó kiếm tra khả năng của nó có thể hoạt động bình thường trong một khoảng thời gian nhất định ở trong một môi trường cụ thể.
Chính vì vậy nếu như anh chị điapply vào một vị trí như Backend
thì chắc chắn câu hỏi: "Anh Chị đã áp dụng công nghệ hay triển khai kiến trúc nào để hệ thống có tính khả dụng CAO?".
Thì chả nhẽ lại nói tôi chưa bao giờ hay sao? Rồi họ hỏi tiếp: "Hệ thống của bên Anh Chị là phân tán hay tập trung?" Vậy chẳng nhẽ lại nói là hệ thống tập trung, nghe như làm dự án tốt nghiệp vậy? Bởi vậy cho nên cố gắng lái chiếc xe đắt tiền và hãy cảm nhận nó.
Ở đây không có gì để trình bày vì sao phải sử dụng kiến trúc Master - Slave
khi có redis tham gia vào dự án, vì trong Cấu Hình Redis Master/Slave: Từng Bước Để Đạt Hiệu Năng Cao (50,000 Orders/Giây) - DDD Project JAVA đã nói quá rõ và quá chi tiết.
Mà ở đây chỉ cung cấp các file docker-compose
rất chi tiết chỉ cần run
là sẽ thiết lập một hệ thống như trên..
Redis: Master - Slave Docker-compose
File docker-compose-master.yml
version: '3.7'
services:
master:
image: 'redis:5.0.9'
container_name: redis-master
restart: always
command: redis-server --appendonly yes
ports:
- 6379:6379
slave1:
image: 'redis:5.0.9'
container_name: redis-slave1
restart: always
command: redis-server --appendonly yes --slaveof redis-master 6379
ports:
- 6380:6379
slave2:
image: 'redis:5.0.9'
container_name: redis-slave2
restart: always
command: redis-server --appendonly yes --slaveof redis-master 6379
ports:
- 6381:6379
Làm thể nào để RUN
...
~ docker-compose -f docker-compose-master.yml up
Sau đó mở 3 terminal để có thể thực hành như bài viết này.
Chú ý về Redis: Master - Slave
Master chỉ WRITE(ghi), sau đó có cơ chế sync()
qua cho Slave-01
, Slave-02
, Slave-0N
... Slave chỉ READ(đọc) không cho phép ghi tránh xung đột.
Vì vậy hãy suy nghĩ nếu như Master bị hẻo thì ai sẽ là người ghi Slave-01
hay Slave-02
hoặc Slave-0N
... Là ai? Công thức nào? Và setup thế nào?
... Tiếp tục...