apisix[1] 是一个动态、实时、高性能的云原生网关,以 openresty[2] 作为技术基础,可以作为业务的流量入口,提供了动态路由、动态上游、动态证书、A/B 测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、收集指标、监控报警、可观测、服务治理等功能。 apisix 的一大亮点是其丰富灵活的插件模块: apisix 提供了丰富的内置lua插件,涵盖了认证鉴权、安全、可观测性、流量管理、多协议接入等多个领域,无需用户自己动手实现,即插即用; 同时 apisix 对 lua[3] 插件支持热更新和热插拔,无需重启 apisix 实例。apisix 也支持用户根据自己的需求开发自己的插件,用户可以使用 lua 语言为每一个进入 apisix 的请求添加自定义逻辑;对于不熟悉 lua 语言的用户,apisix 也支持用户使用其它语言开发插件。
在日常的技术支持过程中,经常会遇到如下玄学问题的咨询: 从监控上看,进程资源占用正常。 从监控上看,服务流量平稳,没有流量突增。 从监控上看,线程池状态正常,没有瓶颈。 但是,在上述条件下,上游调用方还是时不时反馈偶现 Thread pool is EXHAUSTED! 接下来笔者来把这个问题系统梳理下,帮助大家厘清这个问题的本质。
在线点播场景,播放体验提升与成本优化是同等重要的两件事,并在部分场景体验优化与成本优化存在一定的互斥关系。vivo短视频深入分析播放链路的每个环节、并结合大数据统计,探索出了多种的体验优化策略;同时针对成本优化,上线了转码、PCDN、共享闲时带宽等多种策略用于降低带宽成本。基于技术优化和业务发展的要求,vivo短视频还上线了系统性的监控体系,对播放体验、带宽成本进行了多维度的监控。
随着技术的不断进步,CSS 已经从简单的样式表发展成为拥有众多内置函数的强大工具。这些函数不仅增强了开发者的设计能力,还使得样式应用更加动态、灵活和响应式。本文将深入探讨 CSS 常见的 66 个函数,逐一剖析它们的功能和用法,一起进入这个充满魔力的 CSS 函数世界!
DWARF全名是Debugging With Attribute Record Formats,是一种调试信息的存放格式。DWARF是一种通用的标准格式,很多编译器对其都有支持,并且DWARF支持C、OC、go等多种语言。 DWARF的作用是对机器码和代码之间进行一个映射关系,用来为调试器DEBUG提供调试信息,告诉调试器代码和二进制如何关联,在代码中添加一个断点后,在程序运行到什么位置要停下来。如果想开发一个Linux调试器,DWARF是必须要学的。除此之外,DWARF在发生崩溃时提供映射信息,对崩溃堆栈进行符号化。 对于iOS开发者来说,dSYM中主要就是DWARF文件,Xcode使用的LLVM和GCC编译器内核,对DWARF支持很好。通过xcodebuild archive命令打包时,在xcarchive产物中默认包含dSYM文件。 DWARF是一个压缩文件,可以通过dwarfdump相关命令进行信息提取,通过--debug-info命令可以打印解压后DWARF文件的内容。较大应用的dSYM不要轻易尝试,内容较多,建议找个小Demo打印看下。
本篇为系列第2篇,分享在支付宝支付数据链路改造升级过程中,针对数据倾斜的优化实践新方法,在解决数据倾斜问题的同时,还能兼顾更优的计算性能!