DORA指标:公司业务成果的“占卜师”

从DORA指标出发,一起探索 DevOps 实践与业务成果之间的预测联系。

apisix~14在自定义插件中调用proxy_rewrite

在 Apache APISIX 中,通过 proxy-rewrite 插件来修改上游配置时,需要确保插件的执行顺序和上下文环境正确。你提到在自己的插件中调用 proxy_rewrite.rewrite({host="new_upstream"}, ctx),但新上游没有生效,这可能是由于以下几个原因

端口占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?

最近遇到一个奇葩的问题,项目跑的好好的,没有安装其它特殊软件,突然服务器启动报错,日志如下,显然是服务器的8080端口占用了。 Caused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind

dubbo~全局异常拦截器的使用与设计缺陷~续

上一次的介绍,主要围绕如何统一去捕获异常,以及为每一种异常添加自己的Mapper实现,并且我们知道,当在ExceptionMapper中返回非200的Response,不支持application/json的响应类型,而是写死的text/plain类型。 Filter为二方包异常手动捕获 参考:ht

dubbo~全局异常拦截器的使用与设计缺陷

异常拦截器ExceptionMapper 在JAX-RS(Java API for RESTful Web Services)中,ExceptionMapper接口用于将Java异常映射到HTTP响应。通过实现ExceptionMapper接口,你可以自定义如何处理特定类型的异常,并生成相应的HTT

dubbo~javax.validation和jakarta.validation的介绍与排雷

javax.validation和jakarta.validation都是用于Java中进行数据验证(validation)的相关API,它们提供了一套标准的验证框架,用于验证Java对象的属性是否符合指定的约束条件。这两个API的作用类似,只是在Java EE平台的演进过程中发生了一些变化。 ja

springboot~封装依赖引用包jar还是pom,哪种更规范

将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式: 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他

keycloak~正确让api接口支持跨域

相关参考 https://leejjon.medium.com/how-to-allow-cross-origin-requests-in-a-jax-rs-microservice-d2a6aa2df484 https://stackoverflow.com/questions/28065963/

apisix~集成服务发现注册中心

摘要 当业务量发生变化时,需要对上游服务进行扩缩容,或者因服务器硬件故障需要更换服务器。如果网关是通过配置来维护上游服务信息,在微服务架构模式下,其带来的维护成本可想而知。再者因不能及时更新这些信息,也会对业务带来一定的影响,还有人为误操作带来的影响也不可忽视,所以网关非常必要通过服务注册中心动态获

apisix~authz-keycloak插件介绍

参考:https://apisix.apache.org/docs/apisix/plugins/authz-keycloak/ kc插件源码梳理及原理说明 如果只是进行keycloak颁发的token进行校验(签名校验和有效期校验),那么我们可以使用jwt-auth这个插件实现,并且已经对这个插件

apisix~升级原始插件的方法

扩展apisix原始插件 当apisix提供的插件不能满足我们要求时,我们可能需要将它的plugin进行个性化扩展,例如一个jwt认证插件jwt-auth,它本身具有验证jwt有效性功能,支持rs256,hs256等常用签名算法,但在验证之后,如果希望将jwt中的用户信息取出来,并放请求头向上游传递

apisix~lua插件开发与插件注册

开发插件的步骤 在APISIX中,要自定义插件,一般需要按照以下步骤进行操作: 编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能。可以根据APISIX提供的插件开发文档和示例进行编写。 将Lua脚本放置到APISIX插件目录:将编写好的Lua脚本文件放置到APISIX的插件目录下,一般是

apisix~自定义插件的部署

参考 https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-lua https://apisix.apache.org/docs/apisix/next/plugin-develop/ https://api

apisix~jwt-auth插件

在网关开启jwt-auth插件之后,你的网关就具有了jwt解析和校验的功能,主要是校验jwt token的有效性,包含过期时间和签名等。 https://apisix.apache.org/docs/apisix/plugins/jwt-auth/ 支持的签名算法 "HS256" "HS512" "

算法~PBKDF2-SHA让密码更安全

摘要:在当今的数字世界中,密码安全是至关重要的。为了保护用户密码免受未经授权的访问和破解,Password-Based Key Derivation Function 2 (PBKDF2)算法成为了一种重要的工具。 在 PBKDF2 算法中,SHA 表示 Secure Hash Algorithm,

算法~利用zset实现滑动窗口限流

滑动窗口限流 滑动窗口限流是一种常用的限流算法,通过维护一个固定大小的窗口,在单位时间内允许通过的请求次数不超过设定的阈值。具体来说,滑动窗口限流算法通常包括以下几个步骤: 初始化:设置窗口大小、请求次数阈值和时间间隔。 维护窗口:将请求按照时间顺序放入窗口中,并保持窗口内请求数量不超过阈值。 检查

TiKV占用内存超过的解决过程

# TiKV占用内存超过的解决过程 ## 背景 ``` 为了后去TiDB的极限数据. 晚上在每台服务器上面增加了多个TiKV的节点. 主要方式为: 每个NVME的硬盘增加两个TiKV的进程. 这样每个服务器两个磁盘, 共计4个TiKV的进程 因为TiKV其实会使用尽可能多的缓存: storage.b

“堆内存持续占用高 且 ygc回收效果不佳” 排查处理实践

内存占用持续居高不下,频繁young gc且效果不佳,究竟出现了什么问题?young gc的时机? 为何young gc后堆内存使用率仍然很高?又是什么原因导致内存占用高?本篇文章将深度解析其原因并提供一套为止可行的解决方案。

MYSQL造数据占用临时表空间

在MySQL中,临时表空间通常用于存储如ORDER BY、GROUP BY、DISTINCT、UNION、JOIN等操作中产生的临时数据。当这些操作的数据集太大而无法在内存中完成时,MySQL会使用磁盘上的临时表空间。 一、MYSQL造数据占用临时表空间的方法 以下是一些方法,我们可以通过它们来“造

[转帖]CPU或内存占用过高时,发生了什么

https://www.cnblogs.com/jmcui/p/10259359.html 在开发过程中,有时候我们发现 JVM 占用的CPU/内存居高不下,跟我们的预期不符,这时,CPU 在做什么呢?是什么线程让CPU/内存如此忙碌呢?我们通过如下几步,可以查看 CPU 在执行什么线程。 1、to