MQ ...

12 отговора 0 прегледа
#1

MQ ...

Постановката е
Много конекции по тисипи пращат данни ( малки < 2Kb ) и след това натикване в база.
В момента async sockets -> thread pool -> into the shrawds, men! (to the db)
Това май не скалира добре.
Искам
async sockets -> message queue -> handler processes msgs -> into the db
Чудя се между
- ActiveMQ
- MSMQ
- TibcoMQ ( казват, че е много яко, уж )

Препоръки ?

Мерси

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор
в отговор на ThunderFuck #2

Re: MQ ...

А защо не WebSphere MQ?
Като ше набутваш клиента (с Tibco), поне го набутай мъжката (с IBM)

Обаче не става ясно как MQ ти решава проблема ... Ако имаш периоди на голям брой заявки, после периоди на "затишие", ОК - с MQ може и да се получи подобрение.
Ако обаче имаш голям брой заявки непрекъснато ... с MQ то ще се забавиш още повече.

Почти съм сигурен, че проблема ти не е там където го търсиш ами в базата ти.
С к'ва база работи това (има само един верен отговор, започва с О и завършва на РАКЪЛ )?

Отговор
в отговор на BullDog #3

Re: MQ ...

mssql
Баш много заявки на спайкове е случаят.
Идеята е да набутам заявките в опашката и след това на порции да си ги обработя.
Крайната цел е ~3000 рекуеста на сокета пер секънд пер машина

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор
в отговор на ThunderFuck #4

Re: MQ ...

В момента async sockets -> thread pool -> into the shrawds, men! (to the db)
Това май не скалира добре.


Е, то за кажеш че това не е скалируемо би трябвало и да споменеш къде според теб е bottleneck-а? Без да се знае къде е проблема - не може да се даде конкретен отговор.
Щото ако bottleneck-а ти е в базата - забрави за всякакви други решения освен да я скалираш. Опашките в твоя случай решават проблема с thread pool-a до момента в който самата тя (опашката) не се превърне в bottleneck.

Отговор
в отговор на ThunderFuck #5

Re: MQ ...

Ако базата ти е на друга машина т.е. заявките не са ти CPU bound - тогава async заявките са ти достатъчни.
Не виждам защо трябва да мислиш за MQ?

Отговор
в отговор на ThunderFuck #6

Re: MQ ...

Бе щом им се свидят парите за DB, едва ли ще се прежалят за Tibco.
3000 рекуеста/сокет/секунда/машина нищо не ми говорят (зависи какво включва обработката на един рекуест). Можеш ли да изчислиш колко ти отнема средно обработката само на 1 рекуест ако нищо друго не се прави по тоз хардуер по време на теста. Ей така просто прасни 1 милион рекуеста (ама не един и същи рекуест 1 милион пъти!) секуентали и си сметни времето.

Все пак мисля, че целта ти е нереалистична. Пък и не се сещам какъв бизинес може да има такива изисквания. И къв е тоя бизнес, дето има хиляди реkуести в секунда, пък се търкаля на MS платформа. Гоглето да не са мигрирали на MS ? Или се мъчиш с някоя измекярска фирмичка, дето трябва да си логва трафика на клиентите ...

Както и да е - бучни там едно ActiveMQ (ако искаш на тебе да ти е лесно) или MSMQ - ако клиентите толкоз се кефят на МС и виж накъде отива работата ...

Но не е това идеята на месиджите ...

Отговор
в отговор на BullDog #7

Re: MQ ...

ДБ-то няма значение какво е, може да е и MongoDB или файл.
Това са структурирани еднообразни данни.

А, идеята, е че искам да мога да поема в една секудна ако дойдат 3000 съобщения - десериализацията на месиджа е ~0.18 ms.
Самата десериализация не ме ебе, защото в mq-то ръгам директно бинари масива получен от сокета.
Не връщам данни обратно за даден получен рекуест.
Па ще видим. Не е фирма, за мое ползване е.

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор
в отговор на BullDog #8

Re: MQ ...

quote
И къв е тоя бизнес, дето има хиляди реkуести в секунда, пък се търкаля на "MS платформа
/quote

има, има, това, че ти не знаеш къде какво има, не е мерило. ама требе да излезеш от дупката

Отговор
в отговор на ThunderFuck #9

Re: MQ ...

С какъв MS SQL Server си? Би могъл да ползваш Service Broker (има го в 2005 и 2008).

Отговор
в отговор на ThunderFuck #10

Re: MQ ...

Много мазнооооооооо стана
MSMQ/Async Sockets/ -> не дропи клиенти, прави ~1200 инсърта в секунда.

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор
в отговор на ThunderFuck #11

Re: MQ ...

Ми браво.
Ако ми кажеш, 4е си го тествал поне един 4ас и си направил над 4 милиона записа, доста ще ме у4удиш.
На какъв хардуер го търкаляш тава?
И с какво симулираш заявките ? (ако вси4ко е на 1 машина - клиент, сървър, MQ и база ... тестът не е много адекватен)

Отговор
в отговор на BullDog #12

Re: MQ ...

На една машина е сървъра, mq-то и базата.
Phenom X6 1090T/16 GB RAM

Клиентите са 3 дедикейтед сървъра в ЮСА.

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор
в отговор на LukavBlaginar #13

Re: MQ ...

SQL Server 2008 R2 Standard.
Да, знам го Service Broker-a, но като load-a стане голям изобщо няма да е на релационна база - CouchDB/MongoDB и пей сърце ;]

dd if=/dev/urandom of=/dev/kmem bs=1 count=1 seek=$RANDOM
Отговор