eBPF技术揭秘:DeepFlow如何引领故障排查,提升运维效率

DeepFlow 实战:eBPF 技术如何提升故障排查效率

目录

DeepFlow 实战:eBPF 技术如何提升故障排查效率

微服务架构系统中各个服务、组件及其相互关系的全景

零侵扰分布式追踪(Distributed Tracing)的架构和工作流程

关于零侵扰持续性能剖析(Continuous Profiling)的报告

关于前端404错误处理的会议内容

业务异常 - 一分钟解决前端404错误

业务异常中偶现的503异常问题,旨在实现分钟级定位并快速解决。

业务异常中偶现的503异常问题,旨在实现分钟级定位并快速解决。

围绕隐藏Bug的识别和消除,以及新版本上线后CPU飙升问题的处理展开

服务超时问题的深入分析和解决策略,特别是针对新功能上线后日志中频繁出现的第三方服务API调用超时问题

探讨了eBPF(Extended Berkeley Packet Filter)技术在提升故障排障效率方面的应用。


会议中剖析了云原生应用架构的演进过程及其带来的复杂性和挑战。图表通过路径和节点的方式,清晰地展示了从业务代码、框架代码到微服务、容器和虚拟机等不同层次的技术和服务。随着技术的演进,路径逐渐增多,基础设施的复杂性也急剧增长。

我们可以看到业务代码和框架代码作为应用的核心,通过应用进程、代理进程等组件与微服务、容器和虚拟机等基础设施进行交互。这种架构的演进使得服务发布更加快速,单个服务更加简单,同时通用逻辑逐渐被卸载至基础设施,为开发语言和框架提供了更大的自由度。

然而,这种演进也带来了诸多挑战。插桩困难、追踪盲点、标签不足、容量焦虑以及资源消耗过多等问题,都是云原生应用架构在演进过程中需要面对和解决的难题。

为了解决这些问题,使用Prometheus、OpenTelemetry、fluentd、Kafka、Redis、Kubernetes等一系列云原生技术和工具,它们为全栈可观测性提供了支持,帮助开发者更好地监控、追踪和管理云原生应用。

会议中不仅展示云原生应用架构的演进过程,还揭示了其带来的复杂性和挑战,以及可能的解决方案。

其中深入剖析了微服务架构中应用程序性能监控(APM)所面临的两大核心挑战:

插桩困难和定界困难

  • 插桩困难主要体现在微服务架构中服务数量的庞大上。由于每个服务都需要进行插桩以收集性能数据,这导致了巨大的工作量。同时,插桩过程可能会引入额外的延迟,从而对服务的性能产生负面影响。
  • 定界困难则源于微服务架构中服务间复杂的依赖关系。一个服务的问题可能会波及到其他服务,使得跨服务追踪和日志管理变得异常复杂,难以迅速准确地定位问题所在。
  • 一方坚信问题源于对方的故障而另一方则坚称一切运行正常。这种情境凸显了在微服务架构中,APM在快速定位和解决性能问题方面的重要性。
  • 此外,微服务架构中的关键组件,如客户端、服务、网关、缓存、数据库等,以及它们之间的调用关系。通过APM工具(如Zipkin、Jaeger等)来追踪和监控这些调用,可以帮助我们更好地识别性能瓶颈和问题所在。
  • 会议中强调了微服务架构中APM的重要性,还揭示了插桩和定界两大挑战。为了有效地管理和监控微服务架构的性能,我们需要借助先进的APM工具和方法,以应对这些挑战。

DeepFlow技术框架以其全栈(Full Stack)和零侵入(Zero Code)的特性,展示了其技术制高点。该框架支持多种网络协议,如HTTP2/HTTPS、HTTP1/SQL、SSL/TLS等,并兼容多种编程语言或框架,如Go、Java、Rust、K8s、C++、Node.js等,确保应用的广泛适用性和灵活性。

DeepFlow通过eBPF(Extended Berkeley Packet Filter)技术,在内核级别实现功能,如Kprobe和Tracepoint,支持Socket、TCP、IP等网络协议,为系统提供深入的网络观测能力。同时,该框架也支持虚拟机(VM)中的iptables、ipvs等网络功能,以及L4、L7层网关,确保在虚拟化环境中的高效网络管理。

DeepFlow还包含vSwitch和vRouter组件,支持KVM/Hyper-V等虚拟化技术,为网络流量提供灵活的路由和交换功能。在驱动程序层面,它支持BPF(Berkeley Packet Filter)和AF_PACKET接口,确保网络数据的高效处理和传输。

用户空间方面,DeepFlow框架集成了POD、侧车(Sidecar)等组件,为用户提供丰富的网络服务和应用支持。整个框架通过eBPF技术实现全栈和零侵入的特点,能够无缝集成到现有的系统中,无需修改现有代码,提供高效和灵活的网络观测和分析能力。

在SIGCOMM 2023纽约城市会议上,DeepFlow框架被选为观测性平台,展示了其在中国原创技术领域的领先地位和可靠性。通过这张技术架构图,我们可以清晰地看到DeepFlow框架的组成和优势,以及它在网络观测和分析领域的广泛应用前景。

微服务架构系统中各个服务、组件及其相互关系的全景

  1. 核心组件
    • Kong API Gateway:作为系统的入口点,负责接收并处理来自客户端的HTTP/S请求。
    • Spring Gateway:在微服务架构内部,用于请求路由和转发。
    • Consul:提供服务发现、配置管理和服务协调功能。
    • 微服务:如svc-web、svc-item、svc-user、svc-order、svc-customer等,各自负责不同的业务逻辑。
    • 数据库:MySQL作为关系型数据库,Redis作为缓存数据库,为微服务提供数据存储和查询服务。
    • eBPF:扩展Berkeley Packet Filter,用于网络数据包过滤,确保数据的安全性。
  2. 服务间通信
    • 客户端请求首先通过Kong API Gateway,随后被转发至Spring Gateway或相应的微服务。
    • 微服务之间通过REST API进行通信,实现业务逻辑的解耦和协同。
  3. 部署环境
    • 图中展示了服务可以部署在多种环境中,包括Pod(如Kubernetes Pod)、虚拟机(VM)、宿主机(Host)等,体现了系统的灵活性和可扩展性。
  4. 性能监控
    • 图中标注了不同组件之间的时间延迟,如100ms、28ms等,这些指标有助于监控系统的性能瓶颈并进行优化。
  5. 消息队列
    • 虽然图中未明确标出,但根据微服务架构的常见实践,可以推测系统可能使用了如Kafka等消息队列系统,用于微服务之间的消息传递和异步通信。
  6. 安全性
    • eBPF的引入,确保了网络数据包的安全性,只有合法的请求才能到达目标服务。

总结来说,这张全景图展现了一个微服务架构系统中零侵扰服务的全面视图,涵盖了服务发现、请求路由、数据库交互、消息队列、网络过滤等多个方面,为系统的稳定性、可扩展性和安全性提供了有力保障。

零侵扰分布式追踪(Distributed Tracing)的架构和工作流程

  1. 入口与负载均衡
    • NGINX 作为软件负载均衡器(SLB),负责接收并分发进入系统的请求。
    • 请求随后通过 Spring Gateway,这是一个微服务网关,用于路由、过滤和监控API请求。
  2. 服务网格
    • Envoy 作为服务网格的代理,负责服务之间的通信,提供流量管理、安全性、可观察性等功能。
  3. Java服务
    • Java服务通过web-svc DNS票据服务器进行通信,确保服务之间的可靠连接。
    • 使用Nacos作为服务注册中心,实现服务的自动注册与发现。
    • Redis作为缓存层,用于存储常用数据,提高系统响应速度。
    • MySQL作为关系型数据库,存储系统核心数据。
  4. 应用性能管理(APM)
    • SkyWalking作为APM工具,用于收集、分析和聚合系统性能数据。
    • 利用eBPF(扩展Berkeley Packet Filter)技术,对网络数据包进行深度过滤和分析,以提供更精细的性能监控。
  5. 客户端与服务器通信
    • 客户端通过web-svc发起GET请求,获取所需数据。
    • 客户端和服务器之间的通信可能采用gRPC协议,确保高效、可靠的数据传输。
    • 客户端和服务器同样使用Nacos进行服务注册与发现,确保服务的动态可用性。
    • Redis和MySQL在客户端和服务器之间共享,确保数据的一致性和高效访问。
  6. 文件存储
    • 使用/redis.aof文件作为Redis的持久化存储,确保数据在重启或故障后不会丢失。

整个图表清晰地展示了从入口到后端服务,再到数据库和缓存的整个分布式追踪架构,以及各组件之间的交互关系和数据流动。这为系统运维和性能优化提供了有力的支持。

关于零侵扰持续性能剖析(Continuous Profiling)的报告

帮助开发者深入了解应用程序在不同编程语言下的性能表现。报告涵盖了从11:26到11:58的时间段,并提供了丰富的数据分析和图表展示。

报告的主要内容包括:

  1. 时间范围与关键数据:报告详细记录了在此时间段内,应用程序的多个性能指标,如建立的连接数、完成的任务数、内存分配与释放次数、进程创建与销毁次数等,为开发者提供了全面的性能概览。

  2. 技术栈与工具:报告基于eBPF(扩展Berkeley Packet Filter)技术,结合Rust、C/C++、Golang和Java等编程语言,利用Pyroscope等工具进行语言原生剖析,确保了对应用程序性能的深入洞察。

  3. 图表分析:报告中的图表直观地展示了不同时间段内CPU的使用情况,以及各个函数的调用次数、平均时间和总时间。这些图表为开发者提供了快速定位性能瓶颈和优化点的依据。

  4. 函数统计:报告详细列出了业务函数、库函数、运行时函数、共享库函数和内核函数的统计信息,包括调用次数、平均时间和总时间,帮助开发者了解应用程序中各个部分的性能表现。

  5. 性能剖析:通过这份报告,开发者可以清晰地看到应用程序在不同编程语言下的性能差异,以及各个函数对性能的影响。这有助于开发者优化代码,提高应用程序的性能和效率。

关于前端404错误处理的会议内容

  • 首先聚焦于前端页面出现404错误的情况,这被识别为业务异常的一种。当用户在前端遇到空白页面,且API返回404错误时,需要迅速定位并追踪返回错误的服务。
  • 在排查步骤上,首先回顾了传统的排查方法:寻找URL对应的后端服务,分析后端服务的日志,并在日志无访问记录时,通过多节点抓包来确认请求走向。接着,会议介绍了引入DeepFlow后的新体验,通过输入URL,快速查询调用日志,并在5分钟内完成上述步骤,显著提高了排查效率。
  • 会议还强调了错误类型的分析,包括通过HTTP调用日志确认返回错误的IP地址,以及通过DNS调用日志确认域名解析无异常。这些分析有助于更准确地定位问题所在。

经过深入讨论,会议确定了导致访问异常的根本原因是设置代理不当。这一发现为后续的解决方案提供了重要依据。

最后,展示了排查流程的时间对比,突出了引入DeepFlow后排查时间从数小时缩短到5分钟的显著变化。这不仅提高了工作效率,也体现了团队在应对业务异常时的快速响应能力。

业务异常 - 一分钟解决前端404错误

问题描述:在前端页面出现空白,同时API返回了404错误,这通常意味着服务器无法找到请求的资源。

解决步骤

  1. 定位问题:首先,我们查找了与问题URL对应的后端服务,并分析了该服务的日志。由于日志中没有访问记录,我们进一步通过多节点抓包来确认请求的走向。
  2. 确认错误源:接着,我们根据HTTP调用日志确认了返回404错误的IP地址或服务器。
  3. 检查域名解析:为了确保问题不是由域名解析引起的,我们还检查了DNS调用日志,确认域名解析无异常。

排障体验对比

  • 以往:在没有引入DeepFlow之前,排查此类问题通常需要数小时的时间。
  • 现在:通过引入DeepFlow工具,我们能够在5分钟内迅速定位并解决404错误,大大提高了排障效率。

根本原因:经过深入调查,我们发现问题的根本原因是设置代理导致的访问异常。

展示了如何通过引入DeepFlow工具,实现对前端404错误的快速定位和解决。这不仅提高了我们的工作效率,也为客户提供了更加稳定可靠的服务体验。

业务异常中偶现的503异常问题,旨在实现分钟级定位并快速解决。

问题描述
监控中心偶现访问异常,具体表现为503 Service Unavailable错误。值得注意的是,运维团队并未主动触发过503状态码,因此需要定位异常原因。

分析过程

  1. 日志分析:首先,通过快速过滤HTTP调用日志,识别出异常的调用请求。
  2. 调用链追踪:进一步,利用调用链追踪技术,确认异常服务,并定位问题发生的具体位置。

排查手段

  1. 业务梳理:按照研发团队的指引,梳理业务访问关系,分析服务日志,以获取更多关于异常的信息。
  2. DeepFlow提效:通过输入503状态码,查看详细的调用日志,并追踪异常调用的发起和调用链,以在五分钟内迅速确认异常服务。

根本原因分析
经过深入分析,发现业务高峰期时,服务存在瓶颈,导致资源不足,从而引发503异常。

解决方案
基于上述分析,提出了针对性的解决方案:

  • 服务扩容:针对业务高峰期,进行服务扩容,确保资源充足,避免再次出现503异常。
  • 持续优化:持续关注业务运行状况,通过技术优化和流程改进,提升系统的稳定性和可用性。

对偶发503异常问题的快速定位和分析,并提出了有效的解决方案。通过日志分析、调用链追踪和业务梳理等手段,不仅找到了问题的根本原因

业务异常中偶现的503异常问题,旨在实现分钟级定位并快速解决。

问题描述
监控中心偶现访问异常,具体表现为503 Service Unavailable错误。值得注意的是,运维团队并未主动触发过503状态码,因此需要定位异常原因。

分析过程日志分析:首先,通过快速过滤HTTP调用日志,识别出异常的调用请求。调用链追踪:进一步,利用调用链追踪技术,确认异常服务,并定位问题发生的具体位置。

排查手段

  1. 业务梳理:按照研发团队的指引,梳理业务访问关系,分析服务日志,以获取更多关于异常的信息。
  2. DeepFlow提效:通过输入503状态码,查看详细的调用日志,并追踪异常调用的发起和调用链,以在五分钟内迅速确认异常服务。

根本原因分析
经过深入分析,发现业务高峰期时,服务存在瓶颈,导致资源不足,从而引发503异常。

解决方案
基于上述分析,提出了针对性的解决方案:

  • 服务扩容:针对业务高峰期,进行服务扩容,确保资源充足,避免再次出现503异常。
  • 持续优化:持续关注业务运行状况,通过技术优化和流程改进,提升系统的稳定性和可用性。

成功实现了对偶发503异常问题的快速定位和分析,并提出了有效的解决方案。通过日志分析、调用链追踪和业务梳理等手段,不仅找到了问题的根本原因,还提出了针对性的改进措施

围绕隐藏Bug的识别和消除,以及新版本上线后CPU飙升问题的处理展开

  • 首先,会议通过CPU使用率的图表,对比了新版本上线前后CPU使用率的显著变化,并指出了CPU飙升的问题。随后,通过监控发布过程,发现CPU和QPS(每秒查询率)的上升,这提示了可能存在性能瓶颈或异常请求。
  • 接下来,会议通过下钻分析,锁定了Top URI(统一资源标识符),并确认了请求突增的情况。通过进一步分析海量日志,会议团队快速定位了问题的根因,即客户端与服务端版本不一致导致的客户端频繁重试。
  • 为了消除这一隐患并优化性能,会议提出了多项措施。首先,通过调用日志和Wasm插件增加业务属性,确认了SDK版本,从而解决了版本不一致的问题。此外,还讨论了其他调优技术,如调整参数和优化代码,以进一步提升系统性能。

通过收集数据、分析数据、确定问题原因,并最终解决问题。

服务超时问题的深入分析和解决策略,特别是针对新功能上线后日志中频繁出现的第三方服务API调用超时问题

如何精准界定这类超时问题是由网络因素还是第三方服务本身所导致。

  • 会议回顾了错误日志的详细情况,其中包含了ResourceAccessException异常,这明确指出了在尝试通过GET请求获取数据时发生了I/O错误,具体表现为读取超时。通过RestTemplate的调用栈,我们能够追踪到问题发生在RestTemplate.doExecute方法中,这进一步指向了网络层面的潜在问题。
  • 会议对现有的网络指标进行了深入分析。通过监控TCP连接状态、流量、丢包率等关键指标,发现存在网络抖动和重传比例高等异常情况。这些指标为提供了网络层面可能存在问题的线索。
  • 为了更精确地定位问题根源,会议引入了DeepFlow工具来分析网络流量和抖动情况。通过这一工具,确定了服务端重置是导致调用超时的主要原因,这进一步指向了第三方服务异常的可能性。
  • 基于以上分析,提出了针对性的解决方案。如果问题源于网络抖动,将优化网络连接以确保稳定性;如果问题确实由第三方服务引起,将与第三方服务提供方紧密沟通,共同寻求解决方案。

会议不仅深入探讨了服务超时问题的排查方法,还通过日志分析、网络监控和异常处理等手段,精准界定了问题的根本原因,并制定了相应的解决策略。这为我们未来处理类似问题提供了宝贵的经验和参考。

探讨了eBPF(Extended Berkeley Packet Filter)技术在提升故障排障效率方面的应用。

  • 强调了eBPF技术能够实现零侵扰数据采集,这意味着在不影响系统正常运行的情况下,该技术能够捕获从内核到用户空间的关键数据流动,包括Process、write()、read()、sendmsg()、recvmsg()等系统调用,以及socket、TCP/IP、Block Device、Network Device等网络和设备相关组件的交互信息。
  • eBPF技术如何帮助实现分钟级的问题定位。通过将eBPF程序加载到Linux内核,系统管理员可以实时收集和分析系统数据,从而迅速发现故障点,极大地提高了故障排查的效率。
  • 此外,提到了eBPF技术的其他优势,如“无盲点、细粒度”的数据收集能力,以及“全景图、分布式追踪、持续剖析”的监控策略。这些特点使得eBPF技术能够提供一个全面、细致且持续的系统监控和故障排查方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/364296.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任务5.1 初识Spark Streaming

实战概述:使用Spark Streaming进行词频统计 1. 项目背景与目标 背景: Spark Streaming是Apache Spark的流处理框架,用于构建可伸缩、高吞吐量的实时数据处理应用。目标: 实现一个实时词频统计系统,能够处理流式数据并统计文本中的单词出现频…

微机原理 复习

第一章导论 1.3 冯诺依曼体系结构 (1)以二进制形式表示指令和数据 (2)程序和数据事先放在存储器中(预存储) (3)由运算器、控制器、输入设备和输出设备五大部件组成 字长、主频…

Java8新特性stream的原理和使用

这是一种流式惰性计算&#xff0c;整体过程是&#xff1a; stream的使用也异常方便&#xff0c;可以对比如List、Set之类的对象进行流式计算&#xff0c;挑出最终想要的结果&#xff1a; List<Timestamp> laterTimes allRecords.stream().map(Record::getTime).filter…

【摄像头标定】双目摄像头标定及矫正-opencv(python)

双目摄像头标定及矫正 棋盘格标定板标定矫正 棋盘格标定板 本文使用棋盘格标定板&#xff0c;可以到这篇博客中下载&#xff1a;https://blog.csdn.net/qq_39330520/article/details/107864568 标定 要进行标定首先需要双目拍的棋盘格图片&#xff0c;20张左右&#xff0c;…

30 哈希的应用

位图 概念 题目 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何判断一个数是否在这40亿个整数中 1.遍历&#xff0c;时间复杂度O(N) 2.二分查找&#xff0c;需要先排序&#xff0c;排序(N*logN)&#xff0c;二分查找&#xff0c;logN。…

装载问题(回溯法)

#include<iostream> using namespace std; int n;//货物的数量 int c;//轮船的总的载重量 int cw;//轮船当前的载重量 int r;//货物的总重量 int w[1000];//n个货物各自的重量 int x[1000];//当前最优解 int bestx[1000];//最优解 int bestw;//货物的最优载重量 void Bac…

[JS]对象

介绍 对象是一种无序的数据集合, 可以详细的描述某个事物 事物的特征在对象中用属性来表示, 事物的行为在对象中用方法来表示 使用 创建对象 let 对象名 {属性名&#xff1a;值&#xff0c;方法名&#xff1a;函数&#xff0c; } let 对象名 new Object(); 对象名.属性…

Typora failed to export as pdf. undefined

变换版本并没有用&#xff0c;调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决&#xff1a;从上图中的A4&#xff0c;变为其他&#xff0c;然后变回A4 然后到处成功&#xff0c;Amazing&#xff01; 参考&#xff1a; Typora 导出PDF 报错 failed to export…

Rpc服务的提供方(Rpcprovider)的调用流程

首先&#xff0c;服务的提供方&#xff0c;会通过rpcprovider向rpc服务方注册rpc服务对象和服务方法&#xff0c; 那么&#xff0c;我们通过protobuf提供的抽象层的service和method&#xff0c;将服务对象和它所对应的服务方法记录在map表中&#xff0c; 当它启动以后&#xff…

WordPress Quiz Maker插件 SQL注入漏洞复现(CVE-2024-6028)

0x01 产品简介 WordPress Quiz Maker插件是一款功能强大的测验生成工具,旨在帮助用户轻松、快速地构建复杂的测验和考试。插件支持多种问题类型,包括单选框(MCQ)、复选框(MCQ)、下拉列表(MCQ)、文本、短文本、数字、日期等。还支持横幅(HTML)显示信息性消息、填空题…

LONGAGENT:优化大模型处理长文本

现有的大模型&#xff08;LLMs&#xff09;&#xff0c;尽管在语言理解和复杂推理任务上取得了显著进展&#xff0c;但在处理这些超长文本时却常常力不从心。它们在面对超过10万令牌的文本输入时&#xff0c;常常会出现性能严重下降的问题&#xff0c;这被称为“中间丢失”现象…

Docker基本使用和认识

目录 基本使用 镜像仓库 镜像操作 Docker 如何实现镜像 1) namespace 2) cgroup 3) LXC Docker常见的网络类型 bridge网络如何实现 基本使用 镜像仓库 镜像仓库登录 1)docker login 后面不指定IP地址&#xff0c;则默认登录到 docker hub 上 退出 2)docker logo…

互联网直播/点播技术与平台创新应用:视频推拉流EasyDSS案例分析

随着互联网技术的快速发展&#xff0c;直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域&#xff0c;互联网直播/点播平台与技术的应用&#xff0c;不仅为用户带来了全新的购物体验&#xff0c;也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…

嵌入式Linux系统编程 — 4.7 regcomp、regexec、regfree正则表达式函数

目录 1 为什么需要正则表达式 2 正则表达式简介 3 正则表达式规则 4 regcomp、regexec、regfree函数 4.1 函数介绍 4.2 URL格式案例 1 为什么需要正则表达式 在许多的应用程序当中&#xff0c; 有这样的应用场景&#xff1a; 给定一个字符串&#xff0c;检查该字符串是否…

【小学期】常用基于Swing的七个静态界面

示例1&#xff1a;基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…

5个大气的wordpress付费主题

Sesko赛斯科wordpress外贸主题 适合用于重型机械设备公司建外贸官方网站的橙红色wordpress外贸主题。 https://www.jianzhanpress.com/?p5886 Polar钋啦wordpress外贸主题 制造业wordpress网站模板&#xff0c;适合生产制造企业官方网站使用的wordpress外贸主题。 https:/…

识图生成代码:通义千问vsGPt4o,有点小崩

今日对比一下通义千问和GPt4o&#xff0c;在通过识别图片然后去生成前端代码 在当今ai的时代&#xff0c;通过ai去生成页面的代码可以很大的提高我们的开发效率下面是我们要求的生成的图片截图&#xff0c;这是掘金的榜单 效果对比 首先我们使用通义千问&#xff0c;让他去帮我…

学校消防设施设备管理系统

建立和落实校园消防安全管理责任制,做到消防安全工作有人专管,部门和岗位有人落实的日常管理&#xff0c;及时发现消防安全隐患,及时反映,及时处理,杜绝校园内消防安全隐患。 凡尔码平台搭建学校消防设施设备管理系统可以通过设备管理系统对消防器材设施基本信息、设施有效期、…

[leetcode]avoid-flood-in-the-city 避免洪水泛滥

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> avoidFlood(vector<int>& rains) {vector<int> ans(rains.size(), 1);set<int> st;unordered_map<int, int> mp;for (int i 0; i < rains.size(); i) {i…

运维锅总详解HAProxy

本文尝试从HAProxy简介、HAProxy工作流程及其与Nginx的对比对其进行详细分析&#xff1b;在本文最后&#xff0c;给出了为什么Nginx比HAProxy更受欢迎的原因。希望对您有所帮助&#xff01; HAProxy简介 HAProxy&#xff08;High Availability Proxy&#xff09;是一款广泛使…