什么是云原生?
以下是 CNCF 云原生计算基金会
对 云原生的定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
企业可以利用 云原生技术 ,在公有云、私有云、混合云上,构建 可伸缩 的应用。
具体的含义是:应用可以利用 云,更好地处理各种负载,提供更好的 可伸缩性。
云原生包括 4 个方面:
-
开发流程
瀑布式 -> 敏捷开发 -> DevOps -
应用架构
单体架构 -> n 层 -> 微服务 -
部署&打包
物理服务器 -> 虚拟机 -> 容器 -
基础架构
自建机房 -> 服务器托管 -> 云
SLA
SLA: Service Level Agreement
服务等级协议,指系统服务提供者(Provider)对客户(Customer)的服务承诺。这是衡量一个大型分布式系统是否“健康”的常见方法。
最常见的四个指标:
- 可用性
- 准确性
- 系统容量
- 延迟
1. 可用性
系统正常可用(我们可以正常访问系统)所占的时间比。
比如服务在一天 24h 中,有 86.4s 不可用,那么这个服务的可用性:
可用性 = 1 − 86.4 24 ∗ 60 ∗ 60 ∗ 100 % = 99.9 % 可用性 = 1 - \frac{86.4}{24*60*60}*100\% = 99.9\% 可用性=1−24∗60∗6086.4∗100%=99.9%
n 个 9
一般用几个9表示系统可用性。
可用性% | 几个9 | 每年宕机时间 | 每月宕机时间 | 每天宕机时间 |
---|---|---|---|---|
90% | 1个9 | 36.53 days | 73.05 hours | 2.40 hours |
99% | 2个9 | 3.65 days | 7.31 hours | 14.40 minutes |
99.9% | 3个9 | 8.77 hours | 43.83 minutes | 1.44 minutes |
99.99% | 4个9 | 52.60 minutes | 4.38 minutes | 8.64 seconds |
99.999% | 5个9 | 5.26 minutes | 26.30 seconds | 864 ms |
99.9999% | 6个9 | 36.51 seconds | 2.63 seconds | 86.40 ms |
4个9 就可以认为是高可用了。
2. 准确性
访问系统,返回错误的比例。
不同的系统,会使用不同的方式计算其准确性。
以下是一种方式:
准确率 = 1 − 产生错误的请求数 总请求数 ∗ 100 % 准确率 = 1 - \frac{产生错误的请求数}{总请求数}*100\% 准确率=1−总请求数产生错误的请求数∗100%
3. 系统容量
系统每秒可以处理的请求。
常见的指标:
- QPS: Query per second
- TPS: Transaction per second
4. 延迟
系统收到用户请求、到返回响应所用的时间。
常见的衡量方式:
- p95: 95% 的请求会在 n 秒内返回
- p99: 99% 的请求会在 n 秒内返回
参考资料
- https://blog.bytebytego.com/i/93929190/what-is-cloud-native
- https://time.geekbang.org/column/article/91166?cid=100025301