首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云云众生s

    SLA、SLO与SLI的区别

    SLI 最佳实践 克服与 SLI 相关的挑战涉及遵循最佳实践,以提高其准确性和相关性: 创建精确且可衡量的 SLISLI 应精心设计,反映对用户最重要的服务的特定方面。 避免模糊或过于宽泛的指标,以确保 SLI 的有效性。 保持 SLI 简单:在设计 SLI 时,简单性是关键。清晰直接的指标更容易理解和在团队之间沟通。 谁需要 SLISLI 的重要性延伸到组织内的各种角色。任何参与服务开发、部署或维护的人员都可以从将 SLI 纳入其流程中受益。 开发团队使用 SLI 来监控代码更改的影响。 运维团队利用 SLI 来确保系统可靠性。 领导层依靠 SLI 来就资源分配和策略做出明智的决策。 在这里,我们深入探讨了一个概述 SLI、SLO 和 SLA 的示例,并使用了实际场景。 SLI:服务级别指标 SLI 用作衡量 API 性能和可靠性的指标。

    2K10编辑于 2024-06-13
  • 来自专栏IT运维技术圈

    老杨必须给你整明白SLA、SLO、SLI这三玩意

    SLA是服务协议,SLO是目标,SLI是指标。 Google SRE书里定义SLI是用户体验的量化,SLO是基于SLI的目标,SLA是合同承诺。 比如,开车时,SLI是仪表盘的速度,SLO是限速80km/h,SLA是罚款条款。 这样帮你从修车变预防保养。 概念走起 SLI:测系统健康 SLI测具体数据。 Google SRE说SLI应从用户角度选。 如可用性是成功请求比例。 举例,电商网站用HTTP状态码算。 AWS文档说延迟SLI常见用95百分位。 比如,用wrk测API。 • 大屏实时展示 SLI。 • SLA 报告直接对接销售/客户管理部门。

    1K10编辑于 2025-10-09
  • 来自专栏程序技术知识

    Go 冒泡、鸡尾酒、快速、插入 排序

    需要比较的次数 for j := 0; j < len-1; j++ { if sli[i] < sli[j] { sli[i], sli[j] = sli[j], sli[i] := sli[0] //遍历除了标尺外的所有元素,按照大小关系放入左右两个切片内 //初始化左右两个切片 left_sli := []int{} //小于基准的 right_sli := [ left_sli, sli[i]) } else { //放入右边切片 right_sli = append(right_sli, sli[i]) } } //再分别对左边和右边的切片进行相同的排序处理方式递归调用这个函数 left_sli = quickSort(left_sli) right_sli = quickSort(right_sli) //合并 left_sli = append(left_sli - { if tmp < sli[j] { //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换 sli[j+1], sli[j] = sli[j], tmp }

    35220编辑于 2021-12-22
  • 来自专栏旅途散记

    Go slice扩容N连问

    %p=%p,sliceheader的地址%p\n", sli, len(sli), cap(sli), sli, &sli[0], &sli) // [main]原始sli为[]string{"宋江" :%p=%p,sliceheader的地址%p\n", sli, len(sli), cap(sli), sli, &sli[0], &sli) // [main]调用f2()之后sli为[]string 由上面代码可知,append(sli1,sli2...),并不等价与sli1 = append(sli1,sli2[0],sli2[1].. \n", len(sli), cap(sli), sli, &sli[0], &sli) // 4,4,内存地址c=内存地址c(发生了扩容),内存地址x sli = append(sli, 6, 7 的地址%p\n", len(sli), cap(sli), sli, &sli[0], &sli) // 6,6,内存地址d=内存地址d(发生了扩容),内存地址x sli = append(sli,

    51740编辑于 2023-09-05
  • 来自专栏aoho求索

    Go 语言入门系列:切片的应用实践

    ("sli len is %v\n", len(sli)) fmt.Printf("sli cap is %v\n", cap(sli)) 输出的结果为: sli value is [1] sli len (sli)) fmt.Printf("sli cap is %v\n", cap(sli)) 输出的结果如下: sli value is [0 0] sli len is 2 sli cap is 4 is %v, cap is %v, value is %v\n", &sli1, len(sli1), cap(sli1), sli1) fmt.Printf("sli2 pointer is %p, len is %v, cap is %v, value is %v\n", &sli2, len(sli2), cap(sli2), sli2) newSli1 := append(sli1, 5 &sli3, len(sli3), cap(sli3), sli3) newSli3 := append(sli3,5) fmt.Printf("newSli3 pointer is %p, len

    48330发布于 2021-07-16
  • 来自专栏新亮笔记

    Go - 切片

    fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli),sli) fmt.Println("sli[1] ==", sli[1]) fmt.Println("sli[:] ==", sli[:]) fmt.Println("sli[1:] ==", sli[1:]) fmt.Println("sli[:4] ==", v\n",len(sli),cap(sli),sli) sli = append(sli, 9) fmt.Printf("len=%d cap=%d slice=%v\n",len(sli ),cap(sli),sli) sli = append(sli, 10) fmt.Printf("len=%d cap=%d slice=%v\n",len(sli),cap(sli) =%d cap=%d slice=%v\n",len(sli[:len(sli)-2]),cap(sli[:len(sli)-2]),sli[:len(sli)-2]) //删除开头 2 个元素

    76720发布于 2019-07-08
  • 来自专栏LinkinStar's Blog

    Golang的slice

    slice的长度和容量 我们先来看一个最简单的案例 sli := make([]int, 2) fmt.Printf("len=%d cap=%d\n", len(sli), cap(sli)) sli = append(sli, 1) fmt.Printf("len=%d cap=%d\n", len(sli), cap(sli)) 我们创建一个长度为2的slice然后打印一下它的len和cap。 <= 2048; i++ { sli = append(sli, i) if cap(sli) ! sli = append(sli, i) } fmt.Println(sli) sli = sli[1:3:5] fmt.Println(sli) fmt.Println(len(sli), cap(sli)) } sli = sli[1:3:5] reslice的时候也可以指定cap,但是注意的是,这个时候并不是指定的整体容量为5,而是容量为原来

    56820编辑于 2022-09-01
  • 来自专栏golang云原生new

    【切片】基础不扎实引发的问题

    省略部分代码 sli = append(sli, newSli...) // ... 省略部分代码 return } 想表达的意思是: 传入的 sli 切片属于旧切片,期望在 sli 切片上追加 newSli 中的元素,最终期望得到的 sli 里面是包含 newSli 元素的 func appendDemo(sli []int) []int { sli = append(sli, 999) return sli } 实际上,此处传入的仍然是 mySlice 的拷贝 []int)[]int{ sli = append(sli, []int{3,4}...) 是一样的,因此可以通过这个拷贝的指针去修改实际底层数组的值 func appendDemo2(sli *[]int){ *sli = append(*sli, []int{1000,10001}.

    28930编辑于 2023-10-05
  • 来自专栏流浪猫的golang

    golang slice 与list 的性能分析。

    package main import ( "time" "fmt" "container/list" ) func main() { t := time.Now() sli :=make([]int ,10) for i := 0; i<1*100000*1000;i++ { sli=append(sli, 1) } fmt.Println :=make([]int ,10) for i := 0; i<1*100000*1000;i++ { sli=append(sli, 1) } l:=list.New *100000*1000;i++ { l.PushBack(1) } // 比较遍历 t := time.Now() for _,_ = range sli :=make([]int ,10) for i := 0; i<1*100000*1000;i++ { sli=append(sli, 1) } l:=list.New

    2.5K10发布于 2018-08-02
  • 来自专栏OpenCloudOS社区

    云原生场景下,如何缓减容器隔离漏洞,监控内核关键路径?

    SLI 是一个常态化性能跟踪机制,需要对很多内核热点函数进行跟踪,这就要求 SLI 的实现必须是低开销的。此外,SLI 会使用很多内核核心函数,这些函数都无法被 eBPF 调用到。 图片3、方案实现SLI 特性特性描述 用户态周期性采集 SLI 通过 Cgroup 接口提供容器的性能数据,用户态可以通过这些数据对容器性能进行监控。 4、方案效果1)开启 SLI 的方式:echo 1> /proc/sli/sli_enabled2)用户态周期性采集使用方式监控指标 访问方式 容器内负载情况监控 延迟阈值设置文件:/proc/sli/sched_latency_threshold例如:echo "schedlat_rundelay_thr=24" > /proc/sli/sched_latency_threshold 获取 mbuf 中的堆栈信息:cat /sys/fs/cgroup/cpuacct/<Pod A>/cpuacct.mbuf4)SLI 应用实例下图是使用 SLI 监控 redis 容器内存干扰采集的数据

    63520编辑于 2023-03-02
  • 来自专栏腾讯云原生团队

    云原生场景下,如何缓减容器隔离漏洞,监控内核关键路径?

    SLI 是一个常态化性能跟踪机制,需要对很多内核热点函数进行跟踪,这就要求 SLI 的实现必须是低开销的。此外,SLI 会使用很多内核核心函数,这些函数都无法被 eBPF 调用到。 3、方案实现 SLI 特性 特性描述 用户态周期性采集 SLI 通过 Cgroup 接口提供容器的性能数据,用户态可以通过这些数据对容器性能进行监控。 4、方案效果 1)开启 SLI 的方式: echo 1> /proc/sli/sli_enabled 2)用户态周期性采集使用方式 监控指标 访问方式 容器内负载情况监控 /sys/fs/cgroup /<Pod A>/cpuacct.sli对应其中的schedlat_ioblock项 内存延迟 /sys/fs/cgroup/memory/<Pod A>/memory.sli 3)mbuf 问题定位数据采集方式 :/proc/sli/sched_latency_threshold例如:echo "schedlat_rundelay_thr=24" > /proc/sli/sched_latency_threshold

    1.2K40编辑于 2023-02-16
  • 来自专栏SRE

    SRE方法论之服务质量目标

    一、服务质量术语:SLI、SLO、SLA指标服务质量指标(SLI):服务的某项服务质量的一个具体量化指标。 常见的SLI包括请求延迟(处理请求所消耗的时)、错误率(请求处理失败的百分比)、系统吞吐量(每秒请求数量)、可用性(服务可用时间的百分比,运维行业经常用9的数量来描述可用程度。 SLI也可以是一些业务指标,例如用户投诉率之类的。重点是可量化、可确定的。目标SLO是服务质量目标(Objective):服务的某个SLI的目标值,或者目标范围。 SLO的定义是SLI≤目标值,或者范围下限≤SLI≤范围上限。例如,对于搜索服务来说,用户希望返回结果的速度应该是很“快”的,那么我们可以定义一个SLO,要求搜索请求的平均延迟小于100ms。 图片二、SLI、SLO、SLA制定原则1、以用户体验为中心服务的服务质量指标有很多,不可能将监控系统中的所有指标都定义为SLI。只有理解用户对系统的真实需求才能真正决定哪些指标是否有用。

    58300编辑于 2023-08-18
  • 来自专栏东风微鸣技术博客

    七步成诗-快速创建有效 SLO

    SLI SLO 定义 在之前的文章 - SLA、SLO、SLI 定义 -「译文」使用 Prometheus 和 Grafana 实现 SLO - 东风微鸣技术博客 (ewhisper.cn)[2] 中, 我们已经介绍过 SLI SLO SLA 的定义。 SLI SLI: Service Level Indicator, 即 服务水平指标, 这是了解服务健康状况的一个关键指标,也是设置 SLO 的基石。 典型的 SLI 表达式如下: 好的事件/所有的事件 * 100% 典型的一个 SLI 就是:HTTP 请求的延迟 其表达式如下: 响应时间小于 5s 的 http 请求 / 所有的请求 * 100% SLO 有这么几个关键词: •可用性(目标)•时间范围•具体条件(SLI) 还是继续之前的例子: •用户群:互联网客户群•服务:登录服务•客户期望:登录成功无报错•SLI:错误率•SLO:过去 5min 错误率

    83610编辑于 2022-12-01
  • 来自专栏gopher云原生

    指导思想:服务质量目标

    包括 SLO 在内,书中一共定义了三个术语: SLI :服务质量指标(Indicator) SLO :服务质量目标(Objective) SLA :服务质量协议(Agreement) 1、指标 SLI 在实际的实践过程中,第一步应该根据用户对系统的真实需求,把真正有用的、具有代表性的指标定义为 SLI 。 另外,对于一些常见的 SLI ,我们应该为其标准化,构建一套可以重用的 SLI 模板,避免每次都要重新评估。 可以定义为 SLI ≤ 目标值,或 范围下限 ≤ SLI ≤ 范围上限 。例如,定义一个 SLO ,要求 99% 的请求会在 10ms 内完成 。 其对应的 SLI 可以是:达不到 SLO 的现象的发生频率。 对于目标的选择方面,就不是一个纯粹的技术问题了,还需涉及到产品和业务层面的决策。SLI 和 SLO 的选择都应该直接反映该决策。

    1.2K10编辑于 2022-06-08
  • 来自专栏全栈程序员必看

    TLSF算法1:二级索引的计算

    一级数组将空闲块划分为类是2的幂(16、32、64、128等);和第二级将每个第一级类别线性划分,划分的数量(简称第二级别索引数,2SLI)是用户可配置的参数。 当系统需要分配一个指定大小为r的内存时,需要计算出相应的两级位图的值,其公式如下所示: 为了有一个直观的结果,我们假设SLI=4,即第二级索引将一级的内存块大小范围划分为2∧SLI=16块,则一级索引 当然如果先求出f,而SLI已知,自然可以通过计算得出s的值。 int getS2(int r, int f){ return (r >> (f - SLI))- (1<<SLI) ; } 四、实验结果 将上面几个计算函数实现有后,在main函数中添加测试数据 ); } int getS2(int r, int f){ return (r >> (f - SLI))- (1<<SLI) ; } main(){ int i; int

    1K20编辑于 2022-07-05
  • 来自专栏腾讯云原生团队

    腾讯TencentOS 十年云原生的迭代演进之路

    SLI (Service Level Indicator) 是用于观测 Service level 的指标,比如  Latency、吞吐、错误率等; SLO 是基于 SLI 指定的目标; 从云原生的角度看 TencentOS 设计了云原生 SLI,通过在内核中实时的搜集和计算(低开销方式),提供充分的、专业的、不同维度的 SLI 指标,供上层( K8s )使用,用户可基于此定个相应的 SLO。 云原生 SLI 包括如下模块: CPU SLI 收集并计算 CPU 维度的 SLI,具体包括调度延迟、内核态阻塞延迟、Load、Context-switch 频率等。 Memory SLI 收集并计算 Memory 维度的 SLI,具体包括内存分配延迟、内存分配速度、直接回收延迟、内存Compaction 延迟、内存回收延迟、内存分配失败率等。 IO SLI 收集并计算 IO 维度的 SLI,具体包括 IO 延迟、IO 吞吐、IO 错误率等。 NET SLI 收集并计算网络维度的 SLI,具体包括网络延迟、网络吞吐、IO 错误率等。

    2.6K20发布于 2021-06-18
  • 来自专栏AI+运维:智能化运维的未来

    以 SLI/SLO 为驱动的可观测性:从定义到告警策略 — 写给在值班室里泡过夜的你

    先把概念说清楚(别糊弄自己)SLI(ServiceLevelIndicator):服务质量的度量指标。比如请求成功率、请求延迟P95、图像处理错误率等。 SLI要聚焦用户感知的关键路径,不要把数据库连接池指标当作SLI(除非连接池直接影响用户体验)。 从SLI到SLO:如何设定(实操派)拆业务场景:把产品按用户路径拆出来(登录、下单、支付、检索、流媒体播放)。每条路径定义1-2个SLI。 举个例子:电商下单服务SLI1(成功率)=成功下单数/下单请求数SLO1=成功率≥99.95%(30天)SLI2(延迟)=p95(order_submit_latency)SLO2=p95≤500ms( 数据质量门槛:ETL/metricspipeline也要做SLO(指标可靠性本身就是SLI),否则你看到的都是假象。

    21610编辑于 2025-11-28
  • 来自专栏reizhi

    NV 196.75 WHQL驱动 空喜一场

    详细说明如下: a.在搭载单颗GPU的《孤岛危机:弹头》中性能提升达13%; b.在SLI模式下的《孤岛危机:弹头》中性能提升达30%; c.在搭载单颗GPU的《H.A.W.X》中性能提升达 13%; d.在SLI模式下的《H.A.W.X》中性能提升达15%; e.在搭载单颗GPU的《Left 4 Dead》中性能提升达30%; f.在SLI模式下的《Left 4 Dead 》中性能提升达28%; 除此之外,还加入了SLI支持等众多改进优化。

    21630编辑于 2022-09-26
  • 来自专栏运维开发故事

    通过Prometheus来做SLI/SLO监控展示

    什么是SLI/SLO SLI,全名Service Level Indicator,是服务等级指标的简称,它是衡定系统稳定性的指标。 SRE通常通过这两个指标来衡量系统的稳定性,其主要思路就是通过SLI来判断SLO,也就是通过一系列的指标来衡量我们的目标是否达到了"几个9"。 上面仅仅是简单的介绍了一下SLI/SLO,更多的知识可以学习《SRE:Google运维解密》和赵成老师的极客时间课程《SRE实践手册》。 下面来简单介绍如何使用Prometheus来进行SLI/SLO监控。 上面是SLI,下面是错误总预算和已消耗的错误。

    2.1K20发布于 2021-04-08
  • 来自专栏小坤探游架构笔记

    如何度量高可用架构设计指标

    什么是 SLA & SLO & SLI 对于SLA定义, 同样我觉得还是先举一个例子说明. ,什么是SLI呢? 用我们编程中的抽象和具体实现来分别描述SLO和SLI是再合适不过,SLO是抽象含义,描述是服务设计目标, 而SLI是具体的量化指标,描述的服务实际检测的具体指标,通过设计多个SLI指标并集来检测我们的SLO 指标可以是上述测量出来的可用性指标,即可以描述为医疗系统网站的SLI的可用性98.8%.  最后我基于上述的指标进行总结如下, 我们设计目标是从上而下逐步细化到对于单个SLI,而通过SLI的每个指标自下而上进行统计来验证我们的目标的达成.

    39900编辑于 2025-06-08
领券