Kiến trúc hệ thốngTầng ứng dụng (Application Layer)

Tầng ứng dụng (Application Layer)

Nội dung bài

Tầng ứng dụng (Application Layer)

Chủ đề10 phút đọcThe System Design Primer - mục "Application layer"

Mục lục
  1. Nội dung gốc
  2. Ghi chú của người dịch

Tầng ứng dụng (Application Layer)

Nội dung gốc

Sơ đồ tách tầng web và tầng ứng dụng
Nguồn: Intro to architecting systems for scale

Tách tầng web (web layer) khỏi tầng ứng dụng (application layer, còn gọi là tầng nền tảng - platform layer) cho phép bạn mở rộng và cấu hình hai tầng này một cách độc lập. Thêm một API mới đồng nghĩa với thêm máy chủ ứng dụng, mà không nhất thiết phải thêm máy chủ web. Nguyên tắc đơn trách nhiệm (single responsibility principle) khuyến khích các dịch vụ nhỏ, tự chủ, phối hợp với nhau. Các nhóm nhỏ phụ trách các dịch vụ nhỏ có thể lên kế hoạch mạnh tay hơn cho tăng trưởng nhanh.

Tách tầng web và tầng ứng dụng để mở rộng độc lập Tầng web (giữ nguyên) Tầng ứng dụng (co giãn) + thêm máy mới, không đụng tới tầng web
Tầng web giữ nguyên số máy trong khi tầng ứng dụng co giãn riêng — thêm máy chủ ứng dụng mới (ví dụ cho một API mới) không đòi hỏi phải thêm máy chủ web. Chiều ngược lại cũng đúng: tầng web có thể mở rộng mà không đụng tới tầng ứng dụng.

Các worker ở tầng ứng dụng cũng giúp hiện thực hóa xử lý bất đồng bộ (asynchronism).

Microservices

Liên quan tới chủ đề này là microservices, có thể mô tả là một tập các dịch vụ nhỏ, dạng mô-đun, triển khai được độc lập. Mỗi dịch vụ chạy một tiến trình riêng và giao tiếp qua một cơ chế nhẹ, được định nghĩa rõ ràng, để phục vụ một mục tiêu nghiệp vụ. 1

Ví dụ, Pinterest có thể có các microservice sau: hồ sơ người dùng, người theo dõi, bảng tin (feed), tìm kiếm, tải ảnh lên, v.v.

Khám phá dịch vụ (Service Discovery)

Các hệ thống như Consul, Etcd và Zookeeper giúp các dịch vụ tìm thấy nhau bằng cách theo dõi tên, địa chỉ và cổng (port) đã được đăng ký. Kiểm tra sức khỏe (health check) giúp xác minh dịch vụ còn hoạt động đúng, và thường được thực hiện qua một endpoint HTTP. Cả Consul và Etcd đều có sẵn một kho khóa - giá trị (key-value store), hữu ích để lưu giá trị cấu hình và các dữ liệu dùng chung khác.

Nhược điểm: tầng ứng dụng

Nguồn và đọc thêm


Nguồn: The System Design Primer - mục "Application layer" — Donne Martin và cộng đồng đóng góp

Giấy phép: CC BY 4.0 (nguyên bản: Donne Martin, The System Design Primer)

Xem bản gốc

Bài tiếp theoCơ sở dữ liệu (Database)