美文网首页
【geekband】系统设计第二周

【geekband】系统设计第二周

作者: TACITURNLY | 来源:发表于2016-08-08 01:21 被阅读0次

    CAP理论Cibsustebct、availability、partition tolerance

    一致性:对数据有同样的view
    可用性:所有客户端都可以读写
    分区可容忍性:在物理网络分区下很好的工作
    CAP只能三取二
    强一致性:一台机器只能被一台服务器服务,实现的代价也高

    数据库系统

    早期:ACID propeties
    A-aomic原子性 对数据的修改:要么全部执行,要么全部不执行
    C-consistent
    I-isolated 隔离性 一个任务执行完成之前是不可见的,也就是说对于其他任务,其中间状态是不可见的
    D-durable 持久性

    ACID VS BASE

    basically available, soft state, eventually consistent

    数据库拆分

    • horizontal scaling(sharding)
    • functional scaling(scale out)
      单一->master/slave->垂直分区->sharding

    stateless

    一个系统伸缩性的好坏取决于对状态的管理(的好坏)
    session VS Cookie

    异步通信

    rpc-远程架构框架
    就是一个分包和解包的过程
    最大化将子系统分割与解耦
    好处--提高可用性

    有效利用Cache

    一致性与复制性:

    一致性介绍

    强一致性 某一个数据被更新之后,后续的任何操作所达到的结果都应该是更新之后的数据(传统关系型数据库所提供的保障)
    弱一致性 与强一致性相对
    最终一致性 弱一致性的一种

    一致性哈希

    分布式哈希table-扩展性和容错性不好
    平衡性,单调性 ,分散性,负载

    一致性哈希算法:

    通过32位环确定节点,变动只会影响局部

    虚拟节点:解决数据倾斜问题
    计算多个哈希,在多个位置放置虚拟节点,在虚拟节点上设置映射关系

    案例:cassandra,
    amazon's dynamo
    hbase
    mongoDB

    NoSQL数据库

    对数据库进行水平的切分
    简单的queriy方式:gets() 和 sets()
    通过key/value pairs获取
    不支持joins(因为做了水平切分)
    十亿以上记录都很高效

    thrift--facebook开发,protocol buffers--google开发

    scalability原则

    1.cashe--遇到性能问题的时候
    2.queue
    3.异步
    4.负载均衡
    5.并发
    6.replication赋值
    7.切分

    相关文章

      网友评论

          本文标题:【geekband】系统设计第二周

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