如何设计网络服务

2017-03-19  本文已影响10人  yangweigbh

设计需要考虑的因素:

如何设计

Services

将不同功能解耦到不同的service中。

Paste_Image.png

Redundancy

同一服务要有多个实例,一来可以解决单点失败问题,二是可以平衡负载。

数据存储也要有Copy来防止数据丢失。

Paste_Image.png

Partitions

数据量太多,则需要进行分片,或者分担负载。

Paste_Image.png

访问数据如何Scale

Paste_Image.png

随着访问量增大,app server要尽量使用shared-nothing architecture来进行minimized,访问压力都会落到database server。

如何保证database server的scalability和快速访问呢

Caches

Paste_Image.png

Cache有两种方式:

Cache是独立的一个服务器

Paste_Image.png

每一个Request Node有自己的Cache,同一请求通过hash分配到不同Request Node上

Paste_Image.png

Proxies:

在Database server前架设一个代理

通过代理可以将同一内容的请求包装到对database的一次请求里

Paste_Image.png

也可以将数据相近的请求包装到同一请求里(局部性原理)。

Paste_Image.png

Indexes

Index 可以加速数据查询,可以采取多级Index,可以减少index占用的空间

Paste_Image.png

Load Balancers

Queues

使用Queue可以解决client写数据等待时间过长的问题

Paste_Image.png

Refer:

http://www.aosabook.org/en/distsys.html

上一篇下一篇

猜你喜欢

热点阅读