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

news2024/11/24 2:41:06

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.coloradmin.cn/o/1877699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 单链表元素删除解析及高频面试题

目录 删除元素的万能方法 构造虚拟头结点来应对删除链表头结点的情况 一、203.移除链表元素 题目 题解 二、19.删除链表中倒数第K个节点 题目 题解 三、 83.删除某个升序链表中的重复元素,使重复的元素都只出现一次 题目 题解 82.删除某个升序链表中的…

【UML用户指南】-23-对高级行为建模-状态机

目录 1、概述 2、状态 2.1、状态的组成 3、转移 3.1、转移的组成 4、高级状态和转移 4.1、进入效应和退出效应 4.2、内部转移 4.3、do活动 4.4、延迟事件 4.5、子状态机 5、子状态 5.1、非正交子状态 5.2、历史状态 5.3、正交子状态 6、分叉与汇合 7、主动对象…

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

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

【最简单】解决windows安装wsl,出现WslRegisterDistribution failed with error: 0x8007019e的问题

从官网下载安装包安装ubuntu18.04的过程中出现了下面的错误 在Windows上安装Windows Subsystem for Linux (WSL) 时,可能会遇到以下错误: WslRegisterDistribution failed with error: 0x8007019e 这个错误通常是由于系统未启用必要的功能或未正确配置…

计算机网络微课堂(湖科大教书匠)TCP部分

计算机网络微课堂(湖科大教书匠)TCP部分 【计算机网络微课堂(有字幕无背景音乐版)】 TCP的流量控制 一般来说,我们希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收&#…

【Vue】Vue3基础

VUE3基础 1、简介2、创建工程2.1 基于vue-cli创建(脚手架webpack)2.2 基于vite创建(推荐)2.3 目录结构2.4 vscode插件推荐 3、核心语法3.1 选项式(options API)和组合式(composition API&#x…

json文件 增删查改

默认收藏夹 qt操作json格式文件... 这个人的 写的很好 我的demo全是抄他的 抄了就能用 —————————— 下次有空把我的demo 传上来 在E盘的demo文件夹 json什么名字

「ETL趋势」FDL数据开发支持版本管理、实时管道支持多对一、数据源新增支持神通

FineDataLink作为一款市场上的顶尖ETL工具,集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具,进行了新的维护迭代。本文把FDL4.1.8最新功能作了介绍,方便大家对比:(产品更新详情:…

Profinet IO从站数据 转EtherCAT项目案例

这里是引用 目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 使用PRONETA软件获取PROFINET IO从站的配置信息 2 5 设置网关采集PROFINETIO从站设备数据 5 6 启动ETHERCAT从站转发采集的数据 8 7 选择槽号和数据地址 9 8 选择子槽号 11 9 案例总结 12 1 案例说明 设置…

《昇思25天学习打卡营第12天 | 昇思MindSpore基于MindSpore的GPT2文本摘要》

12天 本节学习了基于MindSpore的GPT2文本摘要。 1.数据集加载与处理 1.1.数据集加载 1.2.数据预处理 2.模型构建 2.1构建GPT2ForSummarization模型 2.2动态学习率 3.模型训练 4.模型推理

揭秘Etched AI:三个哈佛辍学00后挑战英伟达,推出Transformer专用ASIC芯片sohu

人工智能领域最近掀起了一股新的热潮,三位哈佛辍学的00后本科生创建了Etched AI,并成功推出了一款超强AI芯片sohu,直指英伟达的AI芯片帝国。这款芯片被誉为比英伟达H100快20倍,吸引了众多科技界的关注。本文将深入探讨Etched AI及…

五、Spring IoCDI ★ ✔

5. Spring IoC&DI 1. IoC & DI ⼊⻔1.1 Spring 是什么?★ (Spring 是包含了众多⼯具⽅法的 IoC 容器)1.1.1 什么是容器?1.1.2 什么是 IoC?★ (IoC: Inversion of Control (控制反转))总…

带上作弊器,我不得起飞

前言 过去,我们对人工智能既期待又害怕.人类的惰性希望人工智能可以帮助大家从大部分繁重的工作中解放出来,但又害怕它失控. 智能系统的好处 工作方面 自动化与效率提升:可以自动执行许多重复性和低技能的任务,如制造业中的装配、数据输入和办公室的客户…

java的序列化和反序列化

一、概念 序列化是将对象的常态存储到特定的存储介质中的过程。 反序列化是将特定的存储介质中的数据重新构建对象的过程。 问题 为每个对象属性——编写读写代码,过程很繁琐且非常容易出错,如何解决? 二、使用Object Output Stream类实现…

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1:PDF上传链接 9.1 开放-封闭原则(OCP) 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的,我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…

Spring专题一:源码编译

下载源码 因为公司使用的是Spring5.2.x所以就下载了这个版本,github源码地址如下: GitHub - spring-projects/spring-framework at v5.2.6.RELEASE: 如果网络不稳定可以使用下载压缩版即可,网络稳定的话还是建议使用git clone …

C语言的数据结构:树与二叉树(哈夫曼树篇)

前言 上篇讲完了二叉树,二叉树的查找性能要比树好很多,如平衡二叉树保证左右两边节点层级相差不会大于1,其查找的时间复杂度仅为 l o g 2 n log_2n log2​n,在两边层级相同时,其查找速度接近于二分查找。1w条数据&am…

今日AI提示词|新媒体运营场景-小红薯笔记通用指令

指令写作的技巧与步骤 明确定义需求 提供足够的上下文 使用简单直白的语言 举例说明 添加限制条件 多次迭代优化,给出详细的要求 小红薯笔记通用指令 从现在开始,你担任我的小红书创作者。你的任务是根据我提供给你的主体,撰写一篇小…

运维锅总详解HAProxy

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

开源项目-商城管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示,我的订单,个人中心等内容;后端的主要功能包括产品管理,门店管理,会员管理,订单管理等模块 移动端页面