Сообщение Re[2]: Опрос: Как назвать "Distributed Singleton" от 24.06.2016 9:17
Изменено 24.06.2016 9:35 VladCore
Здравствуйте, Sinatr, Вы писали:
S>Здравствуйте, VladCore, Вы писали:
VC>>Фича простая – на всех клОнах (инстансах) гарантируется что заданный код, точнее, поток или несколько потоков, выполняются только в одном экземспляре. Клон – ключевое слово. Т.е. и код и конфиги на всех инстансах одинаковые. Но заданный логический поток всегда выполняется только на одном инстансе. Таких задач полно в любом сервисе — рассылка смс и писем по условиям в заданное время, репликация в/из внешних систем и пр.
S>Непонятно что вы делаете (я полный нуп в WCF), но: distributed (распределенное) это антоним тому что вы делаете (блокируете всех пока поток занят?),
Расскажу не жалко.
Внутрях есть две нотификации инстансов на redis-сервер о том что кандидаты не упали и не выключены и о том что singleton успешно без иксепшнов работу работает.
Еще есть выборы когда избранный ранее singleton упал. Выборы разумеется выполняются под DistributedLock-ом.
S>singleton — распространенное понятие, даже если вы используете паттерн синглетон, врядли использовать это слово хорошая идея.
Словарь с вами не согласен

S>Из того что я понял вы делаете некий manager (dispatcher?). Я бы смотрел синонимы к этому слову. Возможно вы используете какую-то технику, чтобы достичь желаемого, в этом случае назовите библиотеку "Какая-то_техника Thread (Task? Logical Thread? Clone Job?) Dispatcher".
Слово менеджер для публичного апи мне не нравится, но лучшего я не придумал.
Вы почти всё угадали по описанию. Вот так выглядит синглтон в прикладном коде:
ThreadStart запускается на всех инстансах, а вот PerformSomething() в цикле вертится всегда только на одном. Если надо "запускаются" выборы нового инстанса в качестве того сингтона который будет один единственный делать работу PerformSomething()
Вот теперь название придумываю.
Внутри есть DistributedLock, это не я придумал.
Вот и взял DistributedSingleton исключительно по аналогии с DistributedLock
S>Здравствуйте, VladCore, Вы писали:
VC>>Фича простая – на всех клОнах (инстансах) гарантируется что заданный код, точнее, поток или несколько потоков, выполняются только в одном экземспляре. Клон – ключевое слово. Т.е. и код и конфиги на всех инстансах одинаковые. Но заданный логический поток всегда выполняется только на одном инстансе. Таких задач полно в любом сервисе — рассылка смс и писем по условиям в заданное время, репликация в/из внешних систем и пр.
S>Непонятно что вы делаете (я полный нуп в WCF), но: distributed (распределенное) это антоним тому что вы делаете (блокируете всех пока поток занят?),
Расскажу не жалко.
Внутрях есть две нотификации инстансов на redis-сервер о том что кандидаты не упали и не выключены и о том что singleton успешно без иксепшнов работу работает.
Еще есть выборы когда избранный ранее singleton упал. Выборы разумеется выполняются под DistributedLock-ом.
S>singleton — распространенное понятие, даже если вы используете паттерн синглетон, врядли использовать это слово хорошая идея.
Словарь с вами не согласен

S>Из того что я понял вы делаете некий manager (dispatcher?). Я бы смотрел синонимы к этому слову. Возможно вы используете какую-то технику, чтобы достичь желаемого, в этом случае назовите библиотеку "Какая-то_техника Thread (Task? Logical Thread? Clone Job?) Dispatcher".
Слово менеджер для публичного апи мне не нравится, но лучшего я не придумал.
Вы почти всё угадали по описанию. Вот так выглядит синглтон в прикладном коде:
class Worker
{
readonly ManualResetEvent ProcessShutdown = GetProcessShutdown();
public void ThreadStart()
{
var manager = new DistributedSingletonManager(......);
while (!ProcessShutdown.WaitOne(1000) && manager.Am_I_TheOne(timeout: 1000))
{
PerformSomething();
}
}
}ThreadStart запускается на всех инстансах, а вот PerformSomething() в цикле вертится всегда только на одном. Если надо "запускаются" выборы нового инстанса в качестве того сингтона который будет один единственный делать работу PerformSomething()
Вот теперь название придумываю.
Внутри есть DistributedLock, это не я придумал.
Вот и взял DistributedSingleton исключительно по аналогии с DistributedLock
Re[2]: Опрос: Как назвать "Distributed Singleton"
Здравствуйте, Sinatr, Вы писали:
S>Здравствуйте, VladCore, Вы писали:
VC>>Фича простая – на всех клОнах (инстансах) гарантируется что заданный код, точнее, поток или несколько потоков, выполняются только в одном экземспляре. Клон – ключевое слово. Т.е. и код и конфиги на всех инстансах одинаковые. Но заданный логический поток всегда выполняется только на одном инстансе. Таких задач полно в любом сервисе — рассылка смс и писем по условиям в заданное время, репликация в/из внешних систем и пр.
S>Непонятно что вы делаете (я полный нуп в WCF), но: distributed (распределенное) это антоним тому что вы делаете (блокируете всех пока поток занят?),
Расскажу не жалко.
Внутрях есть две нотификации инстансов на redis-сервер о том что кандидаты не упали и не выключены и о том что singleton успешно без иксепшнов работу работает.
Еще есть выборы когда избранный ранее singleton упал. Выборы разумеется выполняются под DistributedLock-ом.
S>singleton — распространенное понятие, даже если вы используете паттерн синглетон, врядли использовать это слово хорошая идея.
Словарь с вами не согласен

S>Из того что я понял вы делаете некий manager (dispatcher?). Я бы смотрел синонимы к этому слову. Возможно вы используете какую-то технику, чтобы достичь желаемого, в этом случае назовите библиотеку "Какая-то_техника Thread (Task? Logical Thread? Clone Job?) Dispatcher".
Слово менеджер для публичного апи мне не нравится, но лучшего я не придумал.
Вы почти всё угадали по описанию. Вот так выглядит синглтон в прикладном коде:
ThreadStart запускается на всех инстансах, а вот PerformSomething() в цикле вертится всегда только на одном. Если надо "запускаются" выборы нового инстанса в качестве того, который будет один единственный делать работу PerformSomething()
Вот теперь название придумываю.
Внутри есть DistributedLock, это не я придумал. Вот и взял DistributedSingleton исключительно по аналогии с DistributedLock
S>Здравствуйте, VladCore, Вы писали:
VC>>Фича простая – на всех клОнах (инстансах) гарантируется что заданный код, точнее, поток или несколько потоков, выполняются только в одном экземспляре. Клон – ключевое слово. Т.е. и код и конфиги на всех инстансах одинаковые. Но заданный логический поток всегда выполняется только на одном инстансе. Таких задач полно в любом сервисе — рассылка смс и писем по условиям в заданное время, репликация в/из внешних систем и пр.
S>Непонятно что вы делаете (я полный нуп в WCF), но: distributed (распределенное) это антоним тому что вы делаете (блокируете всех пока поток занят?),
Расскажу не жалко.
Внутрях есть две нотификации инстансов на redis-сервер о том что кандидаты не упали и не выключены и о том что singleton успешно без иксепшнов работу работает.
Еще есть выборы когда избранный ранее singleton упал. Выборы разумеется выполняются под DistributedLock-ом.
S>singleton — распространенное понятие, даже если вы используете паттерн синглетон, врядли использовать это слово хорошая идея.
Словарь с вами не согласен

S>Из того что я понял вы делаете некий manager (dispatcher?). Я бы смотрел синонимы к этому слову. Возможно вы используете какую-то технику, чтобы достичь желаемого, в этом случае назовите библиотеку "Какая-то_техника Thread (Task? Logical Thread? Clone Job?) Dispatcher".
Слово менеджер для публичного апи мне не нравится, но лучшего я не придумал.
Вы почти всё угадали по описанию. Вот так выглядит синглтон в прикладном коде:
class Worker
{
readonly ManualResetEvent ProcessShutdown = GetProcessShutdown();
public void ThreadStart()
{
var manager = new DistributedSingletonManager(......);
while (!ProcessShutdown.WaitOne(1000) && manager.Am_I_TheOne(timeout: 1000))
{
PerformSomething();
}
}
}ThreadStart запускается на всех инстансах, а вот PerformSomething() в цикле вертится всегда только на одном. Если надо "запускаются" выборы нового инстанса в качестве того, который будет один единственный делать работу PerformSomething()
Вот теперь название придумываю.
Внутри есть DistributedLock, это не я придумал. Вот и взял DistributedSingleton исключительно по аналогии с DistributedLock