ingig.net

Ideas, problems and development of Fronturs websites

N-laga umhverfi

clock February 24, 2005 22:29 by author ingig
Vefirnir sem Frontur er að keyra eru núna orðnir nokkrir og þar sem við erum að fara á erlendan markað þá hef ég verið soldið að spá í að geta bætt við x mörgum vefþjónum án þess að lenda í vandræðum. Ég er ekki komin mjög langt í þessum pælingum en málið er að ég þarf að fara flytja lógík frá einum stað yfir á annan því mikið af vinnslunni fer fram í aspx skránum sjálfum.

Eins og staðan er í dag þá erum við að keyra 2 vélar og eitt diskabox.

Svona lítur þetta út hjá okkur í dag

Vefþjónn | |------- Diskabox | | Gagnagrunnur


Ég vil fara að flytja mig meira útí þessar pælingar hérna

Vefþjónn Vefþjónn Vefþjónn ............. (1 til 14 vélar) | | | | | | ====================================== Diskabox | | ============================ | | | | | | Vinnslu vél Vinnslu vél Vinnslu vél .......... (1 til X vélar) | | | | | | =========================== | Gagnagrunnur


Það er hægt að tengja 14 tölvur við diskaboxið, þannig að ég held að við séum í nokkuð góðum málum þar. Diskaboxið er stækkanlegt uppí 10TB eins og það er núna, en þetta eru bara venjulegir 3.5" diskar þannig að eftir því sem þeir stækka því stærra verður diskaboxið. Þannig er það fræðilega stækkanlegt uppí 20TB þar sem stærrstu diskarnir í dag eru 500GB.

Það sem ég er að spá í núna er hvaða staðal á ég að nota milli vefþjóns og vinnslu tölvunar. Í mínum huga eru tveir möguleikar, .Net Remote og SOAP. Ég hef verið að leita að greinum um þetta og fann nokkrar

Choosing the Right Remote Object Invocation Protocol in .NET
ASP.NET Web Services or .NET Remoting: How to Choose
Performance Comparison: .NET Remoting vs. ASP.NET Web Services

Það sem ég þarf að meta núna er hvort er auðveldara að útfæra, hvort er hraðara, hvort er auðveldara að vinna með og hvernig er stuðningurinn

SOAP er freistandi, það er auðvelt að búa það til, þetta er staðall sem verður til lengi þar sem allir eru fylgjandi honum og ég get gefið utanað komandi aðilum aðgang að kerfinu hjá mér.

.Net Remote er hinsvegar miklu miklu hraðara ef maður notar tcp og binary við samskiptin, þá hinsvegar mun engin utanað komandi geta haft almennilegt samband við þjónusturnar og hversu mikið meira mál er að útfæra það miðað við SOAP?

Bara svona litlar pælingar, SOAP virðist hafa yfirhöndina en ég á eftir að skoða þetta betur.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Þung vinnsla sem má bara keyra einu sinni

clock February 21, 2005 22:27 by author ingig
ASP.Net er þannig að þegar maður skellir inn nýjum .dll þá endurræsir IIS þráðinn sem er keyra og öll session, application og cache gögn tapast. Ég á það til að henda inn nýjum .dll á miðjum degi þegar slatti umferð er á vefnum. Þetta er slæmur ávani hjá mér en ég er bara ekki alltaf til í að bíða til kl. 4 á nóttinni til að gera þetta.

Málið er að mikið af gögnunum hjá mér er í Cache hlutanum til að auka hraðann á vefnum. Þegar ég hleð nýjum .dll þá þarf að hlaða upp aftur í cache hlutina og þegar hundruði manna eru að spyrja vefinn á sekúndu þá vil ég að aðeins einn aðili fái að fylla í Cache objectin. Tökum sem dæmi þýðingarkerfið. Ef 100 manns koma inná vefinn þegar hann er endurræstur og það tekur segjum 2 sekúndur að hlaða inn allri tungumála skránni þá vil ég ekki að 100 manns séu að gera það á sama tíma því það veldur biðröð og meiri töfum. Aðeins eitt request má fá að hlaða inn tungumála skránni og allir hinir þurfa að bíða á meðan.

Mér finnst engin ein góð lausn á þessu, allavega hef ég ekki fundið hana. Ég hef séð Mutex klasann vera notaðann og var sjálfur að nota hann en svo kom í ljós að hann er ekki að virka eins og ég vildi, væntanlega því ég var að nota hann rangt.

Lausnin er eitthvað á þessa leið

1. public class Foo { 2. private static Foo f = new Foo(); 3. 4. public static Foo Current { 5. if (Cache["foo_" + webId] == null) { 6. lock (f) { 7. if (Cache["foo_" + webId] == null) { 8. //load language file, takes about 2 seconds 9. Foo f2 = new Foo(); 10. f2.Load(webId); 11. } 12. } 13. } 14. 15. return (Foo) Cache["foo_" + webId]; 16. } 17. 18. private void Load(int webId) { 19. //load stuff, takes 2 seconds 20. } 21.}


Ef ég reyni að útskýra kóðann þá er það einhvernveginn svona.

Lína 2: Bý til static tilfelli af Foo klasanum sem verður til þegar fyrsta request gerist. Þar sem ég er að keyra marga vefi á sama AppDomain-inu(sama process) þá gengur ekki fyrir mig að láta þessa statíska breytu vera "Cache-ið" mitt, því gögnin í Foo eru mismunandi eftir vefjum.

Lína 5: Athuga fyrst hvort Cache hluturinn sé til, þetta er gert því í 99,99% er hann til og kostnaðurinn við að læsa(lock) er mikill. Því er best að gera það aldrei nema bara þegar verið er að endurræsa vefinn.

Lína 6:Notum lock til að læsa öllum þráðum þannig að aðeins enn þráður keyri næstu skipun, þarna er mikilvægt að læsa tilvikinu af f því það er static og það er aðeins til eitt tilvik af því í öllu AppDomain-inu. Hafi tilvikið ekki verið statískt þá mundi lock ekki virka því það mundi aðeins læsa því tilviki sem það er að keyra.

Lína 7:Athugum hvort Cache hluturinn er tómur, ef ské kynni að það væri búið að hlaða í hann á meðan læsingin átti sér stað, þannig þurfum við ekki að hlaða aftur í hann ef það hefur gerst.

Lína 9:Búum til nýtt tilvik af Foo þar sem við getum ekki notað f því það er statískt og er því alltaf eins milli vefja sem eru að nota sama AppDomain-ið. Því að Foo er mismunandi eftir vefjum en margir vefir geta verið að keyra á sama AppDomain.

Lína 10:Setjum gögnin í Foo hlutinn.

Lína 15:Skilum tilviki af Foo



Með því að gera þetta þá tryggi ég að aðeins einn aðili muni spyrja um gögnin og hlaða því í Cache hlutinn á meðan hinir bíða. Þetta gerir kerfið hraðara að endurræsa sig því töfin sem varð af því að allir voru að spyrja á sama tíma gat valdið því að vefinn fór á hausinn og það var ekkert grín að koma honum aftur upp.

Ég er ekkert voðalega sáttur við þess leið, en hún var sú eina sem ég sá að virkaði. Ef þú veist um einhverja aðra leið þá máttu endilega láta mig vita því það væri gott að hafa þetta snyrtilegra en ekki þessar leiðinlegu if setningar.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Umræðan á barnaland.is

clock February 11, 2005 22:26 by author ingig
Umræðan inná barnalandi uppfærist ansi oft, ég held að það sé met núna þegar Idol er, 14 umræður uppfærðar á sömu mínútunni, kl: 22:03. Magnað. Einnig eru helmingurinn af umræðunum um Idol, sýnir kannski hversu vinsæll þessu þáttur er.

Annars er ég búin bæta við bilana flokk hérna í bloggið, þannig að allar bilanir sem koma fram á vefjunum verða birtar hérna og ef við á, hver lausnin er á bilununununum :)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Javascript triggers

clock February 8, 2005 22:25 by author ingig
Það er alveg stór sniðug grein á A List Apart, þar sem þeir tala um hvernig hægt er að aðskilja javascript frá xhtml gögnunum. Hætta að vera onmouseover, onclick osfrv. inní html tögum. Einnig er þarna góð leið til að bæta við attribute-um(eigindum?) við html tag. Það sem ég sé að er sniðugast þarna er að bæta við required inní t.d. input og textarea.

Það að bæta við hinum ýmsum attribute-um inní html tag er hinsvegar háð javascript, þannig að vefskoðarar sem ekki hafa javascript geta komist framhjá þessu, reyndar eins og áður.

Einnig fara þeir í sérsniðið DTD, þannig að xhtml validate-ar rétt eftir að maður hefur bætt við <input required="true" /> í boxið

Endilega kíktu á greinina Javascript Triggers

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Google suggestion - Hvað!

clock February 2, 2005 22:22 by author ingig
Það eru sjálfsagt flestir búnir að skoða Google Suggestion, þar gefur google tillögu af því sem maður ætlar að leita að.

Þetta er frekar flottur fítus og það þýðir bara að maður verður að gera eins :) Ef þú ferð inná barnaland.is(eða önnur lönd) þá birtist svona mynd barnaland.is stingur uppá hliðina á leitarstikunni. Ef þú er skráður notandi þá geturðu farið í Stillingar og látið vefinn koma með tillögur að því sem þú ert að leita að og sýnir fjölda niðurstaðna. Vefurinn skiptir því síðan í flokka hvort þú villt leita í umræðunni, greinum, spurt og svarað eða auglýsingunum.

Þetta er gert með xml-rpc gaurnum sem ég lýsti um daginn. Sniðugur gaur það.

Annars er stefnan að opna babyverden.dk á morgun.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search

Twitter Updates

    Myndir

    Er.is

    Calendar

    <<  November 2008  >>
    SuMoTuWeThFrSa
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    Archive

    Tags

    Categories


    Blogroll

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2008

    Sign in