Hyperledger TPS - PullRequest
       4

Hyperledger TPS

0 голосов
/ 15 февраля 2019

Я делаю Proof of Concept (PoC) на основе блокчейна Hyperledger и интегрирую его с медицинскими данными (это академический проект).

Я следовал этому руководству: https://github.com/IBM/BlockchainNetwork-CompositeJourney

Поскольку я являюсь пользователем Windows, и у меня не осталось свободного места на моем SSD для размещения двойной загрузки Linux Ubuntu со всеми компонентами главной книги, я решил пойти со всей установкой POC на "Oracle VM VirtualBox", имеющей все файлы VM (* .vdi), размещенный на моем дополнительном жестком диске, который является жестким диском, а не SSD.

Это сложная часть, само программное обеспечение «Oracle VM VirtualBox» отлично установлено на моем SSD, но виртуальная машина Linux со всемиPOC находится на жестком диске, который является моим вторым жестким диском.

Пока у меня есть Peer, работающий на моей виртуальной машине, и уже сохранил данные на ней.Моя проблема / беспокойство касаются его производительности ...

Я создал фрагмент кода на python для его сравнения, и я получил ответы от 2 до 3 секунд на транзакцию, что я считаю чрезвычайно низким TPS (Транзакций в секунду) верно?

Я что-то не так сделал?Я шаг за шагом следовал этому уроку, и он работает, но чрезвычайно низкоэффективный TPS.

Может ли это быть из-за того, что он работает на жестком диске с Oracle VM?

Если бы у меня быловсе ли работает прямо на SSD с Linux, получу ли я лучше TPS?

 //composer-rest-server endpoint
 url = 'http://localhost:3000/api/Member'

 start = time.time()
 response = requests.post(url, headers=headers, data=data)
 end = time.time()
 timeTotal = (end - start)

Ответы [ 2 ]

0 голосов
/ 21 августа 2019

Как правило, TPS в структуре зависит от различных факторов.

  1. Политика одобрения (номер подтверждающего узла и политика)
  2. База данных текущего состояния (уровень DB, база данных Couch)
  3. Распределение ресурсов (Конфигурация оборудования)
  4. Размер блока (Размер партии и Время партии (определено в файле configtx.yaml)) и многие другие факторы

Количествотранзакция, которую может обработать сеть, и задержка транзакции - это две разные вещи.Время между отправкой транзакции и получением ответа - задержка. Максимальное число выполняемых транзакций в секундах - TPS

.
0 голосов
/ 15 февраля 2019

Существует множество факторов для низкого TPS.Чтобы выполнить транзакцию в Hyperledger Fabric, необходимо выполнить несколько процессов.

1) Создайте предложение по сделке и отправьте его на утверждение всем партнерам.Например, если у вас есть следующее одобрение политики:

AND('Org1MSP','Org2MSP')  

По крайней мере один узел каждой организации должен подтвердить транзакции, для каждого отправителя, которому вы отправили пропорсал, они выполнят транзакцию внутри контейнера и проверит,это действительно, тогда, если это действительно, они ответят со статусом 200 (Это для каждого, индивидуально).

2) Следующим шагом является отправка транзакции в пользу заказчику, если согласие соло-заказчика будет быстрее, чем согласие кафки-заказчика ( Здесь вы можете проверить, как это работает ).Заказчик создаст блок и подождет несколько секунд, прежде чем отправлять его на каждый узел организации.Это несколько секунд, это очень важный параметр в файле configtx.yaml, это BatchTimeout, я процитирую определение официального сайта фабрики hyperledger:

Batch Timeout.Время ожидания после поступления первой транзакции для дополнительных транзакций, прежде чем разрезать блок.Уменьшение этого значения улучшит задержку, но слишком большое уменьшение может уменьшить пропускную способность, не позволяя блоку заполниться до максимальной емкости.

Здесь вы можете прочитать больше.

EDIT: по умолчанию значение batchTimeout равно 2сек .

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

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

...