java devops
-
Karaf в Kubernetes
Модульный karaf в микросервисе. Мозг в трубочку. А почему бы не кубер в bundle карафа? А может сразу windows в bundle? (были опыты запуска урезанного windows в bundle). Речь идет о модульной java. Модульная java? А это она! Karaf это реализация OSGi. OSGi - шина с плагинами (java-модулями, в терминах OSGi называется bundle), ктр. взаимодействуют между собой. Один bundle отправляет сообщение в шину через интерфейс, предоставленный шиной, а другой/другие bundle, ктр. заявляют, что могут реализовать интерфейс, обрабатывают сообщение. При этом источник даже не знает кому и сколько читателей. И еще одна фишка Karaf (может быть основная) замена функциональности без остановки всего сервиса.
-
Работа с log
Разработчик сам должен позаботиться о качестве логов, информации из stacktrace будет маловато. Интересны условия возникновения ошибки. Однозначно нужны значения переменных в момент возникновения ошибки, т.к. эти данные потом нигде не получить. Примитивный пример:
-
Репозитории yandex
Возникают проблемы при сборке проектов (санкции?). Яндекс подсуетился и сделал зеркало репозиториев https://mirror.yandex.ru/ (в.т.ч. maven, дистрибутивы linux и др.программ).
-
Создание fat jar файла
Оглавление:
-
Тестирование REST
В заметке описаны инструменты тестирования REST и примеры использования.
А чем, собственно, проблема?
-
Установка Kafka в Linux
Установка описана в https://www.dmosk.ru/miniinstruktions.php?mini=kafka-linux.
Дистрибутив Kafka: https://downloads.apache.org/kafka/
Скачать https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz -
Установка нужной версии Java
В системе настройки сделаны для java 11. В путях linux указана java 11. Нужно настроить maven проект на java 17.
$ java -version openjdk version "11.0.18" 2023-01-17
Нужна java 17, для этого нужно установить JAVA_HOME.
-
Шпаргалка по Redis
Redis — это база данных, размещаемая в памяти, которая используется, в основном, в роли кеша, находящегося перед другой, "настоящей" базой данных, вроде MySQL или PostgreSQL. Может использоваться в реализациях механизма издатель/подписчик, в задачах потоковой обработки данных, в системах, где нужно работать с очередями. Вот какие типы данных поддерживает Redis:
- Строка (String)
- Битовый массив (Bitmap)
- Битовое поле (Bitfield)
- Хеш-таблица (Hash)
- Список (List)
- Множество (Set)
- Упорядоченное множество (Sorted set)
- Геопространственные данные (Geospatial)
- Структура HyperLogLog (HyperLogLog)
- Поток (Stream)
Memcached может показывать отличные результаты производительности в ограниченных окружениях кеширования. А при использовании этой системы в распределённом кластере нужны дополнительные настройки. Redis же поддерживает подобные сценарии работы сразу после установки. Можно распределить хранимые данные по множеству машин. Это называют шардингом. В результате каждый экземпляр Redis, входящий в состав кластера, считается хранилищем шарда, или фрагмента, всех данных.
Установка Redis в Linux
root@v:/etc# apt install redis .... Created symlink /etc/systemd/system/redis.service → /usr/lib/systemd/system/redis-server.service. Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /usr/lib/systemd/system/redis-server.service. root@v:/etc# systemctl status redis ● redis-server.service - Advanced key-value store Loaded: loaded (/usr/lib/systemd/system/redis-server.service; enabled; pre> Active: active (running) since Sun 2024-12-22 18:03:25 +05; 2min 2s ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 1307637 (redis-server) Status: "Ready to accept connections" Tasks: 5 (limit: 13882) Memory: 4.1M (peak: 5.0M) CPU: 226ms CGroup: /system.slice/redis-server.service └─1307637 "/usr/bin/redis-server 127.0.0.1:6379"
port 6379
Нагрузочный тест:$ redis-benchmark -h localhost -p 6379 -n 100000 -c 50 -d 100 ... Summary: throughput summary: 62111.80 requests per second latency summary (msec): avg min p50 p95 p99 max 0.427 0.112 0.423 0.503 0.559 0.895
Эта команда симулирует 50 клиентов (параметр -c 50), выполняющих 100 000 запросов (-n 100 000). Результаты отображают время ответа в миллисекундах.