RPC关键指标分析与企业实践
稳定性保障策略:
熔断:假设A调用B,B调用C,C发生故障,返回给B的时间超时,导致A不断地去调用B,进程里不断的堆积B,导致进程堵塞,所以使用熔断的措施
限流:保护被调用方,防止流量把服务压垮
超时控制:避免浪费资源在不可用的节点上
请求成功率:
负载均衡:让请求合理分配,不让单个服务器,压力过大
重试:一次请求失败后,多次发送请求
长尾请求:
什么是长尾请求?
就是响应时间明显高于平均请求时间的请求
普通请求在发送超时的时候才会重新发送,长尾请求发送之后,会缩短响应时间,超过这个时间会直接发送第二个请求,就不会等第一个请求回来了
易用性:
开箱即用:
合理的默认参数选择,丰富的文档
周边工具:
生成代码工具,脚手架工具
观测性:
Log,Metric,Tracing
内置观测性服务
就是可以观测到内置观测服务,可以看到框架内部的运行状况
高性能:
可以从多个层面去优化:高性能的代码,或者更好的网络协议
认识储存与数据库
数据库怎么保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存储到别的存储系统么?
数据库只能处理结构化数据么?
有哪些操作方式,要用什么编程语言?
存储系统:一个提供了读写,控制类接口,能够安全有效的把数据持久化的软件,就可以称为存储系统
存储系统的特点
作为后端软件的底座,性能敏感
存储系统软件架构,容易受硬件影响
存储系统代码,既简单,又复杂
路径不能复杂,但是考虑的情况应该复杂
RAID系统
RAID0
单机存储系统怎么做到高性能?
多块磁盘简单组合
数据条带化存储,提高磁盘带宽
没有额外的容错设计
RAID1
一块磁盘对应一块外镜磁盘
真实空间利用率仅50%
容错能力强
RAID 0 + 1
结合了RAID0 和RAID1
真实空间利用率仅
容错能力强,写入带宽好
数据库和存储系统不一样么?
关系是什么?
关系就是反应实体之间的联系
SQL就是人操作关系的语言
关系型数据库是存储系统,但是在存储系统之外,还有其他功能
- 结构化数据库
- 支持事务
- 支持复杂查询语言
非关系型数据库也是存储系统,但是一般不要求严格的结构化
半结构化数据
可能支持事务