Thursday 23 November 2017

Laitos Kauppa Järjestelmä


LETS on elvyttämässä yhteisöjä kaikkialla Britanniassa. Kaikki kansalaiset, kaikenikäiset ihmiset, taidot ja kyvyt, paikalliset klubit ja yhdistykset vapaaehtoisryhmät, hyväntekeväisyysjärjestöt, yhteisöaloitteet osuuskunnat, pienyritykset ja paikalliset palvelut ovat kaikille avoimia. ottaa yhteyksiä uusiin resursseihin ja löytää todellinen yhteisöllisyys. LETS tarjoavat tasavertaiset mahdollisuudet kaikille - työttömiksi tai työttömiksi, taloudellisesti turvallisiksi tai pienituloisiksi, mustavalkoiksi, kykeneviksi tai vammaisiksi. LETS käyttää yhteisön hyvitysjärjestelmää, jotta ei ole välitöntä vaihtoa. Ihmiset ansaitsevat LETS-hyvitykset tarjoamalla palvelua ja voivat sitten käyttää hyvityksiä muiden tarjoamiin järjestelmiin esimerkiksi lastenhoitoon, kuljetuksiin, ruokaan, kodin korjauksiin tai työkalujen ja laitteiden vuokraukseen. Tutkimus 90-luvun puolivälissä osoitti, että noin 40 000 ihmistä oli mukana noin 450 LETS-järjestelmässä, joista suurin osa perustettiin demokraattisen ja yhteis - LETSLINK UK: n kehittämä operatiivinen LETS-malli, joka aloitti toimintansa vuonna 1991 Nykyinen yli 300-niminen yhteystietoluettelo osoittaa, että niiden määrä on vähentynyt - jos sanomme, että jäsenyyden keskiarvo on 100 per järjestelmä, Yhdistyneessä kuningaskunnassa on noin 30 000 tai vähemmän jäseniä . Tämä on kuitenkin johtanut siihen liittyvien aloitteiden, kuten Timebanks, Freecycle, Commercial Barter, Reilun kaupan kampanjoiden ja kaikenlaisten yhteisöverkkojen lisääntymiseen, jotka osoittavat, että ihmiset ovat edelleen kiinnostuneita siitä, että asiat tapahtuvat yhteisössä. käynnissä oleva tutkimushanke, joka käynnistettiin syyskuussa 2003, pyrkii selvittämään LETS: n nykytilaa Yhdistyneessä kuningaskunnassa ja LETS-järjestäjien tarpeita. Nyt etsimme suurta rahoitusta organisaation elvyttämiseksi ja tukemiseksi, jotta voimme tarjota parempia resursseja jäsenet, ja raportoivat edistymisestä tällä sivulla - katsokaa tätä tilaa. Viestityyppien integraatiomallit käytännössä tapaustutkimuksessa Bond Trading System. Jonathan Simon. On helppoa etäisyydellä suuresta kokoelmasta kuvioita tai kuviointikieltä. Kuvioita on ajatuksen abstraktio uudelleenkäytettävissä olevassa muodossa. Usein mallien hyvin yleinen luonne tekee niistä niin hyödyllisiä, tekee niistä myös vaikeita ymmärtää. Joskus paras tapa auttaa ymmärtämään kuvioita on todellinen maailma esimerkki Ei kekseliäinen skenaario mitä voisi tapahtua, mutta mitä todella tapahtuu ja mitä tapahtuu. Tässä luvussa käytetään malleja ongelmien ratkaisemiseksi etsintäprosessin avulla. Järjestelmä, josta keskustelemme on joukkovelkakirjakauppa järjestelmä, jonka kanssa työskennellyin kahden vuoden ajan alusta suunnittelusta tuotannon kautta Tutkitaan skenaarioita ja ongelmia, joita on havaittu ja miten niitä ratkaistaan ​​kuvioihin Tämä tarkoittaa päätöksentekoprosessia mallin valitsemisesta sekä yhdistämisestä ja mukauttamisesta järjestelmän tarpeet Ja kaikki tämä tehdään ottaen huomioon todelliset järjestelmät, kuten liiketoiminnan tarpeet, asiakkaiden päätökset, ar arkkitehtoniset ja tekniset vaatimukset sekä perinteinen järjestelmäintegraatio Tämän lähestymistavan tarkoitus on saada selkeämpi käsitys kuvioista itse käytännön sovelluksen avulla. Rakennetaan järjestelmää. Suuri Wall Streetin investointipankki pyrkii luomaan joukkovelkakirjalainan järjestelmän pyrkimykset virtaviivaistaa joukkovelkakirjamyymälänsä työnkulkua Tällä hetkellä joukkovelkakirjojen kauppiaiden on lähetettävä lukuisia joukkovelkakirjalainoja useille eri kauppapaikoille, joista jokaisella on oma käyttöliittymä Järjestelmän tavoitteena on minimoida hinnoittelun minuuttitaso niiden joukkovelkakirjalainat yhdistettynä kehittyneisiin analyyttisiin toimintoihin, jotka ovat ominaisia ​​joukkovelkakirjamarkkinoille yhdellä kapseloidulla käyttöliittymällä Tämä tarkoittaa integraatiota ja kommunikointia useiden eri komponenttien kanssa eri viestintäprotokollissa Järjestelmän korkea taso näyttää tältä. Ensimmäinen markkinatieto tulee järjestelmään Markkinat tiedot ovat tietoja, jotka koskevat joukkovelkakirjalainan hintaa ja muita ominaisuuksia, jotka edustavat ihmisiä g ostaa ja myydä joukkovelkakirjalainaa vapailla markkinoilla Markkinatiedot lähetetään välittömästi analyysimekaan, joka muuttaa tietoja Analytics viittaa matemaattisiin funktioihin taloudellisiin sovelluksiin, jotka muuttavat joukkolainojen hintoja ja muita ominaisuuksia Nämä ovat geneerisiä funktioita, jotka käyttävät syöttöä muuttujat räätälöidä toiminnon tulokset tiettyyn sidokseen. Jokaisen elinkeinonharjoittajan työpöydällä suoritettava asiakassovellus määrittää analyysimekron kaupankäynnin perustaksi, joka ohjaa analytiikan yksityiskohtia jokaiselle sidokselle, jonka elinkeinonharjoittaja on hinnoittelua. Kun analyysit ovat jota käytetään markkinatietoihin, muutetut tiedot lähetetään eri kauppapaikoille, joissa muiden yritysten toimijat voivat ostaa tai myydä joukkovelkakirjalainoja. Arkkitehtuuri Patternsilla. Tällä järjestelmäkäsikirjoituksella voimme lähestyä joitain arkkitehtonisia ongelmia me kohtaamme suunnitteluprosessin aikana. Katsotaanpa, mitä tiedämme tähän mennessä. Kaupat tarvitsevat erittäin reagoivan sovelluksen sekä Windows NT: n että d Solaris-työasemat Siksi päätimme toteuttaa asiakassovelluksen Java-paksuiksi asiakkaiksi sen foorumin riippumattomuuden ja kyvyn nopean reagoinnin käyttäjän syöttöön ja markkinatietoihin Palvelinpuolella perimämme vanhoja C-komponentteja, joita järjestelmä käyttää Markkinatietokomponentit kommunikoivat TIBCO Information Bus TIB - viestinvälitysinfrastruktuurin kanssa. Seuraamme seuraavia komponentteja. Markets Data Price Feed Server Julkaisee tulevat markkinatiedot TIB. Analytics Engineille Analysoi tulevat markkinatiedot ja lähettää muutetut markkinatiedot TIB. Contribution Server Suorittaa kaiken viestinnän kauppapaikoilla Kaupankäyntipaikat ovat kolmannen osapuolen komponentteja, joita pankki ei ohjaa. Logacy Market Data Subsystem. Legacy Contribution Subsystem. Meidän on päätettävä, miten erilliset osajärjestelmät Java-paksu asiakas, markkinatiedot ja panos ovat kommunikoida Voimme olla paksut asiakkaat kommunikoimaan suoraan leen kanssa mutta se vaatisi liikaa liiketoimintalogiikkaa asiakkaalle. Sen sijaan rakentaisimme Java-yhdyskäytävien parin kommunikoimaan vanhojen palvelimien kanssa. Market Information - tietokannan hinnoittelu Gateway lähettää hintoja kaupankäynnin kohteisiin Tämä saa mukavan kapseloinnin Näihin alueisiin liittyvä liiketoimintalogiikka Seuraavassa esitetään järjestelmän nykyiset komponentit Yhteysmerkityt yhteydet osoittavat, että olemme vielä epävarmoja siitä, miten osa komponenteista kommunikoi. Järjestelmä ja sen komponentit. Ensimmäinen viestintäkysymys on, kuinka integroitu Java-paksu asiakas ja kaksi Java-palvelinkomponenttia tiedon vaihtamiseksi. Tarkastellaanko tässä kirjassa ehdotettuja neljää integraatiotyyliä. Tiedostonsiirto Jaettu tietokanta Kauko-ohjaus Menettelyn kutsuminen ja viestintä Voit sulkea yhteisen tietokannan heti, koska halusimme luoda kerroksen abstraktio asiakkaan ja tietokannan välillä ja don t halua saada tietokannan käyttökoodia asiakastiedostoon Transfe r voidaan samalla tavoin sulkea pois, koska vähäinen latenssi vaaditaan sen varmistamiseksi, että nykyiset hinnat lähetetään kaupankäyntipaikoille. Tämä antaa meille mahdollisuuden valita etätoimenpideluettelon tai viestin välillä. Java-alustalla on sisäänrakennettu tuki sekä kauko-ohjauksen kutsumiselle että viestimelle RPC-tyyppinen integraatio voidaan saavuttaa käyttämällä Remote Method Invocation RMI-, CORBA - tai Enterprise Java Beans EJB - ohjelmaa. Java Messaging Service JMS on yhteinen API messaging-tyyppiselle integraatiolle. Joten molemmat integraatiotyypit ovat helposti toteutettavissa Java. So, joka toimii paremmin tässä projektissa Remote Procedure Invocation tai Messaging Siellä on vain yksi hinnoittelu Gatewayn ja yhden osallistujayhdyskäytävän instanssi järjestelmässä, mutta yleensä useat paksut asiakkaat yhdistävät samanaikaisesti nämä palvelut yhdelle jokaiselle sidosyrittäjälle, joka sattuu kirjautumaan sisään tiettyyn aikaan Lisäksi pankki haluaisi tämän olevan yleinen hinnoittelujärjestelmä, jota voidaan hyödyntää muissa sovelluksissa tuntemattoman lukumäärän Think Asiakkaita lukuun ottamatta voi olla tuntematon määrä muita sovelluksia, jotka käyttävät Gatewayn hinnoittelustietoja. Paksu asiakas tai muu sovellus, joka käyttää hinnoittelutietoja, voi melko helposti käyttää RPC: ää soittaakseen rautateihin saadakseen hinnoittelua koskevat tiedot ja vedota käsittelyyn. Hinnoittelua koskevat tiedot julkaistaan ​​jatkuvasti, ja tietyt asiakkaat kiinnostavat vain tiettyjä tietoja, joten asiaankuuluvien tietojen saaminen oikeille asiakkaille ajoissa voi olla vaikeaa. Asiakkaat voisivat kysellä Gatewaysia, mutta luo paljon yläpuolella Gatewaysilta olisi parempi saada tiedot asiakkaiden saataville heti, kun se on käytettävissä Tämä edellyttää kuitenkin, että jokainen Gateway pitää kirjaa siitä, mitkä asiakkaat ovat aktiivisia ja haluavat mitä erityisiä tietoja silloin, kun uusi tieto tulee saataville, joka tapahtuu useita kertoja sekunnissa, Gatewayn on tehtävä RPC jokaiselle kiinnostuneelle asiakkaalle siirtää tiedot clie nt Ihannetapauksessa kaikkien asiakkaiden on ilmoitettava samanaikaisesti, joten jokainen RPC on tehtävä omalla rinnakkaisella langallaan Tämä voi toimia, mutta on hyvin monimutkainen erittäin nopeasti. Viestintä yksinkertaistaa suuresti tätä ongelmaa. Viestien avulla voimme määritellä erilliset kanavat eri tyyppeille hinnoittelutietoista. Kun yhdyskäytävä saa uuden datan, se lisää sanoman, joka sisältää kyseiset tiedot kyseisen datatyypin Publish-Subscriber-kanavaan. Samalla tietylle tietotyypille kiinnostuneet asiakkaat kuuntelevat kanavalla tämäntyyppinen Tällä tavalla Gateways voi helposti lähettää uusia tietoja kenelle tahansa on kiinnostunut tarvitsematta tietää, kuinka monta kuuntelusovellusta on olemassa tai mitä he ovat. Asiakkaat tarvitsevat silti kyseenalaistaa käyttäytymisen Gatewaysissa on aina vain kaksi porttia ja asiakas todennäköisesti estää samalla, kun menetelmää kutsutaan synkronisesti, nämä client-to-gateway-kutsut voidaan melko helposti toteuttaa RPC: llä. viestit viestivät jo Gateway-to-client-viestinnän välityksellä, viestit ovat luultavasti yhtä hyvä tapa toteuttaa client-to-gateway-viestintä. Siksi kaikki yhdyskäytävien ja asiakkaiden välinen viestintä toteutetaan viestien kautta. komponentit on kirjoitettu Java-sovellukselle, JMS tarjoaa helppokäyttöisen viestintäjärjestelmän. Tämä luo tehokkaasti viestibussin tai arkkitehtuurin, joka mahdollistaa tulevien järjestelmien integroitumisen nykyiseen järjestelmään ja joilla on vain vähän tai ei lainkaan muutoksia viestintäverkkoon. Tämä Java-komponentit Viestintä JMS. JMS: n kanssa on yksinkertaisesti erittely ja meidän on päätettävä JMS-yhteensopivasta viestintäjärjestelmästä Olemme päättäneet käyttää IBM MQSeries JMS - ohjelmaa, koska pankki on IBM-myymälä, jossa käytetään WebSphere-sovelluspalvelimia ja monia muita IBM-tuotteita. Tämän seurauksena käytämme MQSeriesia, koska olemme jo ave tukiaseman infrastruktuuri ja tuotteen sivustolupa. Seuraava kysymys on, miten MQSeries-viestijärjestelmä liitetään itsenäiseen C Contribution - palvelimeen ja TIBCO-pohjaisiin Market Data - ja Analytics Engine - palvelimiin. Tarvitsemme tapaa MQSeries-kuluttajille päästä käsiksi TIB-viesteihin Mutta miten Voisimme ehkä käyttää Message Translator - kuvaketta kääntää TIB-viestejä MQSeries-sanomiksi Vaikka C-asiakas MQSeriesille toimii viestikääntäjänä, se uhraisi JMS-palvelimen riippumattomuuden Ja vaikka TIBCO: lla on Java API, asiakasarkkitehti ja johtaja ovat hylänneet sen. Tämän seurauksena Message Translatorin lähestymistapa on hylättävä. Sillan TIB-palvelimesta MQSeries-palvelimeen edellyttää C: n ja Java: n välistä viestintää. Voisimme käyttää CORBA: ta, mutta entä, mitä viestiin on lähempänä. katso Message Translator - kuvio osoittaa, että se liittyy kanavasovittimeen viestintäprotokollien käytössä. Kanavan sydän Sovitin on muodostaa yhteys muihin kuin messaging-järjestelmiin messaging-järjestelmiin. Kahden viestintäjärjestelmän yhdistävät kanavasovittimet ovat Messaging Bridge. Messaging Bridge - sovelluksen tarkoituksena on siirtää viestejä yhdestä viestintäjärjestelmästä toiseen. Tämä on juuri se, mitä me teemme sisäisen Java-C-viestinnän lisätty monimutkaisuus Voimme toteuttaa ristisanavien viestintä-silta käyttämällä Channel Adapters ja CORBA yhdistelmää. Rakennamme kaksi kevyttä kanavadapteri-palvelinta, yksi C: ssä kommunikaation kanssa TIB: n kanssa ja yksi Java kommunikointi JMS: n kanssa Nämä kaksi kanava-sovitinta, jotka ovat viestin päätepisteitä s itse, kommunikoivat toistensa kanssa CORBA: n kautta Kuten valitsimme MQSeriesille, käytämme CORBA: n sijaan JNI, koska se on yrityksen standardi. Messaging silta toteuttaa tehokkaasti simuloitua viestiä käännöstä näennäisesti yhteensopimattomien viestintäjärjestelmien ja eri kielten välillä. Lähettäjä käyttäen Channel Adapte Seuraavassa kaaviossa näkyy nykyinen järjestelmäsuunnittelu, jossa on yhdyskäytävät ja muut komponentit. Tämä on hyvä esimerkki kuviointisovelluksesta. Yhdistimme kaksi kanavasovittimen s ei-messuprotokollaa Message Translator - kuvion toteuttamiseksi tehokkaasti käyttämällä yhtä mallia toisen Kuvio Muuttuikin myös kanavadapterin s konteksti kahden viestintäjärjestelmän linkittämiseksi ei-messaging-ristikieliprotokollaan sen sijaan, että yhdistettäisiin viestintäjärjestelmä ei-viestintäjärjestelmään. Nykyinen järjestelmä kanavapäätteillä. Rakenne-kanavat. Avain kuvien käsittelyyn ei ole vain tietää, milloin käyttää kuvioita, vaan myös sitä, miten sitä voidaan käyttää tehokkaimmin. Jokaisen mallin toteutuksessa on otettava huomioon teknologiayhteisön erityispiirteet ja muut suunnitteluperusteet. Tässä osassa sovelletaan samaa löytöprosessia Publish-Subscription-kanavan tehokkain käyttö t-viestimessä olevan markkinatietopalvelimen yhteydessä hän analyyttinen moottori. Real-time-markkinatiedot ovat peräisin markkinatietoradasta, C-palvelin, joka lähettää TIB: n markkinatietoja. Markkinatiedon rehu käyttää erillistä Publish-Subscription-kanavaa jokaiselle sidokselle, joka julkaisee hintoja. Tämä voi tuntua hieman äärimmäiseltä, koska jokainen uusi sidos tarvitsee oman uuden kanavansa. Mutta tämä ei ole niin vakava, koska sinun ei tarvitse luoda kanavia TIBCO: ssä. Kanavien kohdalla on hierarkkinen joukko aiheen nimiä, joita kutsutaan aiheiksi. TIBCO-palvelin suodattaa sitten yhden viestivirran aiheittain , lähettämällä kukin ainutlaatuinen aihe yhdelle virtuaaliselle kanavalle. Tämän tuloksena on erittäin kevyt viestikanava. Voimme luoda järjestelmää, joka julkaisee muutaman kanavan ja tilaajat voivat kuunnella vain hinnoista, joista he ovat kiinnostuneita. Tämä vaatisi tilaajia käyttämään Viestisuodatinta tai valikoivaa kuluttajaa suodattamaan koko tietovirta mielenkiintoisten joukkolainojen hinnoista ja päättäisi, pitäisikö kukin viesti käsitellä, kun se vastaanotetaan. e-markkinatiedot julkaistaan ​​joukkovelkakirjojen omilla kanavilla, tilaajat voivat rekisteröidä päivityksiä joukkovelkakirjojen osalta. Tämä mahdollistaa tehokkaasti tilaajien suodatuksen valitsemalla selkeästi kanavia ja vastaanottaen vain kiinnostavia päivityksiä sen sijaan, että päätettäisiin viestin vastaanottamisen jälkeen. Huomaa, että useiden kanavien käyttäminen suodatuksen välttämiseksi on viestinvälityskanavien epäsäännöllinen käyttö TIBCO-tekniikan yhteydessä päätämme todella päättää, toteutetaanko tai omistamme suodattimia tai hyödynnettävä TIBCO: n sisäänrakennettua kanavointisuodatusta sen sijasta, käytämmekö niin paljon kanavia. Seuraava komponentti, jota meidän on suunniteltava, on analyyttinen moottori, toinen C-TIB-palvelin, joka muokkaa markkinatietoja ja välittää sen uudelleen TIB: lle. Vaikka se ei kuulu Java JMS-kehityksen piiriin, työskentelemme läheisessä yhteistyössä C tiimi suunnitella sitä, koska olemme analyyttisen moottorin ensisijainen asiakas. Ongelman ratkaiseminen on löytää kanavarakenne, joka tehokkaimmin uudelleenlaskentaa koska juuri sillä on oma viestikansio, joka peritään markkinointitietohinnasta perittyä joukkovelkakirjalainaa, olisi loogista muokata markkinatietoja ja uudelleenlähettää muunnetut markkinatiedot joukkovelkakirjojen omistuksessa olevasta viestikanavasta. Mutta tämä ei johda koska analyysit, jotka muokkaavat joukkovelkakirjalainojen hintoja, ovat kauppiaan erityisiä Jos lähetämme muokatut tiedot joukkovelkakirjalähetyskanavasta, tuhoamme tietojen eheyden korvaamalla yleiset markkinatiedot kauppiaan erityisillä tiedoilla Toisaalta meillä voisi olla eri viestityyppi kauppiaan erityiset markkinatiedot, jotka julkaisemme samalla kanavalla, jolloin tilaajat voivat päättää, mistä viestistä he ovat kiinnostuneita välttämään tietojen eheyden hävittämistä. Mutta silloin asiakkaiden on toteutettava omat suodattimet erottaakseen viestit muille kauppiaille. tilaajien vastaanottamien viestien lisääntyminen, mikä asettaa heille tarpeettoman taakan. On olemassa kaksi vaihtoehtoa. Yksi kanava per kauppiaalla Jokaisella kauppiaalla on nimetty kanava muokatuille markkinatietoille Tällä tavoin alkuperäiset markkinatiedot pysyvät ennallaan ja jokainen elinkeinoharjoaja voi kuunnella sen erityisiä kauppiaita Message Channelin muokatuille hinnoittelupäivityksille. Yksi kanava per kauppiaan per Bond Luo yksi viestikanava per-kauppiaan joukkovelkakirjalainan osalta ainoastaan ​​kyseisen joukkovelkakirjan muunnetuista markkinatiedoista. Esimerkiksi joukkovelkakirjalainan ABC markkinoiden tiedot julkaistaan ​​kanavalla Bond ABC, kun taas kauppiaan A muutetut markkinatiedot julkaistaan ​​Message Channel Traderilla A, Bond ABC , muunnellut markkinatiedot kauppiaalle B Trader B: ssä, Bond ABC: ssä ja niin edelleen. Yksittäinen kanava elinkeinonharjoittajaa kohden. Yksi kanava per kauppiaan joukkovelkakirjasta. Jokaisesta lähestymistavasta on etuja ja haittoja. Esimerkiksi joukkovelkakirjalainamenettelyssä käytetään paljon Lisää Viestikanava Pahimmassa tapauksessa sanomakanavan määrä on joukkovelkakirjalainojen kokonaismäärä, kerrottuna kauppiaiden lukumäärän kanssa. Voimme asettaa ylärajoja kanavien lukumäärään, joka syntyy sen jälkeen, kun me tiedämme, että on vain noin 20 kauppiaita ja he eivät koskaan maksa enemmän kuin pari sataa joukkovelkakirjalainaa. Tämä asettaa ylärajan 10 000: n alin alle, joka ei ole niin outoja verrattuna lähes 100 000 Message Channel: koska käytämme TIB: tä ja Message Channel ovat melko edullisia, Message Channel - kanavien määrä ei ole vakava ongelma. Toisaalta Message Channel - kanavien määrä voi olla ongelma hallintotavasta. Joka kerta kun sidos on lisätty kanava jokaiselle elinkeinonharjoittajalle on säilytettävä Tämä voi olla vakava hyvin dynaamisessa järjestelmässä Järjestelmämme on kuitenkin oleellisesti staattinen Se sisältää myös infrastruktuurin viestikanavien automaattisen hallinnoimiseksi Tämä yhdistettynä vanhan komponentin perinnölliseen arkkitehtuuriin samankaltaisella lähestymistavalla minimoi haittapuolet Tämä ei tarkoita, että meidän olisi tarpeettoman liiallinen määrä Message Channel - kanavia vaan voimme toteuttaa arkkitehtonisen lähestymistavan, suuri määrä Message Channels s, kun on syy. Ja on syy tässä tapauksessa, joka tulee alas logiikan sijainti Jos toteutamme elinkeinonharjoittajan lähestymistavan, Analytics Engine tarvitsee logiikan ryhmitellä input ja output kanavia Tämä johtuu Analytics-moottorin syöttökanavat ovat per joukkovelkakirjalainoja ja tuotosviestikanavat s kohden per elinkeinonharjoittaja, mikä edellyttää, että Analytics-moottori reitittää kaikki analyyttiset syötteet useista joukkovelkakirjoista tietylle elinkeinonharjoittajalle kauppiaan erityiselle tuotokselle. Message Channel Tämä tehokkaasti muuttaa analyysimekronin osaksi Content-pohjainen reititin sovelluksen mukautetun reitityslogiikan toteuttamiseksi. Message Bus - rakenteen jälkeen Analytics Engine on yleinen palvelin, jota useat muut järjestelmät voisivat käyttää. Joten emme halua pilata sitä järjestelmäkohtaisella toiminnallisuudella Toisaalta per-bond-lähestymistapa toimii, koska ajatus siitä, että kauppias, joka omistaa sidontatuotteiden analyysituotoksen, on yritys hyväksytty käytäntö. pproach pitää viestikanavien erotus markkinointitietokannasta ennallaan lisäämällä samalla useampia Message Channel-kanavia. Ennen kuin tavoitamme asiakkaan, haluamme, että sisältökohtainen reititin yhdistää nämä useat kanavat hallittavaksi kanavamääriksi. Haluamme, että asiakas sovellus käynnissä elinkeinonharjoittajan työpöydällä kuunnella tuhansia tai kymmeniä tuhansia Message Channel - kanavia Nyt kysymys tulee paikkaan, jossa sisältöperusteinen reititin Voisimme yksinkertaisesti lähettää C TIB - kanavadapterin eteenpäin kaikki viestit Hinnoittelu-yhdyskäytävään yhdellä Message Channel - ohjelmalla Tämä on huono kahdesta syystä, minkä vuoksi meidän pitäisi jakaa liiketoimintalogiikka C: n ja Java: n välillä, ja menettäisimme erillisen TCH: n viestikanavan hyödyt, jotta voimme välttää suodattamisen myöhemmin tietovirrassa Kun tarkastelemme Java-komponentteja, voimme joko sijoittaa sen Hinnoittelu Gatewayiin tai luoda välittäjäkomponentin Hinnoittelu Gatewayn ja asiakkaan välillä. Teoriassa, jos jatkamme sidontaa - lähtöinen viestikanavan erottaminen asiakkaalle aina hinnoitteluportaali uudelleenlähettää hinnoittelustiedot samalla kanavarakenteella kuin hinnoitteluyhdyskäytävä ja Analytics-moottori Tämä tarkoittaa, että JMS: ssä kaikki joukkovelkakirjat omistavat TIB-kanavat on kopioitu, vaikka luoda välittäjäkomponentti Hinnoittelu-yhdyskäytävän ja asiakkaan välillä, Hinnoittelu Gateway joutuu edelleen kopioimaan kaikki kanavat JMS: ssä. Toisaalta logiikan toteuttaminen suoraan Hinnoittelu-yhdyskäytävässä mahdollistaa sen, että vältetään päällekkäisten kanavien suuri määrä JMS: ssä jonka avulla voimme luoda paljon pienemmän määrän kanavia järjestyksessä yhtä kauppiaanaa kohti. Hinnoittelu Gateway rekisteröi itsensä C TIB - kanavadapterin kautta kuluttajana jokaisen järjestelmän jokaisen kauppiaan joukkovelkakirjasta. Sitten Hinnoittelu Gateway välittää jokaiselle yksittäiselle asiakkaalle vain kyseiseen kauppaan liittyvät viestit Tällä tavoin käytämme vain pienen määrän Message Channel - kanavia JMS-päästä maksimoimalla ben TIB: n erottamisen tehokkuus. Täydellinen markkinatietovirta asiakkaalle. Viestikanavan asettelun keskustelu on hyvä esimerkki siitä, miten integroitavat mallit ovat tärkeitä. Tavoite tässä oli selvittää, miten viestikanaalin tehokas käyttö sanotaan. käytä mallia ei tarpeeksi Sinun on selvitettävä, miten se voidaan parhaiten toteuttaa ja sisällyttää järjestelmään ongelmien ratkaisemiseksi Lisäksi tämä esimerkki osoittaa liikevoimat toiminnassa Jos voisimme toteuttaa liiketoimintalogiikan jossakin komponenteissamme, voisimme ovat menneet kauppaketjun lähestymistapaan ja toteuttaneet kokonaisvaltaisemman lähestymistavan, jossa on paljon vähemmän kanavia. Viestikanavan valitseminen. Nyt tiedämme Java JMS - komponenttien ja C TIBCO - komponenttien välisen viestinnän mekaniikan, ja olemme nähneet jonkin sanoman Kanavan jäsentäminen, meidän on päätettävä, minkä tyyppistä JMS-sanoma-kanavaa Java-komponenttien pitäisi käyttää kommunikoida Ennen kuin voimme valita eri viestikanavat av JMS: llä on mahdollista tarkastella järjestelmän korkean tason viestivirtaa. Meillä on kaksi yhdyskäytäviä. Hinnoittelu ja osallistuminen asiakkaan kanssa kommunikoimalla. Markkina-tietovirrat asiakkaalle Hinnoittelu-yhdyskäytävästä, joka lähettää sen Osuusmittariin. Asiakasohjelma lähettää viestin Hinnoittelu Gateway muuttaa kunkin linkin analytiikkaa. Contribution Gateway lähettää myös viestejä Client-sovellukseen, joka välittää hintojen päivitysten tilan eri kauppapaikoille. Järjestelmäviestivirtaus. JMS-määritys kuvaa kaksi Message Channel - tyyppiä, Point-to-Point-kanavan JMS-jono ja julkaise-tila-kanava JMS-aihe Palauta, että julkaisun tilauksen käyttäminen on mahdollistaa kaikkien kiinnostuneiden kuluttajien vastaanottaminen sanomaan, kun tapauskohtaisesti käytetään varmistamaan, että vain yksi kelvollinen kuluttaja saa tietyn viestin. Jotkin järjestelmät yksinkertaisesti lähettävät viestejä kaikkiin asiakassovelluksiin jättäen jokaisen yksittäisen sovelluksen päättää itse, käsitelläänkö tietyn viestin? Tämä ei toimi sovelluksessamme, koska jokaiselle asiakassovellukselle lähetetään suuri määrä markkina-tietoviestejä. Jos lähetämme markkina-tietopäivityksiä kiinnostuneelle elinkeinonharjoittajalle, jätämme tarpeettomasti tuhlaamatta asiakkaan prosessorin syklit päättävätkö markkinoiden datan päivittämisen vai eivät. Point-to-Point - kanavat alkavat kuulostaa hyvältä, koska asiakkaat lähettävät viestejä ainutlaatuisiin palvelimiin ja viisumiin. Mutta liiketoiminnan vaatimus oli, että kauppiaat saattavat kirjautua samaan aikaan, jos useampi kone on samassa yhteydessä. Jos meillä on kauppias kirjautuneena samanaikaisesti kahteen työpisteeseen ja lähetetään pisteestä pisteeseen päivitetty päivitys, vain toinen kahdesta asiakassovelluksesta saa viestin. Tämä johtuu siitä, että vain yksi kuluttaja Point-to-Point-kanava voi vastaanottaa tietyn viestin Huomaa, että vain ensimmäinen jokaisesta kaupankäynnin asiakkaan sovellusryhmästä vastaanottaa sanoman. Point-to-Point Messaging for Pri ce-päivitykset. Voimme ratkaista tämän käyttämällä Vastaanottajaluettelomallia, joka julkaisee viestejä aiottujen vastaanottajien luetteloon, mikä takaa, että vain vastaanottajoluettelossa olevat asiakkaat saavat viestejä. Tämän mallin avulla järjestelmä voi luoda vastaanottajaluettelot kaikkiin sovelluksiin liittyviin sovelluksiin jokaiselle elinkeinonharjoittajalle Tietyn elinkeinonharjoittajan viestin lähettäminen lähettäisi viestin jokaiselle vastaanottajaluettelolle. Tämä takaa, että kaikki tietyn elinkeinonharjoittajan liittyvät asiakassovellukset käsittelevät viestin. Tämän lähestymistavan haittapuoli on se, että se vaatii melkoisen bittinen toteutuslogiikka vastaanottajien hallinnoimiseksi ja viestien lähettämiseksi. Hinnankorotusten alustava luettelo. Jos vaikka pisteestä pisteeseen voidaan tehdä työtä, katsotaanpa, onko olemassa parempi tapa julkaista-tilauskanavan käyttäminen, järjestelmä voisi lähetä viestejä kauppiaiden erityisillä kanavilla pikemminkin kuin asiakassovelluskohtaisiin kanaviin Näin kaikki asiakkaan sovellukset käsittelevät viestejä että yksittäinen elinkeinonharjoittaja vastaanottaa ja käsittelee viestin. Julkaise-Tilaa viestit hinnankorotuksille. Julkaisu-tilauskanavan s käyttötapahtuma on, että ainutlaatuinen viestien käsittely ei ole taattu palvelinkomponenteilla. Palvelimen monta kertaa komponentti, joka instantioituu ja jokainen prosessi käsittelee samaa viestiä mahdollisesti lähettämällä virheellisiä hintoja. Järjestelmäviestivirran palauttaminen vain yhteen tietoliikennesuuntaan on tyydyttävä, kun jokainen Message Channel - palvelimen välinen viestintä julkaisu-tilauksella on tyydyttävä, to-server-kommunikaatio ei ole ja asiakas-palvelin kommunikaatio pisteestä pisteeseen on tyydyttävä, kun taas palvelin-asiakas ei ole. Koska ei ole tarvetta käyttää samaa Message-kanavaa molempiin suuntiin, voimme käyttää jokaista Message Channel - ohjelmaa vain yhden suunta-asiakkaan palvelimelle tapahtuva kommunikaatio toteutetaan pisteestä pisteeseen, kun palvelin-asiakas-kommunikaatio toteutetaan julkaisemalla-tilaamalla Viestikanavien s yhdistelmällä järjestelmä hyötyy suoraa viestintää palvelinkomponenttien kanssa piste-piste-viestien avulla ja julkaista-tilauksen multicast-luonteesta ilman kumpaakin haittana. Messaging flow with Channel Types. Problem Solving With Patterns. Mallit ovat työkaluja ja kokoelmia kuvioita ovat työkalupaketteja. Ne auttavat ratkaisemaan ongelmia. Jotkut ajattelevat, että mallit ovat vain hyödyllisiä suunnittelun aikana. Työkalulaatikon analogian jälkeen tämä on kuin sanoa, että työkalut ovat hyödyllisiä vain, kun rakennat taloa, ei silloin, kun korjaat sen. että mallit ovat hyödyllinen työkalu koko projektin ajan, kun niitä sovelletaan hyvin Seuraavissa osissa käytämme samaa mallin etsintäprosessia, jota käytimme edellisessä osassa ongelmien ratkaisemiseksi nyt toimivaa järjestelmäämme. Flash Market Data Updates - traders haluavat taulukkosolujen vilkkua kun uusia markkinoita koskevia tietoja vastaanotetaan joukkovelkakirjalainalle, mikä ilmentää selvästi muutoksia Java-asiakas vastaanottaa viestejä uusilla tiedoilla, jotka aktivoivat asiakastiedot joka päivittää ja lopulta vilkkuu taulukossa Ongelmana on, että päivitykset tulevat melko usein GUI-lanapino on ylikuormittunut ja lopulta jäädyttää asiakkaan, koska se ei voi vastata käyttäjän vuorovaikutukseen Oletetaan, että vilkkuvuus on optimoitu ja keskittynyt datavirtaan viesteistä päivitysprosessin avulla Suoritustietojen tarkastelu osoittaa, että asiakassovellus saa useita päivityksiä toinen muutamia päivityksiä on tapahtunut alle millisekunnin välein Kaksi kaavaa, jotka näyttävät voivan auttaa hidastamaan viestivirtaa, ovat Aggregator ja Message Filter. A ensin ajatus on toteuttaa sanomasuodatin, jolla ohjataan viestivirtauksen nopeutta heittämällä ulos vastaanotettuja päivityksiä vähän aikaa referenssiviestin jälkeen. Esimerkkinä sanomme, ettemme aio ohittaa viestejä viiden millisekunnin sisällä toisistaan ​​Viesti Suodatin voisi välimuistia viimeksi hyväksyttävän viestin ajasta ja heittää pois minkä tahansa vastaanotetun seuraavan 5 millisekunnan aikana nds Vaikka muutkin sovellukset eivät ehkä pysty kestämään tietojen menetystä niin pitkälle, tämä on täysin hyväksyttävää järjestelmämme takia päivitysten tiheyden vuoksi. Time-pohjainen Message Filter. The ongelma tässä lähestymistavassa on, että kaikkia tietokenttiä ei päivitetä Samanaikaisesti Jokaisella sidoksella on noin 50 tietokenttää, jotka näkyvät käyttäjälle, mukaan lukien hinta. Ymmärrämme, ettei jokaista kenttää päivitetä jokaiseen viestiin. Jos järjestelmä jättää peräkkäiset viestit huomiotta, se voi hyvin heittää tärkeitä tietoja. on Aggregator Aggregatoria käytetään hallitsemaan monien samankaltaisten viestien sovittamista yhteen viestiin, mikä mahdollisesti vähentää viestivirtaa Aggregator voi säilyttää kopion sidotiedoista ensimmäisestä aggregoidusta sanomasta, päivittää sitten vain uudet tai muuttuneet kentät peräkkäin viestit Lopulta yhdistetty joukkovelkakirjaluettelo välitetään viestille asiakkaalle. Nyt oletetaan, että aggregaattori lähettää viestin joka 5. mil Liseconds, kuten Message Filter Suorita myöhemmin, etsimme toisen vaihtoehdon. Aggregator osittaisilla peräkkäisillä päivityksillä. Aggregator, kuten mikä tahansa muu malli, ei ole hopea luoti, sillä sillä on lisäyksiä ja miinuksia, joita on tutkittava. Yksi potentiaalinen miinus on, että Aggregatorin vähentäisi viestiliikennettä suurella summalla tapauksessamme vain, jos samaan sidokseen liittyy suhteellisen lyhyessä ajassa useita viestejä. Toisaalta emme saavisi mitään, jos Java-asiakas saa vain yhden kentän päivityksiä kaikkiin Esimerkiksi jos saamme 1000 viestiä tietyssä aikataulussa ja neljä kiinnostuksen kohteena olevaa joukkovelkakirjaa, pienennämme viestivirtaa 1000: sta viiteen sanomaan kyseisellä aikakehyksellä. Vaihtoehtoisesti, jos saamme 1000 viestit samassa aikataulussa ja 750 joukkovelkakirjalainaa interest, we will have reduced the message flow from 1000 to 750 messages relatively little gain for the amount of effort A quick analysis of the message updates proves t hat the Java client receives many messages updating fields of the same bond, and therefore related messages So, Aggregator is in fact a good decision. What s left is to determine how the Aggregator will know when to send a message it has been aggregating The pattern describes a few algorithms for the Aggregator to know when to send the message These include algorithms to cause the aggregator to send out its contents after a certain amount of time has elapsed, after all required fields in a data set have been completed, and others The problem with all of these approaches is that the aggregator is controlling the message flow, not the client And the client is the major bottleneck in this case, not the message flow. This is because the Aggregator is assuming the consumers of its purged messages the client application in this case are Event-Driven Consumer s, or consumers that rely on events from an external source We need to turn the client into a Polling Consumer or a consumer that continu ously checks for messages, so the client application can control the message flow We can do this by creating a background thread that continuously cycles through the set of bonds and updates and flashes any changes that have occurred since the last iteration This way, the client controls when messages are received and as a result, guarantees that it will never become overloaded with messages during high update periods We can easily implement this by sending a Command Message to the Aggregator initiating an update The Aggregator will respond with a Document Message containing the set of updated fields that the client will process. The choice of Aggregator over Message Filter is clearly a decision based solely on the business requirements of our system Each could help us solve our performance problems, but using the Message Filter would solve the problem at cost of the system data integrity. Major Production Crash. With the performance of the flashing fixed, we are now in production One day the entire system goes down MQSeries crashes, bringing several components down with it We struggle with the problem for a while and finally trace it back to the MQSeries dead letter queue an implementation of the Dead Letter Channel The queue grows so large that it brings down the entire server After exploring the messages in the dead letter queue we find they are all expired market data messages This is caused by slow consumers, or consumers that do not process messages fast enough While messages are waiting to be processed, they time out see the Message Expiration pattern and are sent to the Dead Letter Channel The excessive number of expired market data messages in the dead letter queue is a clear indication that the message flow is too great messages expire before the target application can consume them We need to fix the message flow and we turn to patterns for help slowing down the message flow. A reasonable first step is to explore solving this problem with the Aggregator as we recently used this pattern to solve the similar flashing market data control rate problem The system design relies on the client application to immediately forward market data update messages to the trading venues This means the system cannot wait to collect messages and aggregate them So the Aggregator must be abandoned. There are two other patterns that deal with the problem of consuming messages concurrently Competing Consumers and Message Dispatcher Starting with Competing Consumers the benefit of this pattern is the parallel processing of incoming messages This is accomplished using several consumers on the same channel Only one consumer processes each incoming message leaving the others to process successive messages Competing Consumers however, will not work for us since we are using Publish-Subscribe Channel s in server-to-client communication Competing Consumers on a Publish-Subscribe Channel channel means that all consumers process the same incoming message This results in mo re work without any gain and completely misses the goal of the pattern This approach also has to be abandoned. On the other hand, the Message Dispatcher describes an approach whereby you add several consumers to a pool Each consumer can run its own execution thread One main Message Consumer listens to the Channel and delegates the message on to an unoccupied Message Consumer in the pool and immediately returns to listening on the Message Channel This achieves the parallel processing benefit of Competing Consumers but works on Publish-Subscribe Channel s. The Message Dispatcher in context. Implementing this in our system is simple We create a single JMSListener called the Dispatcher, which contains a collection of other JMSListener s called Performers When the onMessage method of the Dispatcher is called, it in turn picks a Performer out of the collection to actually process the message The result of which is a Message Listener the Dispatcher that always returns immediately This guarantee s a steady flow of message processing regardless of the message flow rate Additionally, this works equally well on a Publish-Subscribe Channel s as it does on a Point-to-Point Channel s With this infrastructure, messages can be received by the client application at almost any rate If the client application is still slow to process the message after receiving them, the client application can deal with the delayed processing and potentially outdated market data rather than the messages expiring in the JMS Message Channel. The crash discussed in this section and the fix using the Message Dispatcher is an excellent example of the limits of applying patterns We encountered a performance problem based on a design flaw not allowing the client to process messages in parallel This greatly improved the problem, but did not completely fix it This is because the real problem was the client becoming a bottleneck This couldn t be fixed with a thousand patterns We later addressed this problem by refac toring the message flow architecture to route messages directly from the Pricing Gateway to the Contribution Gateway So patterns can help design and maintain a system, but don t necessarily make up for poor upfront design. Throughout this chapter, we have applied patterns to several different aspects of a bond trading system including solving initial upfront design problems and fixing a nearly job threatening production crash with patterns We also saw these patterns as they already exist in third party product, legacy components, and our JMS and TIBCO messaging systems Most importantly, these are real problems with the same types of architectural, technical and business problems we experience as we design and maintain our own systems Hopefully reading about applying patterns to this system helps give you a better understanding of the patterns as well as how to apply them to your own systems. Want to keep up-to-date Follow My Blog. Want to read more in depth Check out My Articles. Want to s ee me live See where I am speaking next. Find the full description of this pattern in Enterprise Integration Patterns Gregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley. From Enterprise Integration to Enterprise Transformation. My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT. Parts of this page are made available under the Creative Commons Attribution license You can reuse the pattern icon, the pattern name, the problem and solution statements in bold , and the sketch under this license Other portions of the text, such as text chapters or the full pattern text, are protected by copyright. Messaging Patterns Integration Patterns in Practice Case Study Bond Trading System. Imagine Trading System. Since 1993, Imagine Software has been a leading provider of investment management solutions for the global financial industry Its a ward-winning enterprise product, the Imagine Trading System and its on-demand cloud-based ASP version, is a real-time integrated trading, portfolio, and risk management solution employed by thousands of buy-side and sell-side end-users across the globe. Imagine Software s reputation of delivering competitive advantage is based upon its long track record of delivering institutional-grade functionality, broad cross-asset instrument support, and the ability to handle any trading strategy The firm consistently satisfies the diverse portfolio and risk processing, market data, regulatory, and reporting requirements of the largest global hedge funds, fund-of-funds, pension funds, asset management companies, and major brokerage firms and banks Imagine provides users with everything they need for their day-to-day operations advanced software functionality, comprehensive data management consisting of the myriad live market, credit, static data, and other elements necessary for real-time trading i n today s global markets , and end-of-day and start-of-day processing services. Maximizing Investment Returns and Managing Risk Investment decision-makers reap immediate benefits with Imagine s robust, real-time portfolio and risk management functionality, which supports their activities across all trading strategies and asset classes Key portfolio functionality includes unlimited portfolio drilldowns, real-time pricing, limits monitoring and control, plus live views of P L values and greeks, and securities tracking Risk functionality spans stress testing and historical Monte Carlo, plus intra-day portfolio VaR, factor analysis, and much more Users can easily examine exposure to shifting market prices, interest rates, volatility, yield-curve assumptions and other risks. Achieve Transparency Imagine s status as a trusted industry-standard provider of risk and portfolio reporting capabilities make it a must have resource for a wide array of financial businesses ranging from institutional i nvestment firms to start-up hedge funds Superior reporting capabilities plus complete historical data archiving enables the transparency today s investors and regulator agencies demand. Gain Operational Efficiencies clients concentrate solely on managing assets because the critical components underpinning their business processes software, market data, global security masters, corporate actions, etc are managed efficiently at Imagine s secure, high-performance data center The operational risk and cost benefits of fast implementation, automation of manual processes, seamless integration with other third-party systems, and elimination of IT support requirements are undeniable. Appears on these sections. Product and service specifications.

No comments:

Post a Comment