How to design a distributed system

Post on 15-Jan-2015

533 views 1 download

Tags:

description

Introduce one framework of designing distributed system for small and medium company.

Transcript of How to design a distributed system

How to design a distributed system

By Jinglun Li

Agenda

• A framework of designing distributed system• Two critical challenges

RequirementsFunctionality Quality Constraint

Business Requirements A vertical search engine which gears the market. (e.g. a music search engine)

Release in three months…

10 machines…

Users Requirements 1. Show query suggestions when user types words.

2. Show records which user are most likely searching for.

1. Response quickly. 2. Search records are good.…

Development Requirements 1. Flexibility2. Maintainable3. Scalable…

Resource:One UEDOne Frontend DevelopersThree Backend Developers

From Mud to Structure

NEAT

Layer

Pipe and Filter

Logical View

Logical View (cont.)

4 + 1 Views

4 + 1 Views (cont.)

Development View

Development View (cont.)

• Src/– Php/– Search manager/– Search/– Index/– …

• Util/– Log/– String/– Persistence/

• …

Process View

Deployment View

Review

Challenges

Distribution Infrastructure

• Broker• Message• Publisher-Subscriber

Broker

Broker (Server Side)

Messaging

Publisher-Subscriber

Models Summary

Concurrency

• Half-Sync/Half-Async• Leader/Followers• Active Object• Monitor Objector

Half-Sync/Half-Async

Leader/Follower

Active Object

Monitor Object

Reference1. Pattern-Oriented Software Architecture-Volume 1 A System of Patterns

19962. Pattern-Oriented Software Architecture-Volume 3 Patterns for Resource

Management3. Pattern-Oriented Software Architecture-Volume 4 A Pattern Language for

Distributed Computing May 20074. Pattern-Oriented Software Architecture-Volume 5 On Patterns and Pattern

Languages 20075. SOA in Practice The art of Distributed System Design 20086. Domain-Driven Design Trackling Complexity in The Heart of Software 20107. The 4+1 View Model of Architecture8. Applying UML and Patterns An Introduction to Object-Oriented Analysis

and Design and Iterative Development 20069. 一线架构师 2009

Thanks!

Backup