美文网首页
如何设计网络服务

如何设计网络服务

作者: yangweigbh | 来源:发表于2017-03-19 13:29 被阅读10次

    设计需要考虑的因素:

    • Availability: 平均无故障时间

    • Performance:响应时间

    • Reliability: 数据可靠

    • Scalability:可扩展

    • Manageability:可维护

    • Cost:尽量降低费用

    如何设计

    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有两种方式:

    • Global Cache:

    Cache是独立的一个服务器

    Paste_Image.png
    • Distributed Cache:

    每一个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

    相关文章

      网友评论

          本文标题:如何设计网络服务

          本文链接:https://www.haomeiwen.com/subject/izzpnttx.html