工具,  技术

Resillience4j – 远程方法调用的工具箱

在MicroService的世界,很多的远程调用。只要有远程调用就会有网络不稳定问题,某些api会fail掉,有时候api会很长时间没有反馈,导致client的线程大量占用。

其实在非microservice的场景,数据库连接也有同样的问题。数据库操作有时候会遇到lock的问题,需要重试基本上是肯定的。

Resillience4j这个library专门针对这些常用的场景提供了非常容易使用的library。几个典型的功能如下:

Retry

根据返回的结果,或者异常决定是不是要retry,如何retry。这个场景太常见了。比如说对于locking issue可以这么做。如果是data integrity的错误,就不需要retry。

Circuit Breaker

根据一个threshold,如果说一定时间内错误率到达一定程度,预计不断请求返回错误,还不如直接忽略,继续执行。特别是有时候错误会消耗额外的等待时间。

Rate Limiter

限制call的rate。比如说限制一秒钟一次call

Time Limiter

限制执行的等待时间。

BulkHead

限制并发执行的数量。

Cache

一定时间内的重复call的cache,提高性能。

Fallback

提供可选的方案。比如说Object Query不行可以转ZOQL

Leave a Reply

Your email address will not be published. Required fields are marked *