当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- 后端程序员必备:分布式事务基础篇
- Xamarin deploys IOS from scratch Walterlv.CloudKeyboard application
- Eight ways to optimize if else code
- 最全!阿里巴巴经济体云原生实践!(附网盘链接)
- Understanding design patterns
- Interpretation of deepmind's latest paper: the causal reasoning algorithm in discrete probability tree is proposed for the first time
- 供货紧张!苹果被曝 iPhone 12 电源芯片产能不足
- Ali! Visual computing developer's series of manuals (with internet disk link)
- 解析Istio访问控制
- Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
猜你喜欢

Service architecture and transformation optimization process of e-commerce trading platform in mogujie (including ppt)

Flink from introduction to Zhenxiang (7. Sink data output file)

rabbitmq(一)-基础入门

C language I blog assignment 03

华为云重大变革:Cloud&AI 升至华为第四大 BG ,火力全开

PMP experience sharing

Flink: from introduction to Zhenxiang (3. Reading data from collection and file)

Or talk No.19 | Facebook Dr. Tian Yuandong: black box optimization of hidden action set based on Monte Carlo tree search

擅长To C的腾讯,如何借腾讯云在这几个行业云市场占有率第一?

Ali tear off the e-commerce label
随机推荐
What can your cloud server do? What is the purpose of cloud server?
OR Talk NO.19 | Facebook田渊栋博士:基于蒙特卡洛树搜索的隐动作集黑盒优化 - 知乎
我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
金融领域首个开源中文BERT预训练模型,熵简科技推出FinBERT 1.0
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
分布式文档存储数据库之MongoDB基础入门
Bccoin tells you: what is the most reliable investment project at the end of the year!
It's worth seeing! EMR elastic low cost offline big data analysis best practice (with network disk link)
Eight ways to optimize if else code
svg究竟是什么?
阿里教你深入浅出玩转物联网平台!(附网盘链接)
【Python 1-6】Python教程之——数字
Win10 terminal + WSL 2 installation and configuration guide, exquisite development experience
From a friend recently Ali, Tencent, meituan and other P7 Python development post interview questions
The first open source Chinese Bert pre training model in the financial field
Ali teaches you how to use the Internet of things platform! (Internet disk link attached)
Adobe media encoder / me 2021 software installation package (with installation tutorial)
为 Docsify 自动生成 RSS 订阅
What is SVG?