Вы здесь:

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). Результаты отображают время ответа в миллисекундах.