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]
(все как на паре).