Настройка Kafka и торговля движком - PullRequest
0 голосов
/ 06 мая 2019

В настоящее время мы настраиваем торговый движок и в основном все настроили в отношении того, как он должен функционировать, единственная часть, над которой мы пытаемся выяснить, это то, как следует снять комиссию и какую конфигурацию использовать для kafka

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

Книга заказов использует redis вПамять для быстрой базы данных и сопоставления, а все остальное в основном отсортировано.

Наши две проблемы - как настроить kafka, чтобы иметь возможность иметь индивидуальную очередь баланса для пользователя, лучше ли будет делать 1 тему и каждуюИспользование имеет свой собственный раздел, которыйЯ верю, что будет ограничено только 10 000 пользователей, имеющих собственную очередь баланса, или есть какой-нибудь другой лучший способ?И еще одна вещь - как мы можем снять комиссию, поскольку мы рассматривали другие биржи, такие как binance, kucoin и т. Д., И они, кажется, снимают комиссию после того, как сделка совпадает, и когда они обрабатывают баланс, однако при этом это означает, чтоон торгует больше, чем должен из-за взимаемой комиссии.Как и в примере ниже

пользователь покупает =

цена: 1 бит

количество: 100 нано для покупки

всего:100 бтк на оплату (без взимания комиссии)

пользователь продает, но в книге заказов =

цена 1 бт

сумма: 100 нано нанопродать

всего: 100 бтк, чтобы получить (без взимания комиссии)

Таким образом, совпадение происходит и в основном соответствует 1: 1, однако теперь речь идет об обновлении баланса, и плата снимаетсяи мы получаем следующую проблему, когда есть 0,1 нано-торгуемой дополнительной суммы, которая должна остаться в книге заказов из-за комиссии 0,1%.

Так как пользователь 1 действительно будет торговать 99,9 бтк при снятии комиссии 0,1 бтс,означает, что он получит действительно 99,9 нано, но соответствующий движок будет продан в полном объеме без снятия комиссии, поэтому был продан дополнительный 0,1, который был комиссией, поэтому это вызывает много проблем.

Как бы это было сделаноторгуя лишними 0,1 нано, остается в книге заказов, если все сборыудаление в конце сделки было сопоставлено и продано.

Другой фактор заключается в том, что у нас есть возможность заплатить другой монетой, и этот чек должен быть в конце, поэтому он не резервирует количество монет при добавлении.для балансирования и снятия с резерва и расчета комиссионных он проверяет, была ли включена оплата в этой монете, и если да, то проверяет, достаточно ли у пользователя этой монеты в данный момент.Если они это сделают, он использует это для уплаты комиссии, а если нет, то использует обычную плату для базовой пары.

Это не сложный вопрос, но было бы очень трудно выяснить, как интегрировать сборы в такую ​​систему, как этабез проблем и проблем с сопоставлением времени и количества, которое получают пользователи.

Если у кого-то есть какие-либо подсказки, было бы очень полезно и полезно найти лучший способ для kafka, а затем оплатить интеграцию.

...