Sign in

Principal Engineer @ OLX Group. https://twitter.com/vikaskx

As…


Primer

When…


So far in this series, we have discussed how adaptive concurrency control works and what are the different ways to implement it in your system. In this last article, we’ll discuss some important techniques that can make load shedding more effective for your business and the implications of load shedding on other parts of your system (e.g. autoscaling).

Load Shedding Based On Request Priorities

We have seen how concurrency control and load shedding can help a service remain responsive under…


The part 2 of the series, we discussed how the concurrency limits library integrates with Spring Boot applications and explored various algorithms used by this library. In this article, we will look at how concurrency limiting works in practice and discuss issues with a library-based approach. Finally, we’ll look at an alternative approach that uses a proxy in front of the application to control its concurrency.

Concurrency Limits Library In Action

In the first article of the series, we…


In the second part of this series, we are going to look at Netflix’s concurrency limits library and the algorithms it uses to implement adaptive concurrency control. As I also mentioned in the first article, this library is based on the TCP congestion control algorithms, which have been used for decades for congestion avoidance in TCP packet flow.

Before jumping on to the algorithms, I want to first provide some details about how this…


As the Google SRE Workbook says

No service is 100% available 100% of the time.

There is a multitude of factors that can cause a service to be unavailable or very slow (Slowdown is the new outage). One of the major factors is overload. Overload occurs when a service is unable to keep up with the amount of work it is given. …


Rate limiting is one of the most discussed topics related to protecting your APIs and services from excessive use either from bad actors trying to deliberately abuse the service or buggy code. Several people and companies have shared various approaches to implementing rate-limiting in applications, and there are several products that provide out-of-the-box support for rate limiting.

Rate limiting can either be global or on a per-client basis. The client here can refer to any user of a service. The client can be:


At OLX Autos, we have started adopting Istio service mesh for our EKS cluster. There are a number of features we are excited to use — circuit breaker being one of them. We currently use circuit breaker in some of our Java services using Resilience4j, but Istio will give us the ability to apply circuit breaking at the network level without having to integrate into the application code of each service.

Although it looks simple on the surface, we found that the documentation (and other resources on the internet) isn’t very helpful in understanding the behavior of the circuit breaker…


JVM warm-up is a notorious problem. JVM-based applications deliver great performance but need some time to “warm-up” before reaching the top speed. When the application launches, it usually starts with reduced performance. It can be attributed to things like Just-In-Time (JIT) compilation which optimizes frequently used code by collecting usage profile information. The net negative effect of this is that the requests received during this warm-up period will have a very high response time as compared to the average. This problem can be exacerbated in containerized, high-throughput, frequent-deploys, and auto-scaled environments.

In this post, I will discuss our experience with…


Solr has a long and turbulent history with multi-word synonyms (Just search solr multi word synonyms in Google or read here & here). SynonymGraphFilter finally solved most of these issues. …

Vikas Kumar

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store