系统设计-基础

一、系统设计基础

1、分布式系统关键特性

(1)可扩展性-水平&垂直,扩展设计

(2)可靠性-错误可恢复,容错设计

(3)可用性-提供正常服务,冗余设计

(4)性能:一定时间内处理数据量,响应时间,吞吐量

(5)可维护性:系统修复或维护的难度

2、关键组件

(1)负载均衡

提升性能(增加并发),可用性(冗余),可扩展(水平扩展),负载均衡算法(最少连接,ip hash,轮询)

(2)缓存

更快的获取数据(临时热点数据),cdn

缓存更新策略:

Write-through: 先更新数据库,再更新缓存,性能最差,一致性最好

Write-around:写:先更新数据库,再失效缓存;读:如果缓存存在则返回,否则从数据库读取并更新缓存,可能导致cache miss,缓存击穿

Write-back:先写缓存,再写数据库,性能最好,一致性最差

缓存问题:(限流降级)

穿透:数据库缓存都不存在(校验,存空置,布隆)

击穿:缓存不存在(布隆,热点不过期)

雪崩:大批量缓存不存在(分散,随机过期时间)

bigkey:拆key,客户端合并

缓存淘汰策略

(3)分库分表

水平:按某个字段划分

垂直:按服务划分库,按业务划分表

分库分表算法:list,range,hash

(4)分区分桶

先分区再分桶,分区物理位置,分桶最小物理单元

(6)索引

提升读性能,降低写性能

(7)代理

正向(客户端代理),反向(服务的代理)

(8)冗余和副本

避免单点故障

(9)sql vs nosql

sql:关系型,acid,结构化数据

nosql:key-value,文档,列,图,大数据量,分布式,非结构化

(10)cap理论

zk(cp 不一致不可用),nacos(ap 最终一致)

(11)一致性hash

(12)长轮询,websocket,event

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 性能 性能指标 1、响应时间指从某个请求从出发到接受到响应消耗时间。2、吞吐量指系统在单位时间内可以处理的请求数量...
    神人9876阅读 2,224评论 0 0
  • 前一篇文章介绍了系统的两种扩展模式,垂直扩展和水平扩展。本节将介绍采用水平扩展方式的负载均衡和一致性哈希的概念。 ...
    MeazZa阅读 3,788评论 1 2
  • 本文讨论一下什么是API,以及如何进行设计出好的API。 API的概念 API:Application Progr...
    MeazZa阅读 4,533评论 0 1
  • 本文将主要介绍系统设计中的异步执行和消息队列。这里假设读者已经有了一部分这方面的知识,一些概念的介绍不会过于深入,...
    MeazZa阅读 5,334评论 0 0
  • 前面的文章介绍了系统的水平扩展、负载均衡等概念,采用负载均衡的方式,可以提高系统的可用性,在某一服务器出现故障时,...
    MeazZa阅读 3,567评论 0 0

友情链接更多精彩内容