Microservices là kiến trúc chia ứng dụng thành các dịch vụ nhỏ, độc lập, giao tiếp qua API, dễ mở rộng và triển khai riêng lẻ.
Nguyên tắc thiết kế (Design Principles)
Nguyên tắc | Mô tả | Ví dụ |
---|---|---|
Đơn trách nhiệm | Mỗi dịch vụ chỉ làm một việc duy nhất | Dịch vụ “Order” chỉ xử lý đơn hàng |
Độc lập triển khai | Có thể cập nhật một dịch vụ mà không ảnh hưởng dịch vụ khác | Cập nhật “Payment” không dừng “User” |
Phi trạng thái | Dịch vụ không lưu trạng thái, dùng cơ sở dữ liệu bên ngoài | Trạng thái phiên lưu trong Redis |
Giao tiếp nhẹ | Dùng API REST hoặc message queue thay vì giao thức nặng | REST qua HTTP hoặc RabbitMQ |
Cơ sở dữ liệu riêng | Mỗi dịch vụ có database riêng, không chia sẻ | “Order” dùng PostgreSQL, “User” dùng MongoDB |
Công cụ và công nghệ phổ biến (Tools & Technologies)
Công cụ | Mục đích | Ví dụ sử dụng |
---|---|---|
Docker | Đóng gói dịch vụ thành container | docker run -d my-service |
Kubernetes | Quản lý và mở rộng container | kubectl apply -f deployment.yaml |
API Gateway (Kong, NGINX) | Định tuyến và bảo mật API | Chuyển “/orders” đến dịch vụ Order |
RabbitMQ/Kafka | Hàng đợi tin nhắn cho giao tiếp bất đồng bộ | Gửi sự kiện “OrderCreated” qua Kafka |
Prometheus + Grafana | Giám sát và trực quan hóa hiệu suất | Theo dõi thời gian phản hồi API |
Triển khai Microservices (Deployment)
Ví dụ Dockerfile
FROM node:16
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Giải thích: Đóng gói dịch vụ Node.js, mở cổng 3000.
Ví dụ Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: order-service
spec:
replicas: 3
selector:
matchLabels:
app: order
template:
metadata:
labels:
app: order
spec:
containers:
- name: order
image: order-service:1.0
ports:
- containerPort: 3000
Giải thích: Triển khai 3 bản sao của dịch vụ “Order”.
Giao tiếp giữa các dịch vụ (Service Communication)
Phương thức | Mô tả | Ưu điểm | Nhược điểm |
---|---|---|---|
REST API | Giao tiếp đồng bộ qua HTTP | Dễ triển khai, phổ biến | Độ trễ cao nếu nhiều dịch vụ |
gRPC | Giao tiếp hiệu suất cao dùng Protocol Buffers | Nhanh, hỗ trợ đa ngôn ngữ | Phức tạp hơn REST |
Message Queue | Giao tiếp bất đồng bộ qua hàng đợi | Khả năng chịu lỗi tốt | Cần quản lý hàng đợi |
Event Sourcing | Lưu trữ và phát sự kiện thay vì trạng thái | Dễ theo dõi lịch sử | Khó đồng bộ dữ liệu |
Quản lý dữ liệu (Data Management)
Kỹ thuật | Mô tả | Ví dụ |
---|---|---|
Database per Service | Mỗi dịch vụ có cơ sở dữ liệu riêng | “Payment” dùng MySQL, “Inventory” dùng DynamoDB |
CQRS | Tách Command (ghi) và Query (đọc) | Ghi vào PostgreSQL, đọc từ Elasticsearch |
Saga Pattern | Quản lý giao dịch phân tán qua các bước | Choreography: Dịch vụ tự phát sự kiện |
Eventual Consistency | Đảm bảo dữ liệu nhất quán cuối cùng | Cập nhật “Stock” sau khi “Order” hoàn tất |
Giám sát và xử lý sự cố (Monitoring & Troubleshooting)
Công cụ/Lệnh | Mô tả | Ví dụ |
---|---|---|
docker logs [container] | Xem nhật ký container | docker logs order-service |
kubectl get pods | Liệt kê trạng thái pod | Kiểm tra pod bị crash |
Prometheus Query | Truy vấn số liệu hiệu suất | rate(http_requests_total[5m]) |
Distributed Tracing (Jaeger) | Theo dõi yêu cầu qua nhiều dịch vụ | Xác định độ trễ giữa “Order” và “Payment” |
Mẫu triển khai thực tế (Practical Deployment Example)
Cấu trúc hệ thống
- Order Service: REST API, PostgreSQL, port 3000.
- Payment Service: gRPC, Redis, port 4000.
- API Gateway: NGINX, định tuyến /orders → Order, /payments → Payment.
- Message Queue: Kafka xử lý sự kiện “OrderPlaced”.
Docker Compose
version: '3'
services:
order:
image: order-service:1.0
ports:
- "3000:3000"
environment:
- DB_HOST=postgres
payment:
image: payment-service:1.0
ports:
- "4000:4000"
environment:
- REDIS_HOST=redis
postgres:
image: postgres:13
environment:
- POSTGRES_USER=order
- POSTGRES_PASSWORD=secret
redis:
image: redis:6
Giải thích: Triển khai Order và Payment với database riêng.
Mẹo triển khai và xử lý sự cố
- Circuit Breaker: Dùng Hystrix hoặc Resilience4j để tránh lỗi lan truyền.
- Health Checks: Thêm endpoint /health cho mỗi dịch vụ.
- Logging: Dùng ELK (Elasticsearch, Logstash, Kibana) để tập trung log.
- Rollback: Chuẩn bị phiên bản trước trong CI/CD (ví dụ: blue-green deployment).
- Test: Dùng Chaos Engineering (Chaos Monkey) để kiểm tra độ bền.
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty