Hi! From the 9 of July 2019 all new posts in the blog will be published in English. I’ve made such decision based on the blog statistics: for the last two month 90% of visitors were from non-Russian-speaking countries so they probably use translation services to read my articles. Since...
Continue reading...Experience in WebFlux (Netty) highload optimization
For the last three weeks our team was brainstorming a strange bug. We have a Spring Boot-based microservice deployed on OpenShift cluster which provides a REST endpoint, retrieving a user data from a NoSQL database. For some unknown reasons we were unable to gain more requests-per-second. The mystic power was...
Continue reading...Масштабирование NIO-потоков Reactor-Netty в docker-контейнере и getAvailableProcessors()
При подготовке использовались материалы статьи “CPU considerations for Java applications running in Docker and Kubernetes”, автор – Christopher Batey. Reactor-netty Как гласит Википедия, Netty – это неблокирующий, event-driven, клиент-серверный фреймворк для разработки сетевых Java-приложений. Reactor-Netty, в свою очередь – TCP/HTTP/UDP клиент /сервер, который использует Java Reactor поверх Netty. Для обеспечения...
Continue reading...LeetCode: Find The Difference – найти единственное отличие в строках
Недавно познакомился с крутейшим порталом Leetcode, на котором собрано немыслимое количество алгоритмических задач, обвязанных тестами, качественной постановкой и даже коммьюнити. Если буквально: читаем условие, решаем задачу, дебажим локально, анализируем сложность алгоритма, оптимизируем, копируем тело метода обратно в окошко (сигнатура метода даётся в условии) и прогоняем набор тестов. Портал оценивает среднюю...
Continue reading...Как перестать беспокоится и начать работать с лямбда-выражениями в Java
Это – перевод статьи How to start working with lambda expressions, автора Luis Santiago. Прежде чем лямбда-выражения появились в Java 8 я успел попробовать их аналоги в других языках, например в C# и C++. Появление лямбда-выражений расширило синтаксис Java, придав ему дополнительную выразительность. В этой статье я хочу сосредоточиться на...
Continue reading...Improve your vocabulary
Если честно, то идею этой рубрики я подсмотрел в блоге Фёдора Урванова, который почитываю уже довольно давно. Раз уж блог – это такая штука, которая используется для складирования собственных мыслей “на будущее”, к которой иногда возвращаешься, чтобы вспомнить “что-то”, что помнил “когда-то”, но со временем подзабыл, то почему бы не...
Continue reading...Latency vs. Response Time
Latency (время ожидания) и response time (время ответа) часто используют как синонимы, но это не совсем правильно. Response time – это то, что видно из клиентской части приложения. Помимо непосредственно времени обработки запроса это время включает всевозможные сетевые задержки и задержки в очередях обработки. Latency – это период времени, когда...
Continue reading...Внедрение зависимостей в класс, не являющийся частью контекста Spring
Или, другими словами, как быть, если внедрить зависимость нужно, а класс собирается где-то в недрах проекта через new, то есть контекст Spring о нём даже не догадывается (а значит и никаких зависимостей в него не добавляет)? А столкнулся я с этим на текущем проекте. Есть некий клиентский API для работы...
Continue reading...Метрики асинхронных вызовов в Spring WebFlux (Java Reactor)
Существует множество фреймворков для работы с метриками Java-приложений (например Micrometer, который, к тому же, еще и включён в новые версии Spring Boot). Но когда дело доходит до мониторинга времени выполнения асинхронных запросов у некоторых (у меня!) сразу возникает множество проблем. Передо мной стояла задача настроить JMX-мониторинг для отслеживания асинхронных вызовов...
Continue reading...Backpressure в Spring WebFlux (Java Reactor)
Оригинальные источники: StackOverflow, Medium [Jay Phelps], StackOverflow Backpressure (back pressure) – это то, с чем рано или поздно сталкивается почти любой разработчик, а для некоторых это становится частой и серьезной проблемой. В мире программирования термин “backpressure” является аналогией, позаимствованной из физики. В двух словах, backpressure – это сопротивление или некоторая...
Continue reading...