Giới thiệu về kiến trúc ba lớp
Kiến trúc ba tầng là kiến trúc tương tác phổ biến nhất trên Internet. Nó xuất hiện khi phần máy chủ hai tầng được chia thành hai phần: lớp logic và lớp dữ liệu .
Nó trông giống như thế này:
Lớp máy khách là một phần của "ứng dụng phân tán" chịu trách nhiệm tương tác với người dùng. Lớp này không được chứa logic nghiệp vụ và không được lưu trữ dữ liệu quan trọng. Ngoài ra, nó không nên tương tác trực tiếp với lớp cơ sở dữ liệu mà chỉ thông qua lớp logic nghiệp vụ.
Tuy nhiên, vẫn còn một số logic ở đây. Đầu tiên, đây là sự tương tác với người dùng thông qua giao diện, xác thực dữ liệu do anh ta nhập, làm việc với các tệp cục bộ. Điều này cũng bao gồm mọi thứ liên quan đến ủy quyền người dùng và mã hóa dữ liệu khi làm việc với máy chủ.
Thứ hai, nó là một logic kinh doanh đơn giản. Ví dụ: nếu một cửa hàng trực tuyến gửi danh sách sản phẩm, chúng tôi có thể sắp xếp và lọc chúng ở phía khách hàng. Và lưu trữ dữ liệu nguyên thủy cũng có ở đây: bộ nhớ đệm, cookie người dùng đã đăng nhập và những thứ tương tự.
Lớp logic nghiệp vụ nằm ở cấp độ thứ hai, phần lớn logic nghiệp vụ tập trung vào nó. Bên ngoài nó, chỉ còn lại các đoạn được xuất cho máy khách, cũng như các phần tử logic được nhúng trong cơ sở dữ liệu (các thủ tục và trình kích hoạt được lưu trữ).
Một phần của máy chủ logic nghiệp vụ không chỉ chứa cùng logic này mà còn giải quyết các vấn đề về mở rộng quy mô: mã được chia thành các phần và được phân phối cho các máy chủ khác nhau. Một số dịch vụ yêu cầu cao có thể chạy trên hàng chục máy chủ. Tải giữa chúng được quản lý bởi bộ cân bằng tải.
Các ứng dụng máy chủ thường được thiết kế sao cho một bản sao khác của máy chủ có thể dễ dàng khởi chạy và bắt đầu hoạt động cùng với các bản sao khác của nó. Nghĩa là, ngay cả trong quá trình viết mã máy chủ, bạn sẽ không bao giờ đảm bảo rằng lớp tĩnh của bạn được khởi chạy trong một phiên bản duy nhất.
Lớp dữ liệu cung cấp lưu trữ dữ liệu và được đặt ở một cấp độ riêng biệt, theo quy định, được triển khai bằng các hệ thống quản lý cơ sở dữ liệu (DBMS), kết nối với thành phần này chỉ được cung cấp từ cấp độ máy chủ ứng dụng.
Lý do tách lớp dữ liệu
Việc tách lớp dữ liệu thành lớp thứ ba đầy đủ xảy ra vì nhiều lý do, nhưng lý do chính là tải tăng lên trên máy chủ.
Đầu tiên, cơ sở dữ liệu bắt đầu yêu cầu nhiều bộ nhớ và thời gian của bộ xử lý để xử lý dữ liệu. Do đó, chúng bắt đầu được đặt ở khắp mọi nơi trên các máy chủ riêng biệt.
Khi tải tăng lên, phần phụ trợ có thể dễ dàng được sao chép và có thể tăng mười bản sao của một máy chủ, nhưng không thể sao chép cơ sở dữ liệu - cơ sở dữ liệu vẫn là một thành phần duy nhất và không thể chia cắt của hệ thống.
Thứ hai, cơ sở dữ liệu đã trở nên thông minh - chúng có logic kinh doanh riêng. Họ bắt đầu hỗ trợ các thủ tục được lưu trữ, trình kích hoạt, ngôn ngữ riêng của họ, chẳng hạn như PLSQL. Và ngay cả những lập trình viên đã bắt đầu viết mã chạy bên trong DBMS cũng xuất hiện.
Tất cả logic không bị ràng buộc với dữ liệu đã được đưa ra phần phụ trợ và khởi chạy song song trên hàng chục máy chủ. Mọi thứ liên quan chặt chẽ đến dữ liệu vẫn nằm trong DBMS và đã có vấn đề về tải tăng lên phải được giải quyết bằng các phương pháp của riêng chúng tôi:
- Cụm cơ sở dữ liệu là một nhóm các máy chủ cơ sở dữ liệu lưu trữ cùng một dữ liệu và đồng bộ hóa dữ liệu đó bằng một giao thức cụ thể.
- Sharding - dữ liệu được chia thành các khối hợp lý và được phân phối trên các máy chủ cơ sở dữ liệu khác nhau. Rất khó để duy trì các thay đổi cơ sở dữ liệu với phương pháp này.
- Cách tiếp cận NoSQL là lưu trữ dữ liệu trong cơ sở dữ liệu được xây dựng để lưu trữ lượng dữ liệu khổng lồ. Đây thường không phải là cơ sở dữ liệu, mà là kho lưu trữ tệp cụ thể. Chức năng rất kém so với cơ sở dữ liệu quan hệ.
- Bộ nhớ đệm dữ liệu. Thay vì một bộ đệm đơn giản ở cấp cơ sở dữ liệu, toàn bộ bộ đệm DBMS đã xuất hiện, chỉ lưu trữ kết quả trong bộ nhớ.
Rõ ràng là cần có những người và / hoặc toàn bộ nhóm riêng biệt để quản lý vườn thú công nghệ máy chủ này, dẫn đến việc loại bỏ lớp dữ liệu thành một lớp riêng biệt.
Quan trọng! Tất cả các công nghệ tiên tiến được sinh ra từ sâu trong các tập đoàn CNTT lớn, khi các phương pháp cũ không còn đối phó với những thách thức mới. Việc tạo cơ sở dữ liệu thành một lớp riêng biệt không phải do bất kỳ lập trình viên nào phát minh ra, mà bởi một nhóm kỹ sư ở đâu đó sâu trong Oracle hoặc IBM.
Hấp dẫn! Khi Zuckerberg bắt đầu viết Facebook, anh ấy làm việc đơn giản trên PHP + MySQL. Khi có hàng triệu người dùng, họ đã viết một trình dịch đặc biệt để dịch tất cả mã PHP sang C ++ và biên dịch nó thành mã máy gốc.
Ngoài ra, MySQL không có khả năng lưu trữ dữ liệu của hàng tỷ người dùng, vì vậy Facebook đã phát triển khái niệm cơ sở dữ liệu NoSQL và viết một hệ quản trị cơ sở dữ liệu NoSQL mạnh mẽ phía máy chủ - Cassandra. Nhân tiện, nó được viết hoàn toàn bằng Java.
Sự mơ hồ về vị trí logic ứng dụng
Và mặc dù kiến trúc ba tầng gần như phân bổ vai trò rõ ràng giữa các bộ phận của nó, nhưng không phải lúc nào cũng có thể xác định chính xác vị trí cần thêm phần mới của logic nghiệp vụ (mã mới) trong hệ thống.
Một ví dụ về sự mơ hồ như vậy được thể hiện trong hình dưới đây:
Phần máy chủ có nền màu xám, phần máy khách được tô màu trắng. Một ví dụ điển hình của cách tiếp cận thứ hai (ngoài cùng bên phải) là các ứng dụng di động hiện đại. Phía máy khách (trên điện thoại) chứa chế độ xem (hiển thị), logic và dữ liệu. Và chỉ đôi khi dữ liệu này được đồng bộ hóa với máy chủ.
Một ví dụ về tùy chọn ngoài cùng bên trái là một máy chủ PHP điển hình, có tất cả logic trên máy chủ và nó cung cấp cho máy khách HTML tĩnh. Ở đâu đó giữa hai thái cực này, dự án của bạn sẽ được định vị.
Khi bắt đầu công việc, sau khi làm quen với dự án, bạn sẽ cần tham khảo ý kiến của các lập trình viên đang làm việc với nó, về những nơi tốt hơn để bạn triển khai logic của nhiệm vụ tiếp theo.
Cảm thấy tự do để làm như vậy. Đầu tiên, họ không trèo vào tu viện của người khác bằng điều lệ của họ. Thứ hai, mọi người (và cả bạn nữa) sẽ dễ dàng tìm thấy mã bạn cần ở nơi mà bạn mong muốn tìm thấy.
GO TO FULL VERSION