netsh http add urlacl url=http://+:15000/ user=Everyone listen=yes
###Презентации
###Домашнее задание
####Координатор Нужно реализовать схему "Координатор".
Изменения нужно будет вносить в ShardMappingController.cs и SimpleStorageClient.cs.
Код координатора находится в проекте Coordinator. В ShardMappingController.cs нужно будет сделать так, чтобы функция Get возвращала номер шарды.
Для запуска координатора никакого скрипта нет, его можно запустить так:
\Coordinator\bin\Debug\Coordinator.exe -p 17000 -c 3
Для запуска шард нужно использовать скрипт runAllShards.bat, как на паре. Запускать нужно как на паре:
\SimpleStorage\bin\Debug\runAllShards.bat
В SimpleStorageClient.cs нужно реализовать следующий функционал:
- Узнаем у координатора номер шарды. Это можно сделать при помощи
CoordinatorClient.cs(его код находится в проектеClient). Поскольку в конфигурацииSimpleStorageнет параметра для адреса координатора, приемлемым будет его создавать так:var coordinatorClient = new CoordinatorClient("http://127.0.0.1:17000"); - Идем на шарду с этим номером.
Все проверяют тесты /SimpleStorage.Tests/Sharding/Task3Tests.cs, чтобы их запустить, нужно убрать атрибут [Ignore] (все как на паре).
####Quorum Нужно реализовать схему QuorumRead-QuorumWrite.
Изменения нужно будет вносить в ValuesController.cs и SimpleStorageClient.cs.
В методах Get и Put в ValuesController, помимо операции с локальным IStorage нужно отправить аналогичную операцию на другие реплики и получить успешный ответ от Quorum узлов. Не забудьте выбрать самые актуальные данные в методе Get.
Для того чтобы избежать вечного цикла используйте InternalClient для общения между репликами.
В SimpleStorageClient.cs нужно реализовать попытки на случай если какая-то из реплик не доступна.
Запустить нужную конфигурацию кластера можно скриптом runAll.bat:
\SimpleStorage\bin\Debug\runAll.bat
Все проверяют тесты /SimpleStorage.Tests/ReplicationAndConsistency/Task2Tests.cs, чтобы их запустить, нужно убрать атрибут [Ignore] (все как на паре).