前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《从0开始学架构》读书笔记

《从0开始学架构》读书笔记

作者头像
用户2825413
发布2020-02-20 13:50:17
3860
发布2020-02-20 13:50:17
举报

高性能

任务分解(微服务)

简单的系统更容易高性能、更容易拓展

高可用

本质是通过冗余实现高可用(多台、多机房、多通道), 但是冗余带来了更大的复杂性. 比如任务分配器(例nginx)连接检测、管理、维护、中断处理.

常见冗余形式 1主3备、4主0备、3主1备等

思考: zookeeper属于1主多备, 而memcache集群属于全主0备, 根据具体业务场景进行选型.

最大难点: 存储高可用(有状态)

分布式环境: 某个时间点, 数据肯定不一致.

常见公式: 数据+逻辑=业务

存储高可用的难点不在于如何备份数据, 而在于如何减少或规避数据不一致对业务造成的影响.

引申 CAP 定理

不可能同时满足 一致性、可用性和分区容错性. 最多同时满足两个.

引入状态决策: 判定当前是否异常, 进行纠正.

但是又引来更复杂问题: 状态决策的高可用也是无法满足的.

常见状态决策: 独裁式(单点)、协商式(主备) 和 民主式(选举)

民主选举

每个单体作出决策, 按多数取胜, 引入新问题(脑裂).

如何解决脑裂问题: 投票节点数必须超过总节点数的一半.

但又引入新问题: 如果超过一半节点故障, 而不是脑裂, 则导致选举直接失败, 系统宕机.

可拓展性

  1. 预测变化
  2. 应对变化(变化层防腐, 稳定层) 系统拆分变化层、稳定层
  3. 观察问题理解问题角度不同 提炼抽象层、实现层, 举例: 规则引擎
  4. 低成本 低成本与高可用存在本质上的冲突. 引入新技术, 新思路节省资源.
  5. 安全 功能安全: XSS、CSRF、Sql注入 架构安全: DDOS(难以实现), 依靠运营商强大带宽、流量清洗

存储高性能

主从 -> 从提供读服务

主备 -> 备不提供服务

行式数据库和列式数据库对比:

  • mysql : 行式数据库, 查库已行为维度
  • hbase : 列式数据库

业务读取更近的多个列, 行式数据库占优. 如果只是统计某个字段, 没必要取行后再找列, 而只需要查询一列就可以了. IO将大大减少. 别且列的存储相似度高, 压缩比 比行式更有优势.

关于CAP理论

上面我们提到了CAP理论, 这里我们详细说一下

分布式系统上理论是没有 CA 的, 原因很简单, 当我们牺牲P时, 一致性就无法保证, 如果保证一致性, 就需要禁止写入, 就无法保证可用, 所以当分区故障时, 一致性和可用性是无法同时保证的.

CP: 当优先保证一致性时, 牺牲可用性.

AP: 当优先保证可用性时, 各自维护数据返回, 无一致性.

CAP细节:
  • CAP关注的是数据而不是系统
  • CAP 是理论忽略网络延迟的, 否则任务分区都不能保证一致性, 但并不意味着无法使用分布式, 分具体业务场景, 有些非常重要的信息无法忽略, 可以互相主备, 所有操作都发生在主数据库上
BASE

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

基本可用, 软状态, 最终一致性.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 呆呆熊的技术路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高性能
  • 高可用
    • 最大难点: 存储高可用(有状态)
      • 引申 CAP 定理
        • 民主选举
        • 可拓展性
        • 存储高性能
        • 关于CAP理论
          • CAP细节:
            • BASE
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档