5

Theo nghĩa truyền thống, N-tier có nghĩa là tách ứng dụng thành "tầng" và đặt mỗi "tầng" trên các máy chủ khác nhau. Điều này đã được thực hiện trong vòng ít nhất 3 lý do:Kiến trúc N-tier có nghĩa là gì?

  1. Maintenance:

    a) Mã Maintenance: dễ dàng hơn để làm sửa lỗi và bổ sung tính năng.

    b) Bảo trì phần cứng: Lấy một máy chủ không làm gián đoạn dịch vụ từ cấp khác.

  2. Hiệu suất: Một máy chủ thường không đủ nhanh để xử lý yêu cầu web, tính toán logic nghiệp vụ và truy cập cơ sở dữ liệu/tệp cùng một lúc.

  3. Khả năng mở rộng: Cụ thể ngang khả năng mở rộng

    a) Fault Tolerance: Khả năng có nhiều hơn 1 máy chủ vật lý mỗi tầng có nghĩa là khi 1 server bị down, ứng dụng vẫn có thể hoạt động như một toàn thể.

    b) Cân bằng tải: Có nhiều phiên bản của cấp giúp dịch vụ số lượng lớn yêu cầu.

Ngày nay, phần cứng và mạng đủ nhanh để phân phát hàng nghìn yêu cầu mỗi giây trên một máy chủ. Ngoài ra, từ buzz cho CNTT ngay bây giờ là "hợp nhất". Vì vậy, ngay cả khi ứng dụng được chia thành các tầng, chúng có thể sẽ chỉ lưu trữ trên các máy ảo trên một máy chủ duy nhất.

Tôi nghĩ ngày nay khi mọi người nói về kiến ​​trúc N-tier, họ đang nói về việc phân tách các mối quan tâm trong ứng dụng. Nó là một sự phân tách logic hơn là một sự phân tách vật lý. Tôi nghĩ rằng miễn là chúng tôi đạt được sự tách biệt tốt các mối quan tâm và khớp nối lỏng lẻo, các ứng dụng không phải là N-tier. Có vẻ như nhiều lập trình viên nghĩ rằng kiến ​​trúc N-tier là một tiêu chuẩn vàng mà mọi ứng dụng web phải tuân thủ.

Vì vậy, kiến ​​trúc N-tier cho bạn ngày nay là gì?

Trả lời

1

Bảo mật cho một? Tôi muốn bạn nhấn máy chủ web của tôi hơn máy chủ ứng dụng của tôi!

2

Tôi nghĩ đó là, và luôn luôn là một sự phân biệt nhân tạo. Tôi đồng ý với tiền đề của bạn rằng nó đề cập chủ yếu để tách hợp lý các thành phần những ngày này. Tuy nhiên, vẫn còn rất nhiều ứng dụng quá lớn (sử dụng khôn ngoan hoặc dữ liệu khôn ngoan) để vừa với một máy, vì vậy ý ​​tưởng tách ứng dụng thành các thành phần rời rạc vì lý do khả năng mở rộng chắc chắn không chết.

+0

Đồng ý. Tách thành các thành phần rời rạc vì lý do khả năng mở rộng chưa chết nhưng việc hợp nhất phần cứng và mạng và máy chủ chắc chắn sẽ đẩy mạnh số lượng ứng dụng cần thực hiện điều này. –

+0

Nó có lẽ không chết, nhưng ví dụ trong trường hợp của các trang web có nhiều cách hiệu quả hơn để xử lý nhiều lượt xem trang hơn. – Durden81

3

Từ bài viết wikipedia tôi đọc:

Nói chung, tầng hạn được sử dụng để mô tả phân phối vật lý của thành phần của một hệ thống trên các máy chủ riêng biệt, máy tính, hoặc các mạng (nút chế biến). Một kiến ​​trúc ba tầng sau đó sẽ có ba nút xử lý . Các lớp tham chiếu đến một nhóm hợp lý các thành phần có thể hoặc không thể nằm trên một nút xử lý.

Tôi nghĩ khái niệm "lớp" và khái niệm "tầng" được trộn lẫn với thời gian. Cá nhân tôi chỉ muốn nói về các lớp chứ không phải là các tầng vì tôi thích các giải pháp PAAS mà mối quan tâm của tôi chỉ là trên phần mềm và ngành đang dần chuyển động theo hướng này.

Ngoài ra khi bạn lập kế hoạch cho một ứng dụng có thể mở rộng đáng kể, tôi vẫn không nghĩ rằng bạn nên suy nghĩ về n-tier cho khả năng mở rộng. Trên thực tế, các trang web rất phổ biến với rất nhiều lưu lượng chỉ chia thành 3 thành phần: Máy chủ cơ sở dữ liệu, máy chủ web (bao gồm máy chủ lưu trữ) và một vài mạng CDN (mạng phân phối nội dung). Loại phân tách này có thể đạt được trong bất kỳ ứng dụng nào. Tuy nhiên, để kết luận, tôi nghĩ một lập trình viên chỉ nên nghĩ rằng các lớp abuot và tách mối quan tâm trong ứng dụng để đạt được nhiệm vụ quan trọng nhất (và khó khăn): bảo trì trong thời gian dài.

+1

Đồng ý. Tôi đoán các nhà quản lý/người quản lý trên/người phỏng vấn muốn sử dụng từ 'N-tier' vì nó được chứng minh rằng N-tier cung cấp khả năng bảo trì, hiệu suất và khả năng mở rộng nếu được thực hiện đúng. Nhưng nó nên được xem theo cách khác xung quanh. Ngoài ra, tôi nghĩ về [bài viết này] (http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html) mỗi khi nói về khả năng mở rộng. –

+1

+1 - Lớp hợp lý, Cấp là vật lý. Cả hai khái niệm vẫn rất phù hợp và không nên nhầm lẫn. –