Какие будут мысли? Заранее пасиб!
Вопрос про сингалтон, шареный ресурс и много тредов
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Вопрос про сингалтон, шареный ресурс и много тредов
Есть сингалтон на C#. в нем есть шареный ресурс. Есть пара методов через которые этот шареный ресурс раздается на чтение (метод который может менять ресурс приватен). Высокая конкуренция на раздачу. Ресурс меняется скажем раз в полгода, а читателей которым нужен ресурс много в каждую секунду. Как правильно организовать изменение ресурса в синглетоне _без_даунтайма_ (пару читателей можно обломить или заблокировать пока ресурс апдейтится). чтобы изменить ресурс полностью надо около пары секунд.
Какие будут мысли? Заранее пасиб!
Какие будут мысли? Заранее пасиб!
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
Как ты знаешь я C# не копегаген, но в Java я бы сделал обычную ссылку ( не volatile) на ресурс и в момент апдейта, просто бы подменял ее, с последующим проходом через write barrier (лок, CAS etc) для проброса в основную память;папа Карло писал(а):Есть сингалтон на C#. в нем есть шареный ресурс. Есть пара методов через которые этот шареный ресурс раздается на чтение (метод который может менять ресурс приватен). Высокая конкуренция на раздачу. Ресурс меняется скажем раз в полгода, а читателей которым нужен ресурс много в каждую секунду. Как правильно организовать изменение ресурса в синглетоне _без_даунтайма_ (пару читателей можно обломить или заблокировать пока ресурс апдейтится). чтобы изменить ресурс полностью надо около пары секунд.
Какие будут мысли? Заранее пасиб!
Если читатели ждали пол-года, то, скорее всего смогут подождать до очередного сброса кеша, что бы увудеть обновление.
Работать будет ахренительно быстро, а если надо чтобы читатели увидели апдате сразу тогда делай ссылку volatile, тогда правда будешь терять пару сотен циклов на каждом чтении...
Кстати, а " много в каждую секунду" это какой порядок, я тут распинаюсь про случай ~10^5..6/с
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
подмена ссылки интересное дело. опфятьже объем данных всего пара сотен килобайт... читатели не видят этот шареный ресурс, они видят результаты на основе данных этого ресурса. т.е. они не видят что ресурс поменялся или нет. в этом весь фикус. я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
дынные для пользователя всегда выглядят одинакво, вне зависимости поменялись данные или нет. для энд юзера подмена невидима. порядок чтения примерно что ты привел.
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatileпапа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.Marmot писал(а):Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatileпапа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли?
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
не надо ничего локать, ты вообще знаешь, что такое volatileпапа Карло писал(а):прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.Marmot писал(а):Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatileпапа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли?
просто читаешь и пишешь...
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?Marmot писал(а):не надо ничего локать, ты вообще знаешь, что такое volatileпапа Карло писал(а):прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.Marmot писал(а):Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatileпапа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли??
просто читаешь и пишешь...
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.Marmot писал(а):IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
Нужный тебе совет я уже давно далпапа Карло писал(а):возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.Marmot писал(а):IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
т.е. сейчас ты просто перешел к простому брюзжанию.Marmot писал(а):Нужный тебе совет я уже давно далпапа Карло писал(а):возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.Marmot писал(а):IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?
- Marmot
- Графоман
- Сообщения: 39438
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос про сингалтон, шареный ресурс и много тредов
Да!папа Карло писал(а):т.е. сейчас ты просто перешел к простому брюзжанию.Marmot писал(а):Нужный тебе совет я уже давно далпапа Карло писал(а):возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.Marmot писал(а):IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер?
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопрос про сингалтон, шареный ресурс и много тредов
c'mon man!Marmot писал(а):Да!папа Карло писал(а):т.е. сейчас ты просто перешел к простому брюзжанию.