Уважаемое сообщество ищу серьезных партнеров для криптовалютных проектов. Суть, я пока писал чат написал неплохой платежный сервис который можно пере использовать под разные криптовалюты, будут настоящие криптовалюты со своими даже протоколами если нужно будет, типа mesh сетей, p2p по вверх udp и так далее на сколько фантазий хватит. Кошелек у меня уже готовый, переводы работают, поиск транзакций, балансы, исходящие-входящие транзакции, пулл ликвидности можно делать клайм каждые 4 часа, начисление. Микросистемная архитектура можно быстро делать разные криптавалюты. Кошелек только андроид версия. У большинства криптопроектов даже кошелька нету. Интересно долгосрочное сотрудничество, под за рубеж.
Отчет AI:
##
Оценка производительности (realistic, на хорошем сервере)
Предположим сервер Redis:
---
### 1. Максимальное количество пользователей (всего)
- Каждый активный пользователь (с ненулевым балансом или недавним логом) занимает:
- Ключ баланса: ~50–100 байт (если ≠ 0)
- Лог транзакций: до 50 записей × ~200 байт = ~10 КБ максимум (но обычно меньше)
- Индекс транзакций:
Но если пользователь потратил всё и давно неактивен:
То есть неактивные пользователи со временем исчезают из памяти.
Итог по общему числу пользователей:
---
### 2. Одновременный онлайн (активные пользователи)
"Онлайн" = пользователи, у которых ненулевой баланс ИЛИ недавние транзакции (в пределах 30 дней).
Допустим:
Тогда:
Итог по онлайн-пользователям:
Если увеличить RAM до 128 ГБ → до 10–20 млн.
---
### 3. Транзакции в секунду (TPS)
Redis — однопоточный для записи. Lua-скрипты блокируют движок на всё время выполнения.
Ваши скрипты:
Теоретический максимум:
Но на практике:
Итог по TPS:
---
##
Финальный итог
| Показатель | Значение (на 1 Redis-ноде, 64 ГБ RAM) |
|-----------|----------------------------------------|
| Всего пользователей (в истории) | Неограниченно (миллиарды — за счёт TTL и удаления нулей) |
| Активных пользователей ("онлайн") | 5–10 млн |
| Макс. транзакций в секунду (TPS) | 2000–4000 |
---
##
Если нужно больше?
1. Vertically: Увеличьте RAM до 128–256 ГБ → +2× пользователей.
2. Horizontally: Запустите несколько wallet-нод, каждая обслуживает свой диапазон
3. Архитектурно: Перейдите на PostgreSQL + Redis cache, чтобы получить true distributed transactions.
Но если ваш продукт не достиг 4000 TPS и 10 млн активных — текущая архитектура идеальна.
========================================================================================================================================================================================================
После апдейта будет следующие показатели по отчету AI:
Отлично! Теперь у нас обновлённая, значительно более продвинутая архитектура — с поддержкой горизонтального масштабирования через шардирование, паттерном Saga для кросс-шардных транзакций, пулами воркеров, circuit breakers, метриками, асинхронной обработкой логов и устойчивостью к сбоям.
Разберём по пунктам ваш вопрос:
---
##
Ключевые архитектурные преимущества новой версии
1. Шардирование по
- Ключи:
-
2. Поддержка Redis Cluster:
-
- Отдельные пул соединений на каждый "логический шард" (для изоляции).
3. Atomic transfers — внутри одного шарда (быстро, надёжно).
4. Cross-shard transfers — через Saga pattern (lock → complete/compensate).
5. Асинхронная запись логов → не блокирует основную транзакцию.
6. 128 воркеров, обрабатывающих события из Redis Stream.
7. Не хранятся нулевые балансы (в Lua-скриптах:
---
##
Оценка масштабируемости
###
1. Максимальное число пользователей (всего)
- Redis Cluster масштабируется до 1000+ нод (на практике — 10–100 нод).
- TTL = 7 дней на баланс → неактивные пользователи исчезают.
- Логи хранятся 30 дней → потом удаляются.
---
###
2. Одновременный онлайн (активные пользователи)
Пусть у вас Redis Cluster из 10 нод, по 64 ГБ RAM каждая → 640 ГБ суммарно.
При 640 ГБ и 10 КБ на пользователя:
Если убрать нулевые балансы и сжать логи → можно поднять до 100–150 млн.
Оценка:
---
###
3. Транзакции в секунду (TPS)
#### a) Intra-shard transfers (80–90% трафика, предположим)
#### b) Cross-shard transfers (10–20%)
#### c) Claims
- Проще transfers → до 60 000 TPS на кластер.
Итог по TPS (сбалансированная нагрузка):
---
##
Что можно улучшить для ещё большей эффективности?
### 1. Удалять ключи с нулевым балансом
Сейчас в
→ если стало 0, ключ остаётся.
Рекомендация: добавить проверку и
(аналогично в
→ Это снизит память на 30–50% для пользователей с нулевым балансом.
---
### 2. Увеличить
Сейчас
Если у вас 100 Redis-нод, можно поставить
---
### 3. Оптимизировать Saga TTL
Сейчас lock живёт 5 минут. Можно снизить до 30–60 сек, если компенсация быстрая.
---
##
Финальный итог (обновлённая архитектура)
| Показатель | Оценка (на Redis Cluster из 10 нод × 64 ГБ) |
|-----------|---------------------------------------------|
| Всего пользователей | Неограниченно (миллиарды, благодаря TTL и шардированию) |
| Активных пользователей ("онлайн") | 50–150 миллионов |
| Макс. TPS (смешанная нагрузка) | 30 000 – 60 000 |
| Cross-shard TPS | До 2000 (остальное — intra-shard) |
| Масштабируемость | Линейная — добавляете ноды → растёт TPS и ёмкость |
Если вам нужно ещё больше — масштабируйте Redis Cluster (до 50–100 нод), и система легко выйдет на 200–300K TPS.
---
По факту конечно меньше, так как сейчас используются вебсокеты к нодам, можно поставить перед нодами haproxy чтобы держал соединения, а к нодам только rpc запросы. Но все равно это излишне так как таких объемов не будет.
Отчет AI:
##
Оценка производительности (realistic, на хорошем сервере)Предположим сервер Redis:
- CPU: 8–16 ядер (Redis — однопоточный, но фоновые операции используют другие ядра)
- RAM: 64 ГБ
- SSD NVMe (для persistence, если включён)
- Сеть: 10 GbE
---
### 1. Максимальное количество пользователей (всего)
Под "пользователями" понимаем уникальныеpeerID, которые когда-либо совершали операцию (claim/transfer).
- Каждый активный пользователь (с ненулевым балансом или недавним логом) занимает:
- Ключ баланса: ~50–100 байт (если ≠ 0)
- Лог транзакций: до 50 записей × ~200 байт = ~10 КБ максимум (но обычно меньше)
- Индекс транзакций:
tx_index_by_user{...} — до 100 ID × 20 байт ≈ 2 КБНо если пользователь потратил всё и давно неактивен:
- Ключ баланса удалён.
- Лог и индекс протухают через 30 дней (
EXPIRE 2592000= 30 дней).
То есть неактивные пользователи со временем исчезают из памяти.
Итог по общему числу пользователей:Вы можете хранить данные о миллиардах пользователей, потому что:
- Только активные/недавние занимают память.
- Остальные — автоматически удаляются через TTL.
---
### 2. Одновременный онлайн (активные пользователи)
"Онлайн" = пользователи, у которых ненулевой баланс ИЛИ недавние транзакции (в пределах 30 дней).
Допустим:
- Средний активный пользователь занимает ~5–10 КБ (баланс + лог + индекс).
- У вас 64 ГБ RAM, из них ~50 ГБ можно отдать под данные (остальное — overhead Redis, OS).
Тогда:
Код:
50 ГБ / 10 КБ ≈ 5 000 000 активных пользователей
50 ГБ / 5 КБ ≈ 10 000 000 активных пользователей
Итог по онлайн-пользователям:До 5–10 миллионов активных пользователей могут находиться "в онлайне" (храниться в памяти) на одном сервере Redis с 64 ГБ RAM.
Если увеличить RAM до 128 ГБ → до 10–20 млн.
---
### 3. Транзакции в секунду (TPS)
Redis — однопоточный для записи. Lua-скрипты блокируют движок на всё время выполнения.
Ваши скрипты:
- Простые, без циклов.
- Делают ~10–15 Redis-команд.
- Работают ~0.2–0.5 мс на одну транзакцию (на хорошем CPU).
Теоретический максимум:
Код:
1000 мс / 0.3 мс ≈ 3000–5000 TPS
Но на практике:
- Сетевые задержки.
- Конкуренция за ресурсы.
- Persistence (RDB/AOF) может вызывать паузы.
Итог по TPS:Стабильно 2000–4000 транзакций в секунду — реалистичная цифра для standalone Redis на хорошем железе.
Пиковые всплески — до 5000 TPS.
---
##
Финальный итог| Показатель | Значение (на 1 Redis-ноде, 64 ГБ RAM) |
|-----------|----------------------------------------|
| Всего пользователей (в истории) | Неограниченно (миллиарды — за счёт TTL и удаления нулей) |
| Активных пользователей ("онлайн") | 5–10 млн |
| Макс. транзакций в секунду (TPS) | 2000–4000 |
Это очень высокая производительность для финансовой системы на одном сервере.
Многие стартапы и даже средние проекты не достигают этих пределов.
---
##
Если нужно больше?1. Vertically: Увеличьте RAM до 128–256 ГБ → +2× пользователей.
2. Horizontally: Запустите несколько wallet-нод, каждая обслуживает свой диапазон
peerID (например, по первой цифре). Но между нодами нельзя делать transfer — или нужен координационный слой.3. Архитектурно: Перейдите на PostgreSQL + Redis cache, чтобы получить true distributed transactions.
Но если ваш продукт не достиг 4000 TPS и 10 млн активных — текущая архитектура идеальна.
========================================================================================================================================================================================================
После апдейта будет следующие показатели по отчету AI:
Отлично! Теперь у нас обновлённая, значительно более продвинутая архитектура — с поддержкой горизонтального масштабирования через шардирование, паттерном Saga для кросс-шардных транзакций, пулами воркеров, circuit breakers, метриками, асинхронной обработкой логов и устойчивостью к сбоям.
Разберём по пунктам ваш вопрос:
Сколько пользователей можно обслуживать? Какой онлайн? Сколько TPS?
---
##
Ключевые архитектурные преимущества новой версии1. Шардирование по
peerID:- Ключи:
balance:123456789 → нет общего hash tag → Redis Cluster распределяет пользователей по 16384 слотам.-
getShardID(peerID) использует FNV-хеш → равномерное распределение.2. Поддержка Redis Cluster:
-
shardCount = 64 (можно увеличить).- Отдельные пул соединений на каждый "логический шард" (для изоляции).
3. Atomic transfers — внутри одного шарда (быстро, надёжно).
4. Cross-shard transfers — через Saga pattern (lock → complete/compensate).
5. Асинхронная запись логов → не блокирует основную транзакцию.
6. 128 воркеров, обрабатывающих события из Redis Stream.
7. Не хранятся нулевые балансы (в Lua-скриптах:
DECRBY → если стало 0, ключ остаётся, но вы можете его удалять — сейчас этого нет, но легко добавить).Замечание: в текущем
atomicTransferScriptне удаляется ключ при балансе = 0. Это можно улучшить (см. ниже).
---
##
Оценка масштабируемости###
1. Максимальное число пользователей (всего)- Теоретически — миллиарды.
- Потому что:
- Redis Cluster масштабируется до 1000+ нод (на практике — 10–100 нод).
- TTL = 7 дней на баланс → неактивные пользователи исчезают.
- Логи хранятся 30 дней → потом удаляются.
Ограничение — не архитектура, а бюджет на Redis-кластер.
---
###
2. Одновременный онлайн (активные пользователи)Пусть у вас Redis Cluster из 10 нод, по 64 ГБ RAM каждая → 640 ГБ суммарно.
- Активный пользователь (баланс + лог + индекс): ~5–10 КБ.
- Но баланс = 0 → ключ может не храниться (если доработать скрипты).
При 640 ГБ и 10 КБ на пользователя:
Код:
640 * 1024 / 10 ≈ **65 миллионов активных пользователей**
Если убрать нулевые балансы и сжать логи → можно поднять до 100–150 млн.
Оценка:50–150 млн активных пользователей — реалистично на кластере из 10 средних нод.
---
###
3. Транзакции в секунду (TPS)#### a) Intra-shard transfers (80–90% трафика, предположим)
- Выполняются атомарно, за ~0.2 мс.
- На одной Redis-ноде: до 4000–5000 TPS.
- На 10 нодах: 40 000–50 000 TPS (линейное масштабирование).
#### b) Cross-shard transfers (10–20%)
- Медленнее: 2 фазы + попытки + асинхронность.
- ~10–50 мс на транзакцию.
- Но обрабатываются асинхронно, не блокируют основной поток.
- Максимум: 1000–2000 cross-shard TPS на кластер (ограничено координацией).
#### c) Claims
- Проще transfers → до 60 000 TPS на кластер.
Итог по TPS (сбалансированная нагрузка):30 000 – 60 000 транзакций в секунду — реалистичная производительность для кластера из 10 нод.
Это в 10–15 раз выше, чем standalone-версия!
---
##
Что можно улучшить для ещё большей эффективности?### 1. Удалять ключи с нулевым балансом
Сейчас в
atomicTransferScript:
Код:
redis.call('DECRBY', from_key, amount)
Рекомендация: добавить проверку и
DEL:
Код:
local new_bal = redis.call('DECRBY', from_key, amount)
if tonumber(new_bal) == 0 then
redis.call('DEL', from_key)
else
redis.call('EXPIRE', from_key, 604800)
end
crossShardLockScript и claimScript — там INCRBY, так что 0 не возникает).→ Это снизит память на 30–50% для пользователей с нулевым балансом.
---
### 2. Увеличить
shardCountСейчас
shardCount = 64.Если у вас 100 Redis-нод, можно поставить
shardCount = 256 или 512 → лучше распределение нагрузки.---
### 3. Оптимизировать Saga TTL
Сейчас lock живёт 5 минут. Можно снизить до 30–60 сек, если компенсация быстрая.
---
##
Финальный итог (обновлённая архитектура)| Показатель | Оценка (на Redis Cluster из 10 нод × 64 ГБ) |
|-----------|---------------------------------------------|
| Всего пользователей | Неограниченно (миллиарды, благодаря TTL и шардированию) |
| Активных пользователей ("онлайн") | 50–150 миллионов |
| Макс. TPS (смешанная нагрузка) | 30 000 – 60 000 |
| Cross-shard TPS | До 2000 (остальное — intra-shard) |
| Масштабируемость | Линейная — добавляете ноды → растёт TPS и ёмкость |
Эта архитектура подходит для крупного проекта уровня Telegram, Discord, или Web3-кошелька с десятками миллионов пользователей.
Если вам нужно ещё больше — масштабируйте Redis Cluster (до 50–100 нод), и система легко выйдет на 200–300K TPS.
---
По факту конечно меньше, так как сейчас используются вебсокеты к нодам, можно поставить перед нодами haproxy чтобы держал соединения, а к нодам только rpc запросы. Но все равно это излишне так как таких объемов не будет.
Вложения
-
Screenshot_20260106_152836.png31.5 КБ · Просмотры: 9 -
Screenshot_20260106_171135.png30.2 КБ · Просмотры: 10 -
Screenshot_20260106_171208.png27.2 КБ · Просмотры: 9 -
Screenshot_20260106_171227.png31.7 КБ · Просмотры: 9 -
Screenshot_20260106_142320.png29.5 КБ · Просмотры: 7 -
Screenshot_20260106_142321.png28.2 КБ · Просмотры: 6 -
Screenshot_20260106_142326.png29.5 КБ · Просмотры: 6 -
Screenshot_20260106_152836.png31.5 КБ · Просмотры: 6 -
Screenshot_20260106_171135.png30.2 КБ · Просмотры: 6 -
Screenshot_20260106_171208.png27.2 КБ · Просмотры: 6 -
Screenshot_20260106_171227.png31.7 КБ · Просмотры: 8
Последнее редактирование:
Это очень высокая производительность для финансовой системы на одном сервере.
Замечание: в текущем