当前位置:网站首页>10 common software architecture patterns
10 common software architecture patterns
2020-11-08 13:02:00 【osc_0vd38ylb】
Python The actual combat community
Java The actual combat community
Long press to identify the QR code below , Add as needed
Scan code, pay attention to add customer service
Into the Python community ▲
Scan code, pay attention to add customer service
Into the Java community ▲
Source Java Technical station
https://mp.weixin.qq.com/s/6R4QP-gAimHzi-I8js8B6A
Want to know how to design a large enterprise class system ? Before starting major code development , We have to choose the right Architecture , It will give us the functionality and quality attributes we need . therefore , Before we apply them to our designs , You should first understand the different architectures .
- What is architecture pattern -
According to Wikipedia ,
Architecture patterns are generic solutions to common problems in software architecture in a given context 、 Reusable solutions . Architecture pattern is similar to software design pattern , But more broadly .
In this paper , I will briefly introduce the following 10 Common architecture patterns , And its use 、 Advantages and disadvantages .
- Hierarchical mode -
This pattern can be used to build programs that can be decomposed into subtask groups , Each of them is at a specific level of abstraction . Every time we serve higher levels .
The most common in general information systems 4 The layers are divided as follows :
Presentation layer The presentation layer ( That is to say UI layer )
Application layer application layer ( That is the service layer )
Business logic layer Business logic layer ( It's the domain level )
Data access layer Data access layer ( Data persistence layer )
application
General desktop applications
Electronic Commerce Web Applications
- client - Server mode -
The model consists of two parts : One server and multiple clients , The server provides services to multiple clients . The client makes a request to the server , The server provides services to these clients , after , The server continues to listen for requests from clients .
application
Online applications , E-mail 、 File sharing and banking
- A master-slave mode -
The model is also divided into two parts : Master module and slave module . The master module distributes work between the same slave modules , And calculate the final result according to the structure returned from the module .
application
In database replication , The master database is considered the authoritative data source , And keep it in sync with the database
Peripheral devices connected to the computer system bus ( Master and slave drives )
- Pipeline filter mode -
This pattern can be used to build systems that generate and process data streams . Each processing step is contained in a filter component , Data to be processed is piped . These pipes can be used to buffer or synchronize .
application
compiler . Lexical analysis is performed using different filters in turn 、 analysis 、 Syntax analysis and code generation
Workflow in bioinformatics
- Broker Pattern -
This pattern uses decoupled components to build distributed systems , These components can interact through remote service calls . The agent component is responsible for coordinating communication between components .
Servers put their functions ( Services and features, etc ) Publish to agent , Client requests service from agent , The agent then forwards the client request to the appropriate service according to its registry .
application
Message broker software , Such as Apache ActiveMQ, Apache Kafka, RabbitMQ and JBoss Messaging.
- P2P Pattern -
In this mode , Each individual component is called a peer ( Or peer ,peer). A peer can act as a client ( Request services from other peers ), It can also act as a server ( Providing services to other peers ). The same peer may be both a client , It's the server again , And it can dynamically change its role .
application
File sharing network , Such as Gnutella and G2
Multimedia protocol , Such as P2PTV and PDTP
Cryptocurrency based products , Such as bitcoin and blockchain
- Things bus mode -
This pattern mainly deals with components , Yes 4 An important component : Event source 、 Event Listener 、 Channel and event bus . The event source sends the message to a specific channel on the event bus , Listeners subscribe to specific channels . When the message is sent to the channel , Listeners that subscribe to the channel receive notification of the message .
application
Android Development
Notification services
- MVC Pattern -
This pattern divides the interactive application into three parts ,
Model —— Including core functions and data
View —— Show information to users ( You can define multiple views )
controller —— Handle user input
This is done to separate the internal representation of the data from the form of user input and presentation , This decouples the components , At the same time, it can also make efficient code reuse .
application
Internet application architecture of mainstream programming languages
Network framework , Such as Django and Rails.
- Blackboard mode -
This pattern is useful for problems where there is no definitive solution , The blackboard model consists of three parts :
blackboard —— A structured global memory , Contains objects in the solution domain
Knowledge source —— Professional module with its own meaning
Control components —— choice 、 Configuration and execution modules
All components have access to the blackboard , Components may generate new data objects to be added to the blackboard , Components look for specific types of data on the blackboard , And matching these data sources with existing patterns .
application
speech recognition
Vehicle identification and tracking
Protein structure identification
Sonar signal interpretation
- Interpreter mode -
This pattern is often used to design components to interpret programs written in a dedicated language , It mainly specifies how to estimate program lines , A statement or expression written in a specific language . The basic idea is to design a class for each language symbol .
application
Database query language , Such as SQL
The language used to describe a communication protocol
- Architecture pattern comparison -
Pattern |
advantage |
shortcoming |
Hierarchical mode |
A low-level service can be used by different high-level services ; |
It's not a pervasive Architecture ; |
CS Pattern |
Easy to model series of services , For client request |
Requests are usually responded to in different threads on the server ; |
A master-slave mode |
accuracy —— The execution of the service is delegated to different slave modules |
The slave module is independent : No shared state ; |
Pipe filter mode |
Support concurrent processing , Where input 、 When the output consists of data streams , The filter starts calculating as soon as it receives the data ; |
Overall efficiency is limited by the slowest filter program ; |
The proxy pattern |
Allow objects to be dynamically modified 、 increase 、 Delete 、 relocation , Content distribution is transparent to developers |
Service description needs to be standardized |
P2P Pattern |
Support decentralization operations ; |
There is no guarantee of service quality , Because the nodes cooperate voluntarily ; |
Event bus mode |
It's easy to add new publishers to the system 、 Subscribers and connections ; |
Scalability can be a problem , Because all information is transmitted through the same time bus |
MVC Pattern |
The first mock exam is easy to build multiple views , You can connect or disconnect at runtime |
Added complexity , User actions can lead to many unnecessary updates |
Blackboard mode |
Easy to add new applications ; |
It's hard to modify the structure of a data space , Because all applications will be affected ; |
Interpreter mode |
May support highly dynamic behavior ; |
Because interpretive languages are usually slower than compiled languages , So performance can be a problem |
Copyright notice : Content source network , The copyright belongs to the creator . Unless you can't confirm , We all mark the author and the source , Please let me know if there is any infringement , We will delete it immediately and apologize . thank you !
Programmer column Scan code and pay attention to customer service Press and hold to recognize the QR code below to enter the group
Recent highlights are recommended :
My girlfriend thinks the annual salary is 50 Ten thousand is the average level , What do I do ?
The sexy goddess of the biggest straight men forum in China overturned
IntelliJ IDEA Fully optimized settings , Efficiency bars !
Here's a look Good articles to share with more people ↓↓
版权声明
本文为[osc_0vd38ylb]所创,转载请带上原文链接,感谢
边栏推荐
- 阿里云加速增长,进一步巩固领先优势
- Summary of template engine
- Stm32uberide download and install - GPIO basic configuration operation - debug (based on CMSIS DAP debug)
- nat转换的ip跟端口ip不相同的解决方法
- C language I blog assignment 03
- Istio traffic management -- progress gateway
- [Python 1-6] Python tutorial 1 -- number
- 一文读懂机器学习“数据中毒”
- 分布式文档存储数据库之MongoDB基础入门
- Suitable for C / C + + novice learning some projects, do not give me to miss!
猜你喜欢
Tencent, which is good at to C, how to take advantage of Tencent's cloud market share in these industries?
用科技赋能教育创新与重构 华为将教育信息化落到实处
How to write a resume and project
“他,程序猿,35岁,被劝退”:不要只懂代码,会说话,胜过10倍默默努力
Written interview questions: find the smallest positive integer missing
The most complete! Alibaba economy cloud original practice! (Internet disk link attached)
Summary of template engine
为什么 Schnorr 签名被誉为比特币 Segwit 后的最大技术更新
Flink从入门到真香(3、从集合和文件中读取数据)
Python基础语法
随机推荐
Drink soda, a bottle of soda water 1 yuan, two empty bottles can change a bottle of soda, give 20 yuan, how much soda can you
DeepMind 最新论文解读:首次提出离散概率树中的因果推理算法
模板引擎的整理归纳
This paper analyzes the top ten Internet of things applications in 2020!
Windows10关机问题----只有“睡眠”、“更新并重启”、“更新并关机”,但是又不想更新,解决办法
Powershell 使用.Net对象发送邮件
为 Docsify 自动生成 RSS 订阅
rabbitmq(一)-基础入门
啥是数据库范式
WLAN 直连(对等连接或 P2P)调研及iOS跨平台调研
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
Istio traffic management -- progress gateway
Harbor项目高手问答及赠书活动
在51CTO学院Get到PMP证书
漫画:寻找股票买入卖出的最佳时机(整合版)
This time Kwai tiktok is faster than shaking.
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
What can your cloud server do? What is the purpose of cloud server?
如何将 PyTorch Lightning 模型部署到生产中
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom