Внутренние службы DecimalChain: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
[досмотренная версия][досмотренная версия]
Нет описания правки
Нет описания правки
Строка 5: Строка 5:
                     |description= Внутренние службы сети Decimal
                     |description= Внутренние службы сети Decimal
                     }}
                     }}
<div class="mikio-article-content">
{{старая версия}}


<div class="mikio-tags">
В [[DecimalChain|сети Decimal]] работает ряд '''служб''' — '''воркеров''' (Workers), которые собирают данные, поступающие непосредственно в блокчейн.


'''Данные''' — это блоки и транзакции разных типов: отправка, покупка, продажа, создание монет и так далее.


 
Пользователи [[Decimal Explorer|обозревателя]] (Explorer) делают запросы на поиск всевозможной информации о блокчейне. Все они проходят через специальный '''балансировщик''' (Balancer), который равномерно распределяет нагрузку и направляет соответствующие запросы на считывание из '''slave-хранилищ.'''
</div>
'''Это старая версия документа!'''
 
 
-----
 
<span id="vnutrennie_sluzhby_seti_decimal"></span>
= Внутренние службы сети Decimal =
 
<div class="level1">
 
В сети Decimal работает ряд служб — '''воркеров''' (Workers), которые собирают данные, поступающие непосредственно в блокчейн.
 
'''Данные''' — это блоки и транзакции разных типов: отправка, покупка, продажа, создание монет и так далее.
 
Пользователи обозревателя (Explorer) делают запросы на поиск всевозможной информации о блокчейне. Все они проходят через специальный '''балансировщик''' (Balancer), который равномерно распределяет нагрузку и направляет соответствующие запросы на считывание из '''slave-хранилищ.'''


Так осуществляется буферизация данных и канала доступа на считывание из блокчейна с высокой пропускной способностью.
Так осуществляется буферизация данных и канала доступа на считывание из блокчейна с высокой пропускной способностью.


== Буферизация данных ==
'''Буферизация''' (от англ. ''buffer'') — способ организации обмена данных в компьютерах и других вычислительных устройствах, который подразумевает использование буфера для временного хранения данных.


</div>
'''При вводе''' данных одни устройства или процессы производят запись данных в буфер, а другие — чтение из него, '''при выводе''' — наоборот. Процесс, выполнивший запись в буфер, может немедленно продолжать работу, не ожидая, пока данные будут обработаны другим процессом, которому они предназначены. В свою очередь, процесс, обработавший некоторую порцию данных, может немедленно прочитать из буфера следующую порцию.
<span id="buferizacija_dannyx"></span>
= Буферизация данных =
 
<div class="level1">
 
'''Буферизация''' (от англ. buffer) — способ организации обмена данных в компьютерах и других вычислительных устройствах, который подразумевает использование буфера для временного хранения данных.
 
'''При вводе''' данных одни устройства или процессы производят запись данных в буфер, а другие — чтение из него, '''при выводе''' наоборот. Процесс, выполнивший запись в буфер, может немедленно продолжать работу, не ожидая, пока данные будут обработаны другим процессом, которому они предназначены. В свою очередь, процесс, обработавший некоторую порцию данных, может немедленно прочитать из буфера следующую порцию.


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


 
== Зачем нужны внутренние службы? ==
</div>
Полагая, что пользователям будет интересен очень большой объём информации о состоянии и процессах в сети [[Decimal]], а именно детали [[транзакция|транзакций]], [[блок]]и, [[валидатор]]ы и их параметры, выпущенные [[монеты]] и так далее, '''DecimalChain позаботился о доступности всех этих данных''' и обеспечил их корректное и быстрое отображение с помощью внутренних служб.
<span id="zachem_nuzhny"></span>
= Зачем нужны? =
 
<div class="level1">
 
Полагая, что пользователям будет интересен очень большой объём информации о состоянии и процессах в сети Decimal, а именно детали транзакций, блоки, валидаторы и их параметры, выпущенные монеты и так далее, '''DecimalChain позаботился о доступности всех этих данных''' и обеспечил их корректное и быстрое отображение с помощью внутренних служб.


С течением времени и увеличением блокчейна обрабатывать запросы будет всё сложнее. Возможны значительные временные задержки при выборке данных непосредственно из реплик блокчейна.
С течением времени и увеличением блокчейна обрабатывать запросы будет всё сложнее. Возможны значительные временные задержки при выборке данных непосредственно из реплик блокчейна.
Строка 56: Строка 29:
DecimalChain организовал хранение в базе данных, способной удовлетворить огромное количество запросов и гарантированно предоставить нужную пользователям информацию.
DecimalChain организовал хранение в базе данных, способной удовлетворить огромное количество запросов и гарантированно предоставить нужную пользователям информацию.


Процесс организован следующим образом. Изменения состояния в блокчейне генерируют '''события''' (events), которые мониторятся '''воркерами''' . Они разбирают на составные части всю поступающую информацию из блоков и транзакций и передают в '''индексер''' , в котором данные сортируются и индексируются. После этого упорядоченная информация записывается в '''базу данных''' (PostgreSQL), '''ведущую базу''' (Master) и дублируется на '''ведомых хранилищах''' (Slave) для гарантии сохранности. Все запросы от эксплорера поступают на '''ведомые базы данных''' через '''балансировщик''' (Load Balancer), организующий через программный интерфейс ( API ) равномерное распределение нагрузки.
Процесс организован следующим образом. Изменения состояния в блокчейне генерируют '''события''' (events), которые мониторятся '''воркерами'''. Они разбирают на составные части всю поступающую информацию из блоков и транзакций и передают в '''индексер''', в котором данные сортируются и индексируются. После этого упорядоченная информация записывается в '''базу данных''' (PostgreSQL), '''ведущую базу''' (Master) и дублируется на '''ведомых хранилищах''' (Slave) для гарантии сохранности. Все запросы от эксплорера поступают на '''ведомые базы данных''' через '''балансировщик''' (Load Balancer), организующий через программный интерфейс ([[API]]) равномерное распределение нагрузки.


Такая схема горизонтально масштабируемая, то есть если возрастает нагрузка, то можно добавлять ведомые базы. При этом мастерноды, где непосредственно хранятся реплики блокчейна, не нагружаются, так как архитектурно отделены от запросов пользователей и внешних служб.
Такая схема горизонтально масштабируемая, то есть если возрастает нагрузка, то можно добавлять ведомые базы. При этом мастерноды, где непосредственно хранятся реплики блокчейна, не нагружаются, так как архитектурно отделены от запросов пользователей и внешних служб.
Строка 62: Строка 35:
Благодаря индексированию базы данных способны с минимальными задержками выдать информацию о любых событиях и состояниях в блокчейне вне зависимости от размера самой базы данных.
Благодаря индексированию базы данных способны с минимальными задержками выдать информацию о любых событиях и состояниях в блокчейне вне зависимости от размера самой базы данных.


== См. также ==
* '''[[Консоль Decimal]]'''


</div>
[[Категория:DecimalChain]]
<div style="clear:both">
 
 
 
</div>
 
</div>
[[Category:Commoninfo]]

Навигация