powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Queue с поддержкой сериализации на диск.
25 сообщений из 200, страница 1 из 8
Queue с поддержкой сериализации на диск.
    #39904248
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна реализация некой системы буферизации бизнес сущностей
в очередь с возможностью хранения этой очереди на диске.
Оперативы не хватает когда заходит дата-провайдер из китая
и миллиардами сущностей.

Интерфейс:
Код: java
1.
2.
3.
4.
5.
interface Q {
   add(Object entity);
   remove(Object entity);
   purge();
}


Не рассматривал базы данных т.к. это оверхед и сортировки по дате всегда тормознутые.
И Амазон слишком дорого берет за поднятие базячных иснтасов а мне их надо будет поднять
для девов штук 4 и для нужд тестинга еще штук 16.

Рассматривал :
- BerkeleyDb (там вроде очередь поддерживается)
- Redis (не Java-native)
- KahaDb (из репозитария Apache ActiveMQ).

Ничего из этого я еще не тестил и не смотрел. Поэтому можете писать свои мысли.

Крутится всё это будет пока на Amazon EC2 instances с блинами типа SSD на 30 Гиг (я надеюсь).
Тоеть под каждую очередь у меня будет где-то 30 минус операционка с барахлом софта и логами.

Планирую также предусмотреть метод purge() для аварийной очистки очереди. Это в том
случае когда например из 2х узлов кластера 1 выпал навсегда - то надо рестаровать
все бизнес процессы на оставшихся нодах с чистого листа. События все равно зайдут
повторно и не нарушат процессинг (у нас поддерживается idempotency на всех уровнях).

Почему мне не подошли MQ системы? Ну по той причине что от MQ мне нужен был только персистенс.

Почему нам не подошла обычная файловая система типа ext4? Ну.... у нас были потоки entities мелкого
размера и мы переполняли файловую систему ext4 не по размеру файла а по inodes.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904274
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача совершенно не понятна.
Любой класс можно сериализовать. Ну и я так понимаю, проблема то не с Queue, а с "буферизации бизнес сущностей"
т.е. нужно или нормальное хранилище (база данных?) или какая нибудь система кэша с возможностью non-heap и хренанения на диске

mayton

Крутится всё это будет пока на Amazon EC2 instances с блинами типа SSD на 30 Гиг (я надеюсь).

AFAIK
кроме размера, Amazon еще и за IOPS деньги хочет
т.ч. не факт, что Amazon SSD на 30 Гиг это будет ровно то, что Вы думаете )))
по стандартной опции, IOPS должно быть кот наплакал

ext4 не по размеру файла а по inodes.

AFAIK
кол-во inodes в момент форматирование задается
на Amazon'е плодил несколько миллионов файлов по 500-800 байт, все нормально работало

потом перешел на SQLLite
Не рассматривал базы данных т.к. это оверхед и сортировки по дате всегда тормознутые.

IMHO и зря
Что такое база данных? Это B-tree + максимум лог (redo log). Если целостность не нужна, отключите синхронизацию при записи, оверхеда вообще будет не видно.

Использовал SQLLite. Оверхид вообще не заметен.

Что такое "сортировки по дате всегда тормознутые" мне вообще не понятно. Постройте индекс, будут "мгновенные"

Использовал SQLLite для миллионов строк, все летало. С миллиардами не пробывал )))

Достоинство по сравнению с файловой системой, все же добавить файл в файловую системая значительно больший оверхид, чем строчку в таблицу.
И Амазон слишком дорого берет за поднятие базячных иснтасов а мне их надо будет поднять
для девов штук 4 и для нужд тестинга еще штук 16.

Зачем вообще базячные инстансы от Амазона? Только если своих рук нет, базу поставить. А в случае с SQLite и ставить ничего не нужно. JAR в проект воткнул и все.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904280
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

AFAIK
кроме размера, Amazon еще и за IOPS деньги хочет
т.ч. не факт, что Amazon SSD на 30 Гиг это будет ровно то, что Вы думаете )))
по стандартной опции, IOPS должно быть кот наплакал

Мы регулируем S3 но не можем выйти на те паспортные параметры которые были анонсированы.
Пока есть ощущение что S3 требуется некий прогрев бакета. И все рекомендации по разделению
бакета на префиксы мы выполнили. Но пока по записи S3 плох. Я предполагаю что он больше
по чтению оптимизирован.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

кол-во inodes в момент форматирование задается
на Amazon'е плодил несколько миллионов файлов по 500-800 байт, все нормально работало

Да. Это щас - самый рабочий вариант на проверку. Но характер и род доступа к хранилищу
будет именно таким как я описал в абстрактном протколе "Q". И сущности могут быть мелкими.
меньше от нескольких байт до 4К. Выгодно их хранить или нет в ext4 ? Я не знаю. Но мой опыт
баз данных подсказывает что группировать их в более крупные сущности - выгоднее. При этом
не нарушая удобство "Q".
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904285
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Но пока по записи S3 плох.

Что под этим подразумевается? Как проверяете запись? И главное - чего ожидаете? Он вообще eventual consistent
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904288
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO и зря
Что такое база данных? Это B-tree + максимум лог (redo log). Если целостность не нужна, отключите синхронизацию при записи, оверхеда вообще будет не видно.

Использовал SQLLite. Оверхид вообще не заметен.

Что такое "сортировки по дате всегда тормознутые" мне вообще не понятно. Постройте индекс, будут "мгновенные"

Использовал SQLLite для миллионов строк, все летало. С миллиардами не пробывал )))

Достоинство по сравнению с файловой системой, все же добавить файл в файловую системая значительно больший оверхид, чем строчку в таблицу.
Вот как раз я и говорю что мне не нужна БД как таковая. Просто подойдет дисковая структура данных
которая сохраняет вид FIFO. А поскольку я ищу эконом-решение то база данных вроде как отпадает.
Можно подключить AmazonElastiCache (Redis) но это уже сетевая интеракция. Можно SQS. Но мой
последний опыт работы с SQS был резко негативным. Более неудобного API программирования
я нигде не видел.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904289
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton

Но пока по записи S3 плох.

Что под этим подразумевается? Как проверяете запись? И главное - чего ожидаете? Он вообще eventual consistent

Это - тема отдельного топика. И я сейчас не хочу на ней зацикливать основную тему.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904293
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

Зачем вообще базячные инстансы от Амазона? Только если своих рук нет, базу поставить. А в случае с SQLite и ставить ничего не нужно. JAR в проект воткнул и все.

Я думаю что здесь кроется самая главная маркетинговая подстава. Действительно - зачем?
И я думаю что в амазоне сидят не дураки и они знают где так тонкая грань что продать и в каких условиях.
А база ставится через apt install postgres ... да. Это так.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904301
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С S3 работал только как пользователь, т.ч. не специалист

Все же S3 это не файловая система. Даже по логике, ожидать от нее быстрой работы я бы не стал. Да и доступ по сети (между нодами-машинками) вещь не быстрая. Плюс, подозреваю, если трафик пойдет между дата-центрами, то еще и на оплату трафика можно нарваться.

---

Не очень понятен требуемый функционал. Если бизнес-сущности поддерживают сериализацию. то написать свой Queue с буфферизацией - в общем-то несколько сотен строк кода.

Проблема производительности, как мне видится:

1) Скорость сериализации бизнес-сущности. Сам по себе стандартный механизм сериализации в Java тормозной до чертиков, как Java так умудряется, мне не понятно. Я переписывал на Externalizable.

2) Скорость сохранения на диске. Если бизнес-сущности можно сохранить в fixed size записи, то самое быстрое был бы просто Circle Ring Buffer на диске (сервер то выделеннй, сразу и нарезать буффер на все 30 Gb). Если нет (что скорее всего), то SQL Lite, что бы не изобретать буфферизацию записи/чтения на диск.

3) Входные объемы данных. Как я понимаю, если данные помещаются в ОП, то Вы можете работать в ОП (персистентность и защита от сбоев не требуется). Если не помещаются, то на диск. Но тут проблема, что тогда может быть сильный разнобой по скорости в зависимости от нагрузки, допустимо ли это или нужно всегда медленно, но зато стабильная скорость.

4) Требование от сбоев. Если требуется атомарность и гарантированное хранение информации, то быстрее IOPS'ов Amazon'а не прыгнуть. А их, насколько я помню, десятки, максимум сотни (или платите деньги). А 100-200 записей в секунду - как-то не много. Если при сбое все 30 Гб накрываются "медным тазом" и это нормально, то наверное на пару десятков мегабайт в секунду от локальных дисков расчитывать вполне можно.

Можно конечно в своем формате хранить или смотреть на какие нибудь продукты кэширования, но если что-то сложнее Circle Ring Buffer'а, то SQL Lite будет и проще и, скорее всего, быстрее.

p.s.
с точки зрения "велосипедостроения". Но без полноценной постановки, что же требуется, скорее всего разговариваем о разном.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904309
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Leonid Kudryavtsev

Зачем вообще базячные инстансы от Амазона? Только если своих рук нет, базу поставить. А в случае с SQLite и ставить ничего не нужно. JAR в проект воткнул и все.

Я думаю что здесь кроется самая главная маркетинговая подстава. Действительно - зачем?
И я думаю что в амазоне сидят не дураки и они знают где так тонкая грань что продать и в каких условиях.
А база ставится через apt install postgres ... да. Это так.


По опыту, SQLite минимум на порядок ( 7-8 раз и больше ) быстрее postgresql на точечных select'ах / insert'ах. Как минимум, отстутвует проблема меж-процессорного взаимодействия (задержки на localhost + переключение потоков/процессов).

Для проектов, где не требуется полноценная, отдельно стоящая база, а бы первым делом сейчас смотрел на SQL Lite.

А с учетом родовой травмы PostgreSQL (vacuum), для задачь типа subj, на PostgreSQL смотрел бы вообще в последнию очередь. IMHO & AFAIK

Если "не рассматривал базы данных т.к. это оверхед" ориентируясь на PostgreSQL, я бы порекомендовал пересмотреть свое мнение и попытаться сделать тесты производительности, что нужно, что получилось/не получилось с SQL Lite. Какие характеристики не достигнуты.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904318
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Почему нам не подошла обычная файловая система типа ext4? Ну.... у нас были потоки entities мелкого
размера и мы переполняли файловую систему ext4 не по размеру файла а по inodes.

В свое время была задача, где нужно было хранить несколько миллионов (но не миллиардов) коротких файлов в одной директории.
Прекрасно справлялся RaiserFS. Единственный недостаток - история с ее создателем.

Про миллиарды надо тестировать.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904321
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolchanov
>Почему нам не подошла обычная файловая система типа ext4? Ну.... у нас были потоки entities мелкого
размера и мы переполняли файловую систему ext4 не по размеру файла а по inodes.

В свое время была задача, где нужно было хранить несколько миллионов (но не миллиардов) коротких файлов в одной директории.
Прекрасно справлялся RaiserFS. Единственный недостаток - история с ее создателем.

Про миллиарды надо тестировать.

Мы попробуем средствами ext4. Или я запилю Berkeley или KahaDb.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904323
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
запилю Berkeley

Она же вроде денег стоит?
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904325
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот только што скачал отсюдова https://www.oracle.com/database/technologies/related/berkeleydb-downloads.html
не заплатив ни шекеля.

Я помню что какое-то время у Оракла можно было взять либо легаси версию бесплатно либо последнюю с какими-то
ограничениями. Но щас вроде как либерально. Наверно эта беркли просто никому нахер не нужна. Ни в native ни в Java
варианте.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904328
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вспомнил. Точно. Вот здесь этот боян был бесплатным https://mvnrepository.com/artifact/berkeleydb/je/3.2.76
От 2008 года.

А у Оракла - будет какое-то заподлецо типа ограниченных возможностей.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904329
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The our open source license permits you to use Berkeley DB, Berkeley DB Java Edition or Berkeley DB XML at no charge under the condition that if you use the software in an application you redistribute, the complete source code for your application must be available and freely redistributable under reasonable conditions. If you do not want to release the source code for your application, you may purchase a license from Oracle.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904335
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... можно и так. Главное что они поддерживают 3 сериализируемые структуры. B+Tree, HashTable, Queue.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну с этой Беркли я уже когда-то давно работал. А с KahaDb? Не знаю. Потрачу пол-дня времени чтобы просто
осознать что оно может и не сильно надо.

Вот репка тут https://github.com/apache/activemq/tree/master/activemq-kahadb-store
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904347
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну... можно и так. Главное что они поддерживают 3 сериализируемые структуры. B+Tree, HashTable, Queue.


BerkeleyDbSince the Queue access method always uses fixed-length records , the user must always set the record length prior to creating the database.

сущности могут быть мелкими.меньше от нескольких байт до 4К
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выж понимаете что у нас нет проблем с диском пока. У нас просто была проблема с нехваткой inodes.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904360
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Нужна реализация некой системы буферизации бизнес сущностей
в очередь с возможностью хранения этой очереди на диске.
Оперативы не хватает когда заходит дата-провайдер из китая
и миллиардами сущностей.

Интерфейс:
Код: java
1.
2.
3.
4.
5.
interface Q {
   add(Object entity);
   remove(Object entity);
   purge();
}


Не рассматривал базы данных т.к. это оверхед и сортировки по дате всегда тормознутые.
И Амазон слишком дорого берет за поднятие базячных иснтасов а мне их надо будет поднять
для девов штук 4 и для нужд тестинга еще штук 16.

Рассматривал :
- BerkeleyDb (там вроде очередь поддерживается)
- Redis (не Java-native)
- KahaDb (из репозитария Apache ActiveMQ).

Ничего из этого я еще не тестил и не смотрел. Поэтому можете писать свои мысли.

Крутится всё это будет пока на Amazon EC2 instances с блинами типа SSD на 30 Гиг (я надеюсь).
Тоеть под каждую очередь у меня будет где-то 30 минус операционка с барахлом софта и логами.

Планирую также предусмотреть метод purge() для аварийной очистки очереди. Это в том
случае когда например из 2х узлов кластера 1 выпал навсегда - то надо рестаровать
все бизнес процессы на оставшихся нодах с чистого листа. События все равно зайдут
повторно и не нарушат процессинг (у нас поддерживается idempotency на всех уровнях).

Почему мне не подошли MQ системы? Ну по той причине что от MQ мне нужен был только персистенс.

Почему нам не подошла обычная файловая система типа ext4? Ну.... у нас были потоки entities мелкого
размера и мы переполняли файловую систему ext4 не по размеру файла а по inodes.


http://swaydb.io/?language=java/

До 100 млн записей поддерживает.

Хорошего вам дня!
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39904369
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov, пардон но в ней не видно интерфейса очереди

http://swaydb.io/api/write/put/?language=java/

Возможно это обычная key-value хранилка? Но для меня это тоже избыточно.
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39905175
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolchanov
>Почему нам не подошла обычная файловая система типа ext4? Ну.... у нас были потоки entities мелкого
размера и мы переполняли файловую систему ext4 не по размеру файла а по inodes

- вроде это решается простым раскидыванием файлов по папкам. Или я что то путаю?
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39905180
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
- вроде это решается простым раскидыванием файлов по папкам. Или я что то путаю?

не решается
но при форматировании диска можно задать любое кол-во inodes
AFAIK
...
Рейтинг: 0 / 0
Queue с поддержкой сериализации на диск.
    #39905207
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

HSQLDB смотрел?
...
Рейтинг: 0 / 0
25 сообщений из 200, страница 1 из 8
Форумы / Java [игнор отключен] [закрыт для гостей] / Queue с поддержкой сериализации на диск.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]