Thứ Ba, 21 tháng 10, 2025

Microservices Cheat Sheet

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ắcMô tảVí dụ
Đơn trách nhiệmMỗi dịch vụ chỉ làm một việc duy nhấtDịch vụ “Order” chỉ xử lý đơn hàng
Độc lập triển khaiCó thể cập nhật một dịch vụ mà không ảnh hưởng dịch vụ khácCập nhật “Payment” không dừng “User”
Phi trạng tháiDịch vụ không lưu trạng thái, dùng cơ sở dữ liệu bên ngoàiTrạ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ặngREST qua HTTP hoặc RabbitMQ
Cơ sở dữ liệu riêngMỗ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 đíchVí dụ sử dụng
DockerĐóng gói dịch vụ thành containerdocker run -d my-service
KubernetesQuản lý và mở rộng containerkubectl apply -f deployment.yaml
API Gateway (Kong, NGINX)Định tuyến và bảo mật APIChuyển “/orders” đến dịch vụ Order
RabbitMQ/KafkaHàng đợi tin nhắn cho giao tiếp bất đồng bộGửi sự kiện “OrderCreated” qua Kafka
Prometheus + GrafanaGiám sát và trực quan hóa hiệu suấtTheo 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ứcMô tảƯu điểmNhược điểm
REST APIGiao tiếp đồng bộ qua HTTPDễ triển khai, phổ biếnĐộ trễ cao nếu nhiều dịch vụ
gRPCGiao tiếp hiệu suất cao dùng Protocol BuffersNhanh, hỗ trợ đa ngôn ngữPhức tạp hơn REST
Message QueueGiao tiếp bất đồng bộ qua hàng đợiKhả năng chịu lỗi tốtCần quản lý hàng đợi
Event SourcingLưu trữ và phát sự kiện thay vì trạng tháiDễ theo dõi lịch sửKhó đồng bộ dữ liệu

Quản lý dữ liệu (Data Management)

Kỹ thuậtMô tảVí dụ
Database per ServiceMỗi dịch vụ có cơ sở dữ liệu riêng“Payment” dùng MySQL, “Inventory” dùng DynamoDB
CQRSTách Command (ghi) và Query (đọc)Ghi vào PostgreSQL, đọc từ Elasticsearch
Saga PatternQuản lý giao dịch phân tán qua các bướcChoreography: Dịch vụ tự phát sự kiện
Eventual ConsistencyĐảm bảo dữ liệu nhất quán cuối cùngCậ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ệnhMô tảVí dụ
docker logs [container]Xem nhật ký containerdocker logs order-service
kubectl get podsLiệt kê trạng thái podKiểm tra pod bị crash
Prometheus QueryTruy vấn số liệu hiệu suấtrate(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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master