Different models of Distributed Architecture
I just want to know different models to implement/design a distributed architecture.
I know some of the technologies in this field like
RPC
Java RMI & Socket
.Net Remoting & Socket
XML-RPC
SOAP based web service开发者_运维百科
HTTP based web application
REST ful web service
But there are lot more technologies that I know, but what are different models to implement distributed architecture?
At an architecture level there are 4 ways to integrate systems:
- Shared Database
- Message Queue
- Request Response Call
- Message Transfer
Within each one there are many technologies that are available
We can categorize architectures into 6 different types from one of videos of Neal Ford; Mark Richards
Traditional layered architecture like Model View Controller (Spring MVC etc)
Event driven architecture using Messaging API, where an event has been dispatched to Queue/Topics & subscribers/receivers consume the events so that different components are loosely coupled
Service oriented architecture, very lengthy to explain but you can find lot of info from google
Pipe line (or filter) architecture - A message will be flown from producer to consumer through transformer and transformer modifies the message depending on business need
Micro kernel architecture ( plug and play) - It will have one core system, common to multiple components & specific components (plug-in module) ,which can be plugged in on need basis
Space based architecture - The architecture is scalable by adding more resources to it (it is best suitable if you are using non relational database like NoSQL database)
You really should start with requirements, they have major impact on architecture.
- Single machine / multiple / multiple and geo-reduntant ?
- Shared / private memory / mix ?
- Synchronous / asynchronous communication / both ?
- Fault tolerance ? Recovery ?
- Scalability ? Transactions ?
- Large data / computationally intensive ?
Please add further questions I'm sure I forgot something important.
精彩评论