Я думаю о том, как крупные биржи обрабатывают клиентские депозиты. Похоже, есть два доступных решения: одно — использовать API-интерфейс для внешних уведомлений, например API-интерфейс для уведомлений blockchain.info, а другое — запустить полный узел и использовать функцию walletnotify. Поскольку первый подход приводит к зависимости от стороннего сервиса, он также не поддерживает уведомление тестовой сети, которое мы используем во время разработки, поэтому я пытаюсь запустить полный узел. Мой вопрос в том, насколько это масштабируемо? Предположим, что есть 10 000 пользователей, и платформа должна поддерживать добавление дополнительных адресов для пользователя, скажем, в среднем каждый пользователь генерирует 10 адресов, это 100 000 адресов для просмотра. Если я добавлю эти 100 000 адресов в качестве просмотра только для полного узла и включу walletnotify, будет ли это хорошим способом справиться с этим? Будут ли технические проблемы?
Использование walletnotify
доказало свою эффективность и сегодня используется многими масштабируемыми приложениями. Хотя полностью полагаться на него я бы не стал. walletnotify
задача состоит в том, чтобы выполнять команду оболочки каждый раз, когда он получает транзакцию кошелька. Это означает, что данные передаются между процессами, что не совсем устраивает меня как разработчика. В конце концов, достаточно одной ошибки, чтобы кто-то потерял свои средства.
Я бы рекомендовал не только использовать walletnotify
, но и проверять X блоков через Y минут. Вы можете отслеживать пройденные блоки, и если какие-либо транзакции не были обработаны walletnotify
, ваш cronjob по проверке транзакций восстановит транзакцию. Вы можете использовать listsinceblock
команду RPC и отслеживать высоту блока каждый раз, когда проверяете транзакции. Вы можете где-то хранить транзакции, обработанные в БД.
В конце концов, это финансовое приложение, поэтому я думаю, что проверка резервной копии жизненно важна.
Вероятно, технических проблем нет, и это сильно зависит от вашего сервера.
если у вашего сервера нет проблем, так что не о чем беспокоиться.
Я попытался отправить 1000 запросов на основной биткойн-сервер одновременно с базовым сервером, и все отлично сработало.
Также вы можете получить более одного основного сервера биткойнов и обрабатывать запросы к этим серверам.
Поскольку время, необходимое для обработки данного запроса, будет больше нуля миллисекунд, наступит момент, когда достаточное количество запросов приведет к тому, что ЦП достигнет 100% использования, или вы можете сначала достичь ограничений ввода-вывода или сети, но в любом случае когда вы обнаружите узкое место, вам нужно будет разделить рабочую нагрузку между несколькими машинами, используя какую-то схему балансировки нагрузки.
флаттер
Адам