THIẾT KẾ KIẾN TRÚC PHẦN MỀM LÀ GÌ? CÁC MẪU KIẾN TRÚC PHỔ BIẾN

Chào những bạn, kể từ khi các phần mềm được thành lập và hoạt động thì chúng đã được trở nên tân tiến qua các dạng khác nhau. Từ những trò chơi đen trắng cho tới những siêu ứng dụng mà chúng ta dùng hằng ngày như Facebook, Youtube…

Vậy đã bao giờ các bạn thắc mắc làm sao mà tín đồ ta tạo ra được những áp dụng đó chưa? làm vậy nào mà tín đồ ta xây cất ra được những ứng dụng với số lượng người dùng nhiều như thế?

Trong nội dung bài viết hôm ni mình sẽ cùng chúng ta tìm phát âm 5 mẫu phong cách thiết kế phần mềm, khối hệ thống phổ biến nhất hiện tại nay. Biết đâu qua bài viết này thì các các bạn sẽ phần nào tưởng tượng ra được tín đồ ta đã tạo ra các ứng dụng mà chúng ta vẫn dùng hằng ngày như nỗ lực nào ^^


Mục Lục Nội Dung

I. 5 mẫu kiến trúc phần mềm, hệ thống phổ biến

I. 5 mẫu bản vẽ xây dựng phần mềm, khối hệ thống phổ biến


#1. Bản vẽ xây dựng phân lớp (Layered Architecture)

Trong tiếng Anh, cụm từ “N-tier architecture” hoặc “Multi-tiered architecture” thường được dùng làm mô tả cho kiến trúc phân lớp.

Bạn đang xem: Thiết kế kiến trúc phần mềm

*
*
*
*
*
*

Có những áp dụng mà các thành phần (chức năng) chỉ chuyển động khi có xử lý tài liệu và khi không tồn tại xử lý thì không hoạt động.

Với phong cách thiết kế hướng sự khiếu nại này bạn cũng có thể liên tưởng tới các ứng dụng cầm tay hoặc các ứng dụng desktop đều được thiết kế với với phong cách thiết kế này.

Ưu điểm:

+ Với câu hỏi xử lý theo sự kiện hỗ trợ cho ứng dụng có thể xử lý nhiều lô ghích phức tạp

+ Đây là 1 trong những kiến trúc có khă năng mở rộng xuất sắc do nếu còn muốn thêm new một thành phần chỉ việc thêm những sự khiếu nại mới cho những thành phần đó.

Nhược điểm:

+ có khá nhiều chức năng, thành phần tương quan đến nhau để cho việc kiểm thử đôi khi chạm mặt khó khăn.

+ Nhiều chức năng khác nhau thỉnh thoảng lại xử trí cùng một sự kiện đang dẫn cho lỗi…

II. Lời kết

Trên đây là 5 mẫu mã kiến trúc, thi công phần mềm mình thấy khá phổ biến hiện nay. Mỗi chủng loại thiết kế đều phải sở hữu những ưu điểm, điểm yếu kém riêng.


Còn trên thực tiễn sẽ còn tương đối nhiều mẫu xây đắp ứng dụng, ứng dụng khác rất có thể kể mang lại như Blackboard, Intercepter, Peer-to-Peer…

Khi trở nên tân tiến một áp dụng hay tạo ra một hệ thống thì việc chọn thiết kế, phong cách xây dựng thích hợp để giúp đỡ tối ưu được khôn cùng nhiều giá cả và giúp thuận tiện mở rộng sau này. Hẹn gặp mặt lại chúng ta trong các bài viết tiếp theo.

March 31, 2020September 29, 2020cherry & kiwi649 Views 0 Comments
Architectural pattern, mẫu bản vẽ xây dựng phần mềm, software architect pattern

Mẫu con kiến trúc phần mềm (Architectural pattern) là các kiến trúc thiết kế hệ thống đã được chứng tỏ từ các dự án thực tế và được tận dụng như thể tham chiếu để sử dụng trong các dự án tương tự. Những kiến trúc sư phần mềm đã tìm phương pháp để đúc kết và thực hiện lại những kiến thức về phong cách thiết kế đã được ứng dụng thành công xuất sắc trong thời gian trước đó. Bài viết này rước nguồn cảm xúc từ cuốn sách “Common Software Architectural Patterns you need to lớn know” của Paul Clements and Rick Kazman.

Mẫu kiến trúc được có mang là:

Một tập hợp các quyết định xây đắp được tìm thấy những lần trong vượt khứ
Có phần đông đặc tính được có mang tốt rất có thể sử dụng lại
Được mô tả như là trường class của loài kiến trúc
*

Phát triển một loài kiến trúc rất có thể được coi như là quy trình lựa chọn, may đo và phối hợp giữa những mẫu pattern. Những kiến trúc sư phần mềm phải đưa ra quyết định lựa chọn những mẫu thiết kế, làm rứa nào khiến cho nó tương xứng với các ngữ cảnh rõ ràng và những ràng buộc của vấn đề.

Trong nội dung bài viết này, tôi sẽ trình bày với chúng ta về các mẫu kiến trúc được sử dụng thoáng rộng trong các dự án thực tế trên gắng giới.

Kiến trúc module (module pattern)

Kiến trúc phân lớp (Layerd pattern)

Là dạng phong cách xây dựng rất thông dụng ngày nay, chắn chắn chắn ai cũng đã từng nghe qua về phong cách xây dựng 3 lớp, MVC, MVVM,… vớ cả đều có chung một mục đích là tổ chức, phân tung mã mối cung cấp theo nhiều công dụng và nhiệm vụ khác biệt trong hệ thống.

Trong các hệ thống hướng đối tượng, UI, Database và các dạng mã dị kì được viết thẳng vào trong súc tích nghiệp vụ. Với theo chiều ngược lại, mã nghiệp vụ lâu thọ lại được nhúng vào trong UI, DB code. Không tồn tại sự phân cấp cụ thể dẫn đến sự tinh vi trong tổ chức, thừa nhiều phụ thuộc lẫn nhau giữa những mã nguồn. Chính vì điều này diễn ra là vị lập trình nó rất giản đơn và nhanh.. Nhưng chỉ với lúc mới bắt đầu. Khi các đoạn mã tương quan đến nhiệm vụ được giàn trải ở khắp nơi, vấn đề này sẽ trở phải rất phức hợp và rất cạnh tranh để phát âm hiểu được nghiệp vụ. Biến hóa trên giao diện người dùng cũng hoàn toàn có thể làm biến đổi business logic. Để chuyển đổi business logic, chúng ta phải đi ngược lên các mã UI, cơ sở dữ liệu hoặc các phần tử của công tác khác để xem đông đảo chỗ nên phải thay đổi theo. Điều này không cần nói cũng đủ gọi nó gây ra khó khăn như thế nào.

Có 3 layers được phân tách ra:

User Interface (Presentation): là gần như chương trình chạy xe trên desktop / CLI hoặc các web page. Các chương trình client hôm nay thường là các rich client (nơi luồng công việc và kiểm soát input đầu vào đặt ở client)

Business xúc tích (Domain): là nơi đặt các xúc tích và ngắn gọn về nhiệm vụ chính của hệ thống, layer này sẽ tiếp nhận các request từ phía Client, giải pháp xử lý và lưu trữ data thông qua Data source layer.

Data source: trọng trách chính của layer này là thực thi các tác vụ lưu trữ dữ liệu và liên lạc với những applications không giống (được request từ bỏ business xúc tích và ngắn gọn layer).

*
1.1 Layered kiến thiết with segmented layers

Ưu điểm:

Chúng ta chỉ cần hiểu đều lớp dưới lớp chúng ta đang làm;Mỗi lớp có thể được thay thế bởi một thể hiện tương tự (equivalent implementation), không ảnh hưởng đến các lớp khác;Một lớp hoàn toàn có thể được áp dụng bởi một vài lớp cao cấp khác nhau.

Những vô ích là:

Lớp không thể đóng gói (encapsulate) toàn bộ mọi vật dụng (một field được sản xuất UI, rất có thể cũng rất cần phải được chế tạo DB);Các lớp bổ sung (extra) hoàn toàn có thể gây tác động đến hiệu suất, đặc biệt nếu ở các tier không giống nhau.

Xem thêm: Tổng hợp các phần mềm đo diện tích đất chuẩn nhất hiện nay, tổng hợp các phần mềm đo diện tích đất hiện nay

Ứng dụng:

Kiến trúc thiết kế website (N-Tier)

Kiến trúc Component với Connector

Broker Pattern

Mẫu này được thực hiện để cấu tạo các khối hệ thống phân tán với những thành phần tách rời. Những thành phần này có thể tương tác với nhau bằng những yêu cầu thương mại & dịch vụ từ xa. Broker phụ trách điều phối địa chỉ giữa những thành phần.

Máy công ty sẽ đưa ra broker như là giao diện kết nối nhận request từ phía fan dùng. Khi quý khách hàng yêu ước một thương mại & dịch vụ từ broker với broker sẽ chuyển hướng quý khách hàng đến một dịch vụ phù hợp đã đăng ký trước đó.

*

Nhược điểm

Broker bổ sung thêm 1 lớp broker nghỉ ngơi giữa bắt buộc làm cho quy mô trở lên phức hợp và tăng latency thân client cùng server.Broker hoàn toàn có thể là điểm đối chọi single point of failure và cũng hoàn toàn có thể là đích tấn công của hacker.Broker cũng tương đối khó

Ứng dụng:

Phần mềm trung gian như Apache Active
MQ, Apache Kafka, Rabbit
MQ với JBoss Messaging quy mô MVC
*

Kiến trúc này, có cách gọi khác là mô hình MVC, phân chia một ứng dụng liên quan thành 3 phần:

Model – chứa tác dụng và tài liệu cốt lõi
View – hiển thị thông tin cho tất cả những người dùng (có thể xác minh nhiều hơn một chính sách xem)Controller – xử lý yêu cầu đầu vào từ người dùng

Kiến trúc này được thực hiện để phân bóc cách biểu diễn thông tin nội bộ khỏi cách thức trình bày tin tức và gật đầu đồng ý từ tín đồ dùng. Nó bóc các nguyên tố và chất nhận được tái thực hiện code hiệu quả.

Ứng dụng:

Kiến trúc cho những ứng dụng web bằng các ngôn ngữ xây dựng chính.Các web framework như Django với Rails.

Ưu điểm:

Nhẹ, tiết kiệm ngân sách và chi phí băng thông. Khi sử dụng, tín đồ dùng hoàn toàn có thể sử dụng ứng dụng trên website cần tác động gửi và nhận tài liệu một bí quyết liên tục. Vị đó, vấn đề giảm băng thông giúp cho website hoạt động tốt và bất biến hơn. Đây là một quy mô với kết cấu tương đối đơn giản. Cho dù bạn không tồn tại quá nhiều chuyên môn cũng rất có thể sử dụng được.

Nhược điểm:

Sự phức tạp hoàn toàn có thể không xứng đáng giá cho những giao diện bạn dùng đơn giản dễ dàng Mô hình MVC có thể không cân xứng với một trong những bộ dụng cụ giao diện người tiêu dùng Kiến trúc con đường ống cùng lọc (Pipe & filter pattern)

Pattern này được áp dụng để kết cấu hóa các hệ thống sản xuất và xử trí luồng dữ liệu. Từng bước xử lý được đi cùng trong một thành phần bộ lọc (filter). Dữ liệu đã xử lý sẽ tiến hành truyền qua mặt đường ống (pipe). đông đảo ống này có thể được thực hiện để nhất quán hoặc buffering.

*

Ứng dụng:

Các quá trình yêu cầu bởi vì ứng dụng có thể chia nhỏ ra thành các bước độc lập.Hệ thống buộc phải phân tán quy trình xử lý trên nhiều máy chủ khác nhau

Nhược điểm

Mẫu ống và bộ lọc thường không phải là một trong những lựa chọn giỏi cho một khối hệ thống tương tác. Có số lượng lớn những bộ lọc tự do có thể thêm số lượng đáng kể túi tiền tính toán.Kiến trúc này thường không tương xứng cho các đo lường thời gian dài
Kiến trúc Client – Server

Kiến trúc này bao gồm hai thành phần: một server và những clients. Server sẽ hỗ trợ dịch vụ cho nhiều clients. Ngược lại, những client gửi request tới hệ thống để xử lý và trả các service khớp ứng cho phía client đó. Tuy vậy song đó, máy chủ vẫn luôn luôn tiếp tục đón nhận requests từ clients.

Ứng dụng:

các ứng dụng trực đường như email, chia sẻ tài liệu và ngân hàng.

Nhược điểm

Gây lên vụ việc bottle neck trên server
Server có thể là điểm single point
Kiến trúc Peer lớn Peer

Pattern này, những thành phần đơn chiếc được điện thoại tư vấn là peer. Các peers này có thể chuyển động như một khách hàng hàng, yêu thương cầu thương mại & dịch vụ từ những peers khác với như một thiết bị chủ, hỗ trợ dịch vụ cho các peers. Một peer gồm thể chuyển động như một người tiêu dùng hoặc máy chủ hoặc cả hai, và bao gồm thể đổi khác vai trò của chính nó linh hoạt theo thời gian.

Sử dụng:

Các mạng lưới share file như Gnutella với G2)Các giao thức đa phương tiện như P2PTV và PDTP.Kiến trúc SOA

phong cách thiết kế hướng dịch vụ là 1 trong những chiến dịch cho thấy dự định xây dựng toàn bộ các tài sản phần mềm của khách hàng đó bằng phương pháp sử dụng cách thức luận lập trình hướng dịch vụ. Trong số đó Dịch vụ là khúc dữ liệu ứng dụng hoặc các cấu phần được cấu tạo để chúng hoàn toàn có thể liên kết với các cấu phần ứng dụng khác một phương pháp dễ dàng.

*

Nhược điểm

Nền tảng kiến trúc này tương đối phức tạp để xây dựng
Không thể điều hành và kiểm soát sự trở nên tân tiến của các dịch vụ độc lập
Phát sinh những vấn đề tương quan đến tính năng xử lý tại tầng middware
Kiến trúc Publish/Suscriber

Trong hệ thống phân tán lớn, message broker là một trong thành phần hết sức quan trọng. Tại sao vì sao bản thân xin đồ vật lỗi không giải thích ở đây. Hiện nay nay, gồm 2 messaging mã sản phẩm phổ trở thành làmessage queuingvàpub/sub messaging.

*

Việc đưa message vào hàng hóng là một giải pháp hay lúc ta mong phân tán message cho nhiều người dân nhận giúp giảm tải cho những worker xử lý. Vd như Rabbit
MQ rứa vì phải xử lý 1 tác vụ khôn cùng ngốn khoáng sản thì rất có thể chia bé dại thành những tác vụ nhỏ dại và phân tán.

Message queuingđược thi công để thực hiện danh sách task một giải pháp lần lượt. Khi 1 message đến, hàng đợi sẽ tiếp nhận. Giả dụ task trước này đã thực thi xong, message đó có khả năng sẽ bị xóa, message tiếp nối mới được giữ hộ đi để giải pháp xử lý task tương ứng. Vậy thì sinh hoạt đây, vớimessage queuing, giả dụ như một message bị lỗi gì đó, thì có thế các message sau sẽ không được giải pháp xử lý theo tuần từ nữa.

Pub/Sub messagingcũng làm trách nhiệm giống nhưmessage queuing. Mặc dù nhiên, cơ chế củapub/subcó khác biệt:

Pub – Publish: producer đang đẩy data vào một trong những chanel.Sub – Subscribe: consumer đăng ký nhận dữ liệu xuất phát từ một chanel.
*

Cái này giống như bạn xem Youtube. Bạnsubscribemột channel. Lúc một producer làm một clip đẩy lên Youtube. Bạn sẽ nhận dữ liệu, tức xem đoạn phim đó tại channel mà các bạn đãsubscribe. Khi anh em của bạn cũngsubscribechannel đó, thì lúc producer đẩy video lên, các bạn và bạn bè của các bạn cùng thừa nhận được đoạn clip để xem. Và tất nhiên, chúng ta cũng có thể đăng ký các channel.

Và tất yếu mỗi messaging model có một ưu thế riêng cùng tùy vào câu hỏi mà thực hiện chúng.

Message Queue| Pub/Sub | +————–+—————+ | Rabit
MQ | Kafka | +————–+—————+ | Active
MQ | Kinesis | +————–+—————+ | SQS | Rocket
MQ | +————–+—————+ | Zero
MQ | | +————–+—————+ | MSMQ | | +————–+—————+ | Iron
MQ | | +————–+————–

Đối với loại “message queue”: là những các loại message queue truyền thống, tương thích làm khối hệ thống trao thay đổi message giữa các service.Việc bảo vệ mỗi consumer mọi nhận được message với duy tuyệt nhất một lần là đặc trưng nhất.

Ứng dụng:

Leave a Reply

Your email address will not be published. Required fields are marked *

x

Welcome Back!

Login to your account below

Retrieve your password

Please enter your username or email address to reset your password.