Istraživanje i razvoj metoda gradnje. Distribuirane upravljačke platforme

World Wide Web (WWW) izvorno su zamislili njegovi kreatori kao "prostor za razmjenu informacija u kojem ljudi i računala mogu međusobno komunicirati". Stoga su prve web aplikacije bile primitivni poslužitelji datoteka koji su vraćali statične HTML stranice klijentima koji su ih tražili. Dakle, Web je započeo kao orijentiran na dokumente.

Sljedeća faza u razvoju Weba bila je pojava koncepta aplikacija, koje su se temeljile na sučeljima poput CGI (ili FastCGI), a kasnije i na ISAPI. Zajednički pristupnik Sučelje (CGI) je standardno sučelje za rad s poslužiteljima koje vam omogućuje pokretanje poslužiteljskih aplikacija pozvanih putem URL-a. Ulazna informacija za takve aplikacije bila je sadržaj HTTP zaglavlja (i tijelo zahtjeva kada se koristi POST protokol). CGI aplikacije generirale su HTML kod koji je vraćen pregledniku. Glavni problem s CGI aplikacijama bio je taj što je sa svakim zahtjevom klijenta poslužitelj izvršavao CGI program u stvarnom vremenu, učitavajući ga u poseban adresni prostor.

Pojava API-ja internetskog poslužitelja (ISAPI) ne samo da je riješila probleme s performansama koji su se javljali s CGI aplikacijama, već je također programerima omogućila bogatije programsko sučelje. ISAPI DLL-ovi mogu se povezati s ekstenzijama naziva datoteka putem posebne metabaze. Ova dva mehanizma (CGI i ISAPI) poslužila su kao osnova za stvaranje prve vrste web aplikacija u kojima se, ovisno o radnjama klijenta, izvršavao poslužiteljski kod. Tako je postalo moguće dinamičko generiranje sadržaja web stranica i sadržaj weba prestao je biti čisto statičan.

ISAPI sučelje Microsoftova je značajka Internet informacije poslužitelj. ISAPI aplikacije su biblioteke dinamičkog učitavanja (DLL) koje se izvode u adresnom prostoru web poslužitelja. S vremenom su i drugi web poslužitelji mogli pokretati aplikacije implementirane kao biblioteke. U slučaju Netscape Web poslužitelja, ovo programsko sučelje nazvano je NSAPI (Netscape Server API). Prilično popularan web poslužitelj Apache također ima mogućnost pokretanja web aplikacija implementiranih kao biblioteke; takve biblioteke nazivaju se Apache DSO (Dynamic Shared Objects).

Naravno, kada su koristili i CGI i ISAPI aplikacije, programeri su u osnovi rješavali iste probleme, pa je prirodni korak bila pojava novog sučelja visoke razine koje je pojednostavilo zadatke generiranja HTML koda, omogućilo pristup komponentama i korištenje baza podataka. Ovo sučelje bilo je objektni model Active Server Pages (ASP), izgrađen na temelju ISAPI filtera.

Glavna ideja ASP-a sa stajališta stvaranja sučelja aplikacije je da na web stranici postoje fragmenti koda koje interpretira web poslužitelj i umjesto kojih korisnik prima rezultat izvršavanja tih fragmenata koda.

Ubrzo nakon pojave ASP-a, stvorene su druge tehnologije koje su implementirale ideju postavljanja koda koji izvršava web poslužitelj unutar web stranice. Najpoznatija od njih danas je JSP (Java Server Pages) tehnologija, čija je glavna ideja jednokratna kompilacija Java koda (servleta) kada mu se prvi put pristupi, izvršavanje metoda ovog servleta i stavljanje rezultata izvršavanja ovih metoda u skup podataka koji se šalju pregledniku.

Najnovija verzija tehnologije Active Server Pages je ASP .NET, koja je ključna za arhitekturu Microsoft .NET Framework. Koristeći ASP .NET, možete kreirati web aplikacije i web usluge koje ne samo da vam omogućuju implementaciju dinamičkog generiranja HTML stranica, već se također integriraju s komponentama poslužitelja i mogu se koristiti za rješavanje širokog spektra poslovnih problema koji se pojavljuju pred programerima modernih Web aplikacije.

Općenito, klijent web poslužitelja ne može biti samo osobno računalo opremljeno običnim web preglednikom. Usporedo sa širokom uporabom mobilnih uređaja, pojavio se i problem opskrbe web poslužitelja podacima koje ti uređaji mogu interpretirati. Budući da mobilni uređaji imaju karakteristike koje se razlikuju od osobnih računala (ograničena veličina zaslona, ​​mala memorija i često nemogućnost prikaza bilo čega osim nekoliko redaka crno-bijelog teksta), za njih postoje drugi protokoli za prijenos podataka (WAP - Wireless Access Protocol) i odgovarajući označni jezici (WML – Wireless Markup Language, SHTML – Compact HTML, itd.). U tom slučaju postavlja se zadatak prijenosa podataka na mobilni uređaj u odgovarajućem formatu (i za tu svrhu postoje posebne stranice), ili, što se čini praktičnijim, tip uređaja se prepoznaje u trenutku kada kontaktira poslužitelj i izvorni dokument se pretvara (na primjer, u XML format) u format koji je ovime potreban mobilni uređaj(na primjer, pomoću XSLT transformacije).

Drugi način podrške različitim vrstama klijenata je stvaranje "inteligentnih" komponenti poslužitelja koje mogu generirati različit kod ovisno o vrsti klijenta. Ovaj pristup je posebno implementiran u Microsoft ASP .NET.

Još jedan smjer u razvoju klijentskih dijelova Web aplikacija bilo je postavljanje dijela logike aplikacije (kao što je provjera ispravnosti ulaznih podataka) u sam Web preglednik. Konkretno, moderni web preglednici sposobni su tumačiti skriptne jezike (VBScript, JavaScript), kod u kojem je, poput ASP koda, ugrađen u web stranicu, ali ga ne interpretira web poslužitelj, već preglednik i , prema tome, izvršava se na uređaju klijenta. Osim, moderni preglednici sposoban prikazati i izvršiti Java applete - posebne Java aplikacije koje korisnik dobiva kao dio web stranice, a neki preglednici mogu poslužiti i kao spremnici za ActiveX kontrole - posebne COM poslužitelje koji rade u adresnom prostoru preglednika, također primljene kao dio Web stranice. I Java appleti i ActiveX kontrole mogu implementirati gotovo sve funkcije.

Imajte na umu da se s povećanjem količine korištenih podataka i broja posjetitelja web stranice povećavaju i zahtjevi za pouzdanošću, izvedbom i skalabilnošću web aplikacija. Sljedeća faza u evoluciji takvih aplikacija bilo je odvajanje poslovne logike implementirane u web aplikaciju, a često i usluge obrade podataka i transakcija, od njezina sučelja. U tom slučaju tzv. prezentacijski dio obično ostaje u samoj web aplikaciji, a poslovna logika, obrada podataka i provedba transakcije prenose se u aplikacijski poslužitelj u obliku poslovnih objekata. Ovisno o vrsti aplikacijski poslužitelj Ovi poslovni objekti mogu biti samoizvršavajući COM poslužitelji, CORBA poslužitelji ili COM+ objekti koji se pokreću pomoću usluga. Windows komponente 2000, ili EJBs (Enterprise Java Beans) izvršni aplikacijski poslužitelj podržava J2EE specifikaciju (Java 2 Enterprise Edition). Kao mehanizam pristupa podacima takvi objekti mogu koristiti OLE DB, ODBC, JDBC (ovo ovisi o tome kako je poslovni objekt implementiran).

Često takvi poslovni objekti omogućuju pristup podacima iz korporativnih informacijskih sustava ili implementiraju neki dio njihove funkcionalnosti. Često omogućuju, na primjer, integraciju web stranice sa CRM (Customer Relationship Management) ili ERP (Enterprise Resource Planning) sustavima, pohranjivanje podataka o posjetiteljima web stranice u korporativnim sustavima i pružanje potencijalnim kupcima informacija o dostupnim proizvodima za narudžbe.

Budući da suvremeni Internet nije toliko sredstvo demonstracije prisutnosti tvrtke na tržištu ili marketinški alat, već više alat za poslovanje, zadaće organiziranja takvih odnosa s klijentima putem Interneta kao što je prodaja roba i usluga postaju dosta važno. I tu rješenja za e-trgovinu tipa “poduzeće kupcu” (B2C – business-to-consumer) postaju vrlo važna. Ništa manje važni nisu ni zadaci integracije web aplikacija s podacima i aplikacijama partnera kako bi se implementirala shema enterprise-to-enterprise (B2B - business-to-business), koja omogućuje sklapanje trgovinskih transakcija između poduzeća, razmjenu kataloga proizvoda, provođenje dražbe, stvaranje elektroničkih platformi za trgovanje.

Imajte na umu da, bitak sastavni dio takvo rješenje, web poslužitelj mora biti u mogućnosti ne samo pokrenuti aplikacije i komunicirati s njima aplikacijski poslužitelj, ali i koristiti usluge integracije, usluge upravljanja aplikacijama i podacima, kao i usluge za programere.

Sljedeći korak u evoluciji web aplikacija, uz pristup korporativnim i partnerskim podacima, je dobivanje pristupa poslovnim aplikacijama. Kako bismo riješili ovaj problem integracije web aplikacija s internim informacijskim sustavima poduzeća i aplikacijama koje osiguravaju interakciju s kupcima i partnerima, posebna rješenja, pod nazivom korporativni portali.

Često dio portalskog rješenja uključuje i alate za upravljanje sadržajem web stranice - uostalom, količina podataka dostupnih korisnicima koji koriste web stranice velikih tvrtki i portala sada je tolika da upravljanje tim podacima "ručno" nije moguće.

Sumirajući gore navedeno, možemo istaknuti glavne značajke web arhitekture [, ]:

  • nema potrebe za korištenjem dodatnog softvera na strani klijenta - to vam omogućuje automatsku implementaciju klijentskog dijela na svim platformama;
  • mogućnost povezivanja gotovo neograničenog broja klijenata;
  • zahvaljujući jednoj lokaciji za pohranu podataka i prisutnosti sustava za upravljanje bazom podataka, osigurani su minimalni zahtjevi za održavanje integriteta podataka;
  • dostupnost kada su poslužitelj i komunikacijski kanali operativni;
  • nedostupnost ako poslužitelj ili komunikacijski kanali nisu operativni;
  • prilično niska brzina web poslužitelja i kanala za prijenos podataka;
  • Što se tiče količine podataka, arhitektura web sustava nema značajnih ograničenja.

Shematski se takva arhitektura (u troslojnoj verziji) može prikazati kao što je prikazano na Sl. 5.9.


Riža. 5.9.

5.1.8. Servisno orijentirana arhitektura

Rješenje za mnoge od gore opisanih problema koji se javljaju pri izradi modernih web aplikacija sada se počinje dodjeljivati ​​web uslugama - platformi, objektnom modelu i klijentskim neovisnim softverskim komponentama koje se mogu pozvati iz klijentskih web aplikacija (kao i s weba same usluge) preko SOAP protokola temeljenog na HTTP protokolu i XML jeziku. Jezik sličan XML-u WSDL koristi se za opisivanje web usluga, a UDDI sučelje koristi se za organiziranje registara web usluga u kojima programeri i tvrtke mogu tražiti usluge koje su im potrebne, kao i objavljivati ​​podatke o svojim uslugama.

Podrška web usluga postala je jedan od glavnih strateških pravaca za mnoge tvrtke specijalizirane za proizvodnju aplikacijski poslužitelji, sustavi za upravljanje bazama podataka i alati za razvoj aplikacija.

(SOA, servisno orijentirana arhitektura)– modularni pristup razvoju softvera, koji se temelji na korištenju usluga sa standardiziranim sučeljima.

OASIS (Organizacija za otvorene standarde za strukturirane informacije) definira SOA na sljedeći način (OASIS referentni model za arhitekturu usmjerenu na usluge V 1.0): Servisno orijentirana arhitektura je paradigma za organiziranje i korištenje distribuiranih informacijskih resursa kao što su aplikacije i podaci, koji su pod odgovornošću različitih vlasnika, za postizanje željenih rezultata od strane potrošača, koji može biti: krajnji korisnik ili drugu aplikaciju.

SOA se temelji na načelima ponovne upotrebe funkcionalnih IT elemenata, uklanjanja dupliciranja funkcionalnosti u softveru, objedinjavanja standardnih operativnih procesa, osiguravanja prijenosa operativnog modela tvrtke u centralizirane procese i funkcionalna organizacija temeljena na industrijskoj integracijskoj platformi.

Komponente programa mogu se distribuirati preko različitih mrežnih čvorova, a nude se kao neovisne, slabo povezane, zamjenjive aplikacijske usluge. Programski paketi razvijeni u skladu sa SOA-om često se implementiraju kao skup web usluga integriranih korištenjem dobro poznatih standardnih protokola (SOAP, WSDL, itd.)

Komponentno sučelje SOA programa pruža enkapsulaciju detalja implementacije specifične komponente (OS, platforma, programski jezik, dobavljač, itd.) od drugih komponenti. Stoga SOA pruža fleksibilan i elegantan način kombiniranja i ponovne upotrebe komponenti za izgradnju složenih distribuiranih softverskih sustava.

SOA se pokazala korisnom za izgradnju velikih poslovnih softverskih aplikacija. Brojni programeri i integratori nude alate i rješenja temeljena na SOA-i (na primjer, platforme IBM WebSphere, Oracle/BEA Aqualogic, Microsoft Windows Communication Foundation, SAP NetWeaver, IVK Jupiter, TIBCO, Diasoft).

Glavni ciljevi korištenja SOA-e za velike informacijske sustave, na razini poduzeća i više su:

  • smanjenje troškova u razvoju aplikacija pojednostavljivanjem procesa razvoja;
  • poboljšanje ponovne upotrebe koda;
  • neovisnost o korištenim platformama, alatima i razvojnim jezicima;
  • povećanje skalabilnosti stvorenih sustava;
  • poboljšanje upravljivosti stvorenih sustava.

SOA načela:

  • arhitektura, kao takva, nije vezana uz neku posebnu tehnologiju;
  • neovisnost organizacije sustava o računalnim platformama koje se koriste;
  • neovisnost organizacije sustava od korištenih programskih jezika;
  • korištenje usluga neovisno o specifične aplikacije, s jedinstvenim pristupnim sučeljima;
  • organiziranje usluga kao labavo povezanih komponenti za građevinske sustave.

Arhitektura nije vezana ni za jednu specifičnu tehnologiju. Može se implementirati korištenjem širokog spektra tehnologija, uključujući tehnologije kao što su REST, RPC, DCOM, CORBA ili web usluge. SOA se može implementirati korištenjem jednog od ovih protokola i, na primjer, može dodatno koristiti mehanizam sustav datoteka, za razmjenu podataka.

Ono što razlikuje SOA je korištenje neovisnih servisa, s dobro definiranim sučeljima, koji se za obavljanje svojih zadataka mogu pozvati na neki standardni način, pod uvjetom da servisi ne znaju ništa unaprijed o aplikaciji koja će pozivati njih, a aplikacija ne zna kako usluge obavljaju svoju zadaću.

SOA se također može smatrati stilom arhitekture informacijskih sustava koji vam omogućuje stvaranje aplikacija koje sagradio kombinacije labavo povezanih i međusobno povezanih usluga. Ove usluge međusobno djeluju na temelju nekog strogo definiranog sučelja neovisnog o platformi i jeziku (na primjer, WSDL). Definicija sučelja skriva implementaciju usluge specifičnu za jezik.

Stoga sustavi temeljeni na SOA-i mogu biti neovisni o razvojnim tehnologijama i platformama (kao što su Java, .NET, itd.). Na primjer, usluge napisane u C# koje se izvode na .Net platformama i usluge napisane u Javi koje se izvode na Java EE platformama mogu biti pozvane od strane zajedničke kompozitne aplikacije s jednakim uspjehom. Aplikacije koje se izvode na nekim platformama mogu pozivati ​​usluge koje se izvode na drugim platformama, što olakšava ponovno koristiti komponente.

, , Terminal , Poslužitelj aplikacija, Poslužitelj baze podataka, Arhitektura distribuiranih sustava, , Servisno orijentirana arhitektura.

Softver otvorenog koda postao je temeljni blok u stvaranju nekih od najvećih svjetskih web stranica. S rastom ovih web stranica pojavile su se najbolje prakse i smjernice za njihovu arhitekturu. Ovo poglavlje ima za cilj pokriti neka od ključnih pitanja koja treba uzeti u obzir pri dizajniranju velikih web stranica, kao i neke od osnovnih komponenti koje se koriste za postizanje tih ciljeva.

Fokus ovog poglavlja je na analizi web-baziranih sustava, iako se dio materijala može ekstrapolirati na druge distribuirane sustave.

1.1 Načela izgradnje distribuiranih web sustava

Što točno znači stvoriti i upravljati skalabilnom web stranicom ili aplikacijom? Na primitivnoj razini, ovo je jednostavno povezivanje korisnika s udaljeni resursi putem Interneta. I resursi ili pristup tim resursima, koji su raspoređeni na mnogo poslužitelja i poveznica su koja osigurava skalabilnost web stranice.

Kao i većina stvari u životu, vrijeme provedeno unaprijed u planiranju izgradnje web usluge može pomoći kasnije; Razumijevanje nekih razmatranja i kompromisa iza velikih web stranica može donijeti pametnije odluke pri izradi manjih web stranica. Ispod su neka ključna načela koja utječu na dizajn velikih web sustava:

  • Dostupnost: trajanje radni uvjeti Web stranica ključna je za ugled i funkcionalnost mnogih tvrtki. Za neke veće online trgovce nedostupnost čak i nekoliko minuta može rezultirati tisućama ili milijunima dolara izgubljenog prihoda. Stoga je razvoj njihovih sustava kako bi uvijek bili dostupni i otporni na kvarove temeljni poslovni i tehnološki zahtjev. Visoka dostupnost u distribuiranim sustavima zahtijeva pažljivo razmatranje redundancije za ključne komponente, brz oporavak nakon djelomičnog kvara sustava i glatkog smanjenja sposobnosti kada se pojave problemi.
  • Izvođenje: Izvedba web stranice je postala važan pokazatelj za većinu stranica. Brzina web stranice utječe na korisničko iskustvo i zadovoljstvo, kao i na rangiranje u tražilicama—čimbenik koji izravno utječe na zadržavanje publike i prihod. Kao rezultat toga, ključ je stvoriti sustav koji je optimiziran za brze odgovore i nisku latenciju.
  • Pouzdanost: Sustav mora biti pouzdan kako bi konkretan zahtjev po primitku podataka ujednačeno vratio određene podatke. U slučaju promjene ili ažuriranja podataka, isti zahtjev treba vratiti nove podatke. Korisnici trebaju znati da ako se nešto snimi ili pohrani u sustavu, mogu biti sigurni da će to ostati na mjestu za kasnije pronalaženje.
  • Skalabilnost: Kada je riječ o bilo kojem velikom distribuiranom sustavu, veličina je samo jedna stavka na popisu koju treba razmotriti. Jednako su važni napori da se poveća kapacitet prerade velike količine opterećenja, što se obično naziva skalabilnost sustava. Skalabilnost se može odnositi na različite parametre sustava: količinu dodatnog prometa koji može podnijeti, koliko je lako dodati kapacitet pohrane ili koliko se drugih transakcija može obraditi.
  • Upravljivost: Dizajniranje sustava koji je jednostavan za rukovanje još je jedan važan faktor. Upravljivost sustava izjednačava se s skalabilnošću operacija "održavanja" i "ažuriranja". Da bi se osigurala upravljivost, potrebno je uzeti u obzir lakoću dijagnosticiranja i razumijevanja novonastalih problema, lakoću ažuriranja ili modificiranja i jednostavnost korištenja sustava. (Odnosno, radi li prema očekivanjima bez kvarova ili iznimaka?)
  • Cijena: Trošak je važan faktor. To očito može uključivati ​​troškove hardvera i softvera, ali također je važno uzeti u obzir druge aspekte potrebne za implementaciju i održavanje sustava. Potrebno je osigurati količinu vremena programera potrebnog za izgradnju sustava, količinu operativnog napora potrebnog da se sustav pokrene i pokrene, pa čak i odgovarajuću razinu obuke. Trošak predstavlja ukupni trošak vlasništva.

Svaki od ovih principa temelj je za donošenje dizajnerskih odluka distribuirana web arhitektura. No, mogu biti i u međusobnom sukobu jer postizanje ciljeva jedne ide nauštrb zanemarivanja druge. Jednostavan primjer: odabir jednostavnog dodavanja više poslužitelja kao rješenja za performanse (skalabilnost) može povećati troškove upravljanja (morate pokrenuti dodatni poslužitelj) i kupnje poslužitelja.

Kada razvijate bilo koju vrstu web aplikacije, važno je uzeti u obzir ova ključna načela, čak i ako želimo potvrditi da projekt može žrtvovati jedno ili više njih.

1.2 Osnove

Kada se razmatra arhitektura sustava, postoji nekoliko pitanja kojima se treba pozabaviti, kao što su koje se komponente isplati koristiti, kako se međusobno uklapaju i koji se kompromisi mogu napraviti. Ulaganje novca u skaliranje bez jasne potrebe za tim nije pametna poslovna odluka. Međutim, malo predumišljaja u planiranju može uštedjeti značajno vrijeme i resurse u budućnosti.

Ovaj se odjeljak fokusira na neke osnovne čimbenike koji su ključni za gotovo sve velike web aplikacije: Usluge,
zalihost, segmentacija, I rukovanje kvarom. Svaki od ovih čimbenika uključuje izbore i kompromise, posebno u kontekstu načela opisanih u prethodnom odjeljku. Da pojasnimo, dajmo primjer.

Primjer: Aplikacija za hosting slika

Vjerojatno ste već objavljivali slike na internetu. Za velika mjesta koja pohranjuju i isporučuju mnogo slika, postoje izazovi u stvaranju isplative, vrlo pouzdane arhitekture koja ima niske latencije odgovora (brzo dohvaćanje).

Zamislite sustav u kojem korisnici imaju mogućnost učitavanja svojih slika na središnji poslužitelj i u kojem se slike mogu zatražiti putem veze na stranicu ili API-ja, slično Flickru ili Picasi. Kako bismo pojednostavili opis, pretpostavimo da ova aplikacija ima dva glavna zadatka: mogućnost učitavanja (pisanja) slika na poslužitelj i zahtijevanje slika. Naravno, učinkovito učitavanje je važan kriterij, ali prioritet će biti Brza dostava prema zahtjevu korisnika (na primjer, slike mogu biti prikazane na web stranici ili od strane druge aplikacije). Ova je funkcionalnost slična onoj koju može pružiti web poslužitelj ili rubni poslužitelj mreže za isporuku sadržaja (CDN). CDN poslužitelj obično pohranjuje podatkovne objekte na više lokacija, čime ih geografski/fizički približava korisnicima, što rezultira poboljšanim performansama.

Drugi važni aspekti sustava:

  • Broj pohranjenih slika može biti neograničen, tako da se s ove točke gledišta mora razmotriti skalabilnost pohrane.
  • Za preuzimanja/zahtjeve slika trebala bi postojati niska latencija.
  • Ako korisnik postavi sliku na poslužitelj, njezini podaci uvijek moraju ostati netaknuti i dostupni.
  • Sustav mora biti jednostavan za održavanje (upravljivost).
  • Budući da hosting slika ne donosi veliku zaradu, sustav mora biti isplativ.

Još jedan potencijalni problem s ovim dizajnom je taj što web poslužitelj kao što je Apache ili lighttpd obično ima gornju granicu broja istovremenih veza koje može opsluživati ​​(zadano je približno 500, ali može biti i puno više) i s velikim prometom , snimke mogu brzo iskoristiti ovo ograničenje. Budući da čitanja mogu biti asinkrona ili mogu iskoristiti druge optimizacije performansi kao što su gzip kompresija ili dijeljenje, web poslužitelj može brže prebacivati ​​čitanja feedova i prebacivati ​​se između klijenata, opslužujući mnogo više zahtjeva od najveći broj veze (s Apacheom i maksimalnim brojem veza postavljenim na 500, sasvim je moguće poslužiti nekoliko tisuća zahtjeva za čitanje u sekundi). Zapisi, s druge strane, drže vezu otvorenom tijekom cijelog trajanja preuzimanja. Stoga bi prijenos datoteke od 1 MB na poslužitelj mogao potrajati više od 1 sekunde na većini kućnih mreža, što rezultira time da web poslužitelj može obraditi samo 500 od ovih istodobnih unosa.


Slika 1.2: Odvajanje čitanja/pisanja

Predviđanje ovog potencijalnog problema sugerira potrebu za odvajanjem čitanja i pisanja slika u neovisne usluge, prikazane u . Ovo nam neće samo omogućiti skaliranje svakog od njih zasebno (kao što ćemo vjerojatno uvijek činiti). više čitanja nego zapisi), ali i biti svjestan onoga što se događa u svakoj službi. Konačno, razlikovat će probleme koji se mogu pojaviti u budućnosti, olakšavajući dijagnosticiranje i procjenu problema sporog pristupa čitanju.

Prednost ovog pristupa je u tome što možemo rješavati probleme neovisno jedan o drugom - bez brige o snimanju i dohvaćanju novih slika u istom kontekstu. Obje ove usluge i dalje koriste globalni korpus slika, ali korištenjem tehnika specifičnih za uslugu mogu optimizirati svoje vlastitu produktivnost(na primjer, zahtjevi za čekanje ili spremanje popularnih slika u predmemoriju - više o tome kasnije). Iz perspektive usluge i cijene, svaka se usluga može neovisno skalirati prema potrebi. I to je pozitivna stvar, budući da bi njihovo kombiniranje i miješanje moglo nenamjerno utjecati na njihovu izvedbu, kao u gore opisanom scenariju.

Naravno, gornji model će raditi optimalno ako postoje dvije različite krajnje točke (zapravo, ovo je vrlo slično nekoliko implementacija pružatelja usluga pohrane u oblaku i mreža za isporuku sadržaja). Postoji mnogo rješenja sličnih problema, i u svakom slučaju se može naći kompromis.

Na primjer, Flickr rješava ovaj problem čitanja i pisanja raspoređujući korisnike po različitim podovima tako da svaki pod može poslužiti samo ograničenom broju određenih korisnika, a kako se broj korisnika povećava, više podova se dodaje u klaster (pogledajte Flickrovu prezentaciju skaliranja ,
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). U prvom primjeru, lakše je skalirati hardver na temelju stvarnog opterećenja upotrebe (broj čitanja i pisanja u cijelom sustavu), dok Flickr skalira na temelju korisničke baze (međutim, ovo koristi pretpostavku ravnomjerne upotrebe u cijelom sustavu). različiti korisnici, pa kapacitet treba planirati prema zalihama). U prošlosti bi nedostupnost ili problem s jednom od usluga prekidao funkcionalnost cijeli sustav(na primjer, nitko ne može pisati datoteke), tada će nedostupnost jednog od Flickr modula utjecati samo na korisnike povezane s njim. U prvom primjeru, lakše je izvršiti operacije na cijelom skupu podataka - na primjer, ažuriranje usluge snimanja kako bi se uključili novi metapodaci ili pretraživanje svih metapodataka slike - dok je s Flickr arhitekturom svaki modul morao biti ažuriran ili pretraživan ( ili je morala biti kreirana usluga pretraživanja za sortiranje metapodataka koji su zapravo namijenjeni za tu svrhu).

Što se tiče ovih sustava, nema lijeka, ali uvijek trebate krenuti od načela opisanih na početku ovog poglavlja: odrediti potrebe sustava (čitanje ili pisanje ili oboje, razina paralelizma, upiti na skupove podataka, rasponi, sortiranje, itd.), provesti komparativno testiranje različitih alternativa, razumjeti potencijalne uvjete kvara sustava i razviti sveobuhvatan plan ako dođe do kvara.

Redundancija

Kako bi se elegantno nosila s neuspjehom, web arhitektura mora imati redundanciju u svojim uslugama i podacima. Na primjer, ako postoji samo jedna kopija datoteke pohranjena na jednom poslužitelju, gubitak tog poslužitelja značit će gubitak datoteke. Malo je vjerojatno da će ovo biti pozitivna situacija i obično se može izbjeći stvaranjem više kopija ili sigurnosnih kopija.

Isti princip vrijedi i za usluge. Možete se zaštititi od kvara jednog čvora pružanjem sastavnog dijela funkcionalnosti za aplikaciju koja jamči simultani rad njegovih nekoliko kopija ili verzija.

Stvaranje redundantnosti u sustavu omogućuje vam da se riješite slabih točaka i pružite rezervnu ili redundantnu funkcionalnost u slučaju nužde. Na primjer, ako postoje dvije instance iste usluge koje se izvode u proizvodnji, a jedna od njih potpuno ili djelomično zakaže, sustav može prevladati grešku prebacivanje na radnu kopiju.
Prebacivanje se može dogoditi automatski ili zahtijevati ručnu intervenciju.

.

Druga ključna uloga redundancije usluge je stvaranje arhitektura koja ne omogućuje dijeljenje resursa. Uz ovu arhitekturu, svaki čvor može raditi neovisno i, štoviše, u nedostatku središnjeg "mozga" koji upravlja stanjima ili koordinira radnje drugih čvorova. Promiče skalabilnost jer dodavanje novih čvorova ne zahtijeva posebne uvjete ili znanje. Ono što je najvažnije, ne postoji kritična točka kvara u ovim sustavima, što ih čini puno otpornijima na kvarove.

.

Na primjer, u našoj aplikaciji poslužitelja slika, sve bi slike imale suvišne kopije negdje na drugom hardveru (idealno na drugoj geografskoj lokaciji u slučaju katastrofe kao što je potres ili požar u podatkovnom centru), a usluge bi pristup slikama bio suvišan, s obzirom da će sve one potencijalno služiti zahtjevima. (Cm. .)
Gledajući unaprijed, balanseri opterećenja izvrstan su način da to učinite mogućim, ali više o tome u nastavku.


Slika 1.3: Suvišna aplikacija za hosting slika

Segmentacija

Skupovi podataka mogu biti toliko veliki da se ne mogu smjestiti na jedan poslužitelj. Također se može dogoditi da računalne operacije zahtijevaju previše računalnih resursa, smanjujući performanse i zahtijevajući povećanu snagu. U svakom slučaju, imate dvije mogućnosti: okomito ili vodoravno skaliranje.

Vertikalno skaliranje uključuje dodavanje više resursa jednom poslužitelju. Dakle, za vrlo velik skup podataka to bi značilo dodavanje više (ili većih) tvrdih diskova kako bi cijeli skup podataka mogao stati na jedan poslužitelj. U slučaju računalnih operacija, to bi značilo premještanje računanja na veći poslužitelj s bržim CPU-om ili više memorije. U svakom slučaju, vertikalno skaliranje se radi kako bi jedan resurs računalnog sustava bio sposoban za dodatnu obradu podataka.

Horizontalno skaliranje, s druge strane, uključuje dodavanje više čvorova. U slučaju velikog skupa podataka, to bi značilo dodavanje drugog poslužitelja za pohranu dijela ukupne količine podataka, a za računalni resurs to bi značilo podjelu posla ili opterećenja na neke dodatne čvorove. Kako bismo u potpunosti iskoristili potencijal horizontalno skaliranje, treba ga implementirati kao unutarnji princip razvoj arhitekture sustava. U suprotnom, mijenjanje i izdvajanje konteksta potrebnog za horizontalno skaliranje može biti problematično.

Najčešća metoda horizontalnog skaliranja je podjela usluga na segmente ili module. Mogu se distribuirati na način da svaki logički skup funkcionalnosti radi odvojeno. To se može učiniti geografskim granicama ili drugim kriterijima kao što su korisnici koji plaćaju i korisnici koji ne plaćaju. Prednost ovih shema je u tome što pružaju uslugu ili pohranu podataka s poboljšanom funkcionalnošću.

U našem primjeru poslužitelja slika, moguće je da se jedan poslužitelj datoteka koji se koristi za pohranjivanje slike može zamijeniti s više poslužitelja datoteka, od kojih svaki sadrži vlastiti jedinstveni skup slika. (Vidi.) Ova bi arhitektura omogućila sustavu da ispuni svaki poslužitelj datoteka slikama, dodajući dodatne poslužitelje kako bude pun. prostor na disku. Dizajn će zahtijevati shemu imenovanja koja povezuje naziv slikovne datoteke s poslužiteljem koji je sadrži. Naziv slike može se generirati iz dosljedne sheme raspršivanja povezane s poslužiteljima. Ili alternativno, svaka bi slika mogla imati inkrementalni ID, što bi omogućilo službi za isporuku, kada zahtijeva sliku, da obradi samo raspon ID-ova povezanih sa svakim poslužiteljem (kao indeks).


Slika 1.4: Aplikacija za hosting slika sa redundancijom i segmentacijom

Naravno, postoje poteškoće u distribuciji podataka ili funkcionalnosti preko mnogih poslužitelja. Jedno od ključnih pitanja je mjesto podataka; u distribuiranim sustavima, što su podaci bliže točki rada ili računanja, to bolje performanse sustava. Posljedično, distribucija podataka na više poslužitelja potencijalno je problematična, budući da u bilo kojem trenutku podaci mogu biti potrebni, postoji rizik da možda neće biti dostupni na traženoj lokaciji, poslužitelj će morati izvršiti skupo dohvaćanje potrebnih informacija preko mreža.

Još jedan potencijalni problem javlja se u obliku
nedosljednost (nedosljednost) Kada različite usluge čitaju i pišu u dijeljeni resurs, potencijalno drugu uslugu ili pohranu podataka, moguće je da se dogodi "stanje utrke" - gdje se neki podaci smatraju ažuriranima na najnovije stanje, ali se zapravo čitaju prije nego što se ažuriran - u tom slučaju podaci nisu dosljedni. Na primjer, u scenariju hostinga slika, stanje utrke moglo bi se dogoditi ako je jedan klijent poslao zahtjev za ažuriranje slike psa, mijenjajući naslov "Pas" u "Gizmo" dok je drugi klijent čitao sliku. U takvoj situaciji nejasno je koji bi naslov, "Pas" ili "Gizmo", dobio drugi klijent.

.

Postoje, naravno, neke prepreke povezane sa segmentacijom podataka, ali segmentacija vam omogućuje da izolirate svaki problem od ostalih: po podacima, po opterećenju, po obrascima korištenja itd. u upravljane blokove. To može pomoći u skalabilnosti i upravljivosti, ali još uvijek postoji rizik. Postoji mnogo načina za smanjenje rizika i rješavanje kvarova; međutim, u interesu sažetosti oni nisu pokriveni u ovom poglavlju. Ako želite više informacija o ovoj temi, trebali biste pogledati post na blogu o toleranciji grešaka i praćenju.

1.3. Gradivni blokovi za brz i skalabilan pristup podacima

Nakon što smo pogledali neke osnovne principe u razvoju distribuiranog sustava, prijeđimo sada na složenije pitanje - skaliranje pristupa podacima.

Najjednostavnije web aplikacije, kao što su LAMP stack aplikacije, slične su slici u .


Slika 1.5: Jednostavne web aplikacije

Kako aplikacija raste, pojavljuju se dva glavna izazova: skaliranje pristupa aplikacijskom poslužitelju i bazi podataka. U visoko skalabilnom dizajnu aplikacije, web ili aplikacijski poslužitelj obično je minimiziran i često implementira arhitekturu dijeljenja resursa. Ovo čini sloj aplikacijskog poslužitelja sustava vodoravno skalabilnim. Kao rezultat ovog dizajna, teško dizanje će se prebaciti niz stog na poslužitelj baze podataka i prateće usluge; Ovaj sloj je mjesto gdje stvarni problemi skaliranja i performansi stupaju na scenu.

Ostatak ovog poglavlja pokriva neke od najčešćih strategija i tehnika za poboljšanje izvedbe i skalabilnosti ovih vrsta usluga pružanjem brzog pristupa podacima.


Slika 1.6: Pojednostavljena web aplikacija

Većina sustava može se pojednostaviti na sklop
što je dobro mjesto za početak traženja. Ako imate mnogo podataka, slobodno je pretpostaviti da želite da im bude jednako lako i brzo pristupiti kao kutiji slatkiša u gornjoj ladici vašeg stola. Iako ovu usporedbu previše pojednostavljeno, ukazuje na dvoje složeni problemi: skalabilnost pohrane podataka i brz pristup podacima.

Za potrebe ovog odjeljka, pretpostavimo da imate mnogo terabajta (TB) podataka i dopuštate korisnicima pristup malim dijelovima tih podataka nasumičnim redoslijedom. (Cm. .)
Sličan zadatak je odrediti mjesto slikovne datoteke negdje na poslužitelj datoteka u primjeru aplikacije za hosting slika.


Slika 1.7: Pristup određenim podacima

To je posebno teško jer učitavanje terabajta podataka u memoriju može biti vrlo skupo i izravno utječe na I/O diska. Brzina čitanja s diska je nekoliko puta manja od brzine čitanja s RAM memorija- moglo bi se reći da je pristup memoriji brz kao Chuck Norris, dok je pristup disku sporiji od reda u klinici. Ova razlika u brzini je posebno uočljiva za velike skupove podataka; U neobrađenim brojevima, pristup memoriji je 6 puta brži od čitanja diska za sekvencijalno čitanje i 100 000 puta brži za nasumično čitanje (vidi Patologije velikih podataka, http://queue.acm.org/detail. cfm?id=1563874). ). Štoviše, čak i s jedinstvenim identifikatorima, rješavanje problema lociranja malog dijela podataka može biti jednako teško kao pokušaj da se bez gledanja iz kutije sa stotinama drugih slatkiša izabere posljednji slatkiš punjen čokoladom.

Srećom, postoje mnogi pristupi koji se mogu poduzeti da se stvari pojednostave, a četiri najvažnija pristupa su korištenje predmemorija, proxyja, indeksa i balansera opterećenja. U ostatku ovog odjeljka raspravlja se o tome kako se svaki od ovih koncepata može koristiti za mnogo brži pristup podacima.

Spremišta

Predmemoriranje ima koristi od karakteristike temeljnog načela: nedavno traženi podaci vjerojatno će ponovno biti potrebni. Predmemorije se koriste na gotovo svim razinama računalstva: hardver, operativni sustavi, web preglednici, web aplikacije itd. Predmemorija je poput kratkoročne memorije: ograničene je veličine, ali brža od izvornog izvora podataka i sadrži stavke kojima se nedavno pristupalo. Predmemorije mogu postojati na svim razinama u arhitekturi, ali se često nalaze na razini najbližoj prednjem kraju, gdje su implementirane za brzo vraćanje podataka bez značajnog opterećenja pozadine.

Dakle, kako se predmemorija može koristiti za ubrzavanje pristupa podacima unutar našeg primjera API-ja? U ovom slučaju postoji nekoliko prikladnih lokacija predmemorije. Jedna od mogućih opcija postavljanja je odabir čvorova na razini upita, kao što je prikazano u
.


Slika 1.8: Položaj predmemorije na čvoru na razini upita

Postavljanje predmemorije izravno na čvor na razini zahtjeva omogućuje lokalnu pohranu podataka odgovora. Svaki put kad se podnese zahtjev za uslugu, čvor će brzo vratiti lokalne, predmemorirane podatke, ako takvi postoje. Ako nije u predmemoriji, čvor zahtjeva će zatražiti podatke s diska. Predmemorija na jednom čvoru na razini upita također se može nalaziti u memoriji (što je vrlo brzo) i na lokalni diskčvor (brže od pokušaja pristupa mrežnoj pohrani).


Slika 1.9: Sustavi predmemorije

Što se događa kada predmemoriju rasporedite na mnogo čvorova? Kao što vidite, ako razina zahtjeva uključuje mnogo čvorova, tada je vjerojatno da će svaki čvor imati vlastitu predmemoriju. Međutim, ako vaš balanser opterećenja nasumično distribuira zahtjeve između čvorova, tada će isti zahtjev ići različitim čvorovima, čime se povećavaju promašaji predmemorije. Dva načina za prevladavanje ove prepreke su globalne i distribuirane predmemorije.

Globalna predmemorija

Značenje globalne predmemorije jasno je iz naziva: svi čvorovi dijele jedan jedini prostor predmemorije. U ovom slučaju dodajete poslužitelj ili neku vrstu pohrane datoteka koja je brža od vaše izvorne pohrane i koja će biti dostupna svim čvorovima na razini zahtjeva. Svaki od čvorova zahtjeva ispituje predmemoriju na isti način kao da je lokalna. Ova vrsta sheme predmemorije može uzrokovati neke probleme, jer se jedna predmemorija može vrlo lako preopteretiti ako se broj klijenata i zahtjeva poveća. U isto vrijeme, ova je shema vrlo učinkovita na određenim arhitekturama (posebno onima povezanim sa specijaliziranim hardverom koji ovu globalnu predmemoriju čini vrlo brzom ili koja ima fiksni skup podataka koji se moraju predmemorirati).

Postoje dva standardni oblici globalne predmemorije prikazane na dijagramima. Prikazana situacija je da kada se predmemorirani odgovor ne pronađe u predmemoriji, sama predmemorija postaje odgovorna za dohvaćanje dijela podataka koji nedostaje iz temeljne pohrane. Ilustrirana je odgovornost čvorova zahtjeva da dohvate bilo koje podatke koji nisu pronađeni u predmemoriji.


Slika 1.10: Globalna predmemorija, gdje je predmemorija odgovorna za dohvaćanje



Slika 1.11: Globalna predmemorija, gdje su čvorovi zahtjeva odgovorni za dohvaćanje

Većina aplikacija koje koriste globalne predmemorije imaju tendenciju da koriste prvu vrstu, gdje predmemorija sama upravlja zamjenom i dohvaćanjem podataka kako bi spriječila klijente da preplave zahtjeve za istim podacima. Međutim, postoje neki slučajevi u kojima druga implementacija ima više smisla. Na primjer, ako se predmemorija koristi za vrlo velike datoteke, niska stopa pogodaka predmemorije uzrokovat će preopterećenje predmemorije promašajima predmemorije; u ovoj situaciji pomaže imati veliki postotak ukupnog skupa podataka (ili skupa vrućih podataka) u predmemoriji. Drugi primjer je arhitektura u kojoj su datoteke pohranjene u predmemoriju statične i ne smiju se brisati. (To se može dogoditi zbog osnovnih karakteristika izvedbe u vezi s takvom latencijom podataka - možda određeni dijelovi podataka moraju biti vrlo brzi za velike skupove podataka - gdje logika aplikacije razumije strategiju zamjene ili žarišne točke bolje od predmemorije.)

Distribuirana predmemorija

Ti su indeksi često pohranjeni u memoriji ili negdje vrlo lokalno za dolazni zahtjev klijenta. Berkeley DB (BDB) i podatkovne strukture stabla, koje se obično koriste za pohranu podataka u uređenim popisima, idealne su za indeksirani pristup.

Često postoji mnogo slojeva indeksa koji djeluju kao karta, premještaju vas s jedne lokacije na drugu, i tako dalje, sve dok ne dobijete podatke koji su vam potrebni. (Cm.)


Slika 1.17: Indeksi na više razina

Indeksi se također mogu koristiti za stvaranje višestrukih drugih prikaza istih podataka. Za velike skupove podataka ovo je izvrstan način za definiranje različitih filtara i prikaza bez potrebe za stvaranjem velikog broja dodatne kopije podaci.

Na primjer, recimo da gore spomenuti sustav za hosting slika zapravo ugošćuje slike stranica knjiga, a usluga omogućuje klijentima postavljanje upita za tekst u tim slikama, tražeći sav tekstualni sadržaj o danoj temi na isti način na koji vam tražilice omogućuju za pretraživanje HTML sadržaja. U ovom slučaju, sve te slike knjiga koriste toliko mnogo poslužitelja za pohranu datoteka, a pronalaženje jedne stranice za predstavljanje korisniku može biti prilično teško. U početku bi obrnuti indeksi za upite proizvoljnih riječi i skupova riječi trebali biti lako dostupni; zatim postoji zadatak prelaska na točnu stranicu i mjesto u toj knjizi i dohvaćanje ispravna slika za rezultate pretraživanja. Dakle, u ovom slučaju, obrnuti indeks bi se preslikao na lokaciju (kao što je knjiga B), a onda bi B mogla sadržavati indeks sa svim riječima, lokacijama i brojem pojavljivanja u svakom dijelu.

Obrnuto kazalo, koje Index1 može prikazati u gornjem dijagramu, izgledalo bi otprilike ovako: Svaka riječ ili skup riječi služi kao indeks za one knjige koje ih sadrže.

Međuindeks će izgledati slično, ali će sadržavati samo riječi, lokaciju i informacije za knjigu B. Ova slojevita arhitektura omogućuje svakom indeksu da zauzme manje prostora nego da su sve ove informacije pohranjene u jednom velikom obrnutom indeksu.

A ovo je ključna točka u sustavima velikih razmjera, jer čak i kada su komprimirani, ti indeksi mogu biti prilično veliki i skupi za pohranu. Pretpostavimo da u ovom sustavu imamo mnogo knjiga iz cijelog svijeta - 100.000.000 (pogledajte post na blogu "Inside Google Books") - i da svaka knjiga ima samo 10 stranica (da pojednostavimo izračune) s 250 riječi po stranici: To daje imamo ukupno 250 milijardi riječi. Ako uzmemo da je prosječni broj znakova u riječi 5 i kodiramo svaki znak s 8 bitova (ili 1 bajtom, iako neki znakovi zapravo zauzimaju 2 bajta), trošeći tako 5 bajtova po riječi, tada indeks koji sadrži svaki riječ samo jednom zahtijeva pohranu veću od 1 terabajta. Dakle, možete vidjeti da indeksi koji sadrže i druge informacije, kao što su skupovi riječi, lokacije podataka i brojevi korištenja, mogu vrlo brzo rasti u veličini.

Stvaranje takvih srednjih indeksa i predstavljanje podataka u manjim dijelovima olakšava rješavanje problema velikih podataka. Podaci se mogu distribuirati na više poslužitelja i istovremeno biti brzo dostupni. Indeksi su kamen temeljac pretraživanja informacija i osnova za današnje moderne tražilice. Naravno, ovaj odjeljak samo zagrebe po površini teme indeksiranja, a bilo je mnogo istraživanja o tome kako indekse učiniti manjim, bržim, sadržavati više informacija (kao što je relevantnost) i lako ažurirati. (Postoje neki problemi s upravljanjem konkurentskim uvjetima, kao i brojem ažuriranja potrebnih za dodavanje novih podataka ili promjenu postojećih podataka, posebno kada je uključena relevantnost ili bodovanje).

Mogućnost brzog i jednostavnog pronalaženja podataka je važna, a indeksi su najjednostavniji i najučinkovitiji alat za postizanje tog cilja.

Balanceri opterećenja

Konačno, još jedan kritičan dio svakog distribuiranog sustava je balanser opterećenja. Balanseri opterećenja ključni su dio svake arhitekture jer je njihova uloga raspodijeliti opterećenje između čvorova odgovornih za posluživanje zahtjeva. Ovo omogućuje višestrukim čvorovima da transparentno služe istoj funkciji u sustavu. (Vidi.) Njihova glavna svrha je rukovanje mnogim istovremenim vezama i usmjeravanje tih veza na jedan od traženih čvorova, dopuštajući sustavu skaliranje jednostavnim dodavanjem čvorova za posluživanje velika količina zahtjevi.


Slika 1.18: Balanser opterećenja

Ima ih mnogo razni algoritmi posluživanje zahtjeva, uključujući nasumični odabir čvora, kružni postupak ili čak odabir čvora na temelju određenih kriterija kao što je upotreba središnji procesor ili RAM-a. Balanseri opterećenja mogu se implementirati kao hardverski uređaji ili softver. Među balanserima opterećenja softvera otvorenog koda, HAProxy je najčešće korišten.

U distribuiranom sustavu, balanseri opterećenja često se nalaze na "prednjem rubu" sustava, tako da svi dolazni zahtjevi prolaze izravno kroz njih. Vrlo je vjerojatno da će u složenom distribuiranom sustavu zahtjev morati proći kroz više balansera, kao što je prikazano u
.


Slika 1.19: Višestruki balanseri opterećenja

Poput proxyja, neki balanseri opterećenja također mogu različito usmjeravati zahtjeve ovisno o vrsti zahtjeva. Također su poznati kao obrnuti proxyji.

Upravljanje podacima specifičnim za određenu korisničku sesiju jedan je od izazova pri korištenju balansera opterećenja. Na web-mjestu za e-trgovinu, kada imate samo jednog kupca, vrlo je jednostavno dopustiti korisnicima da stavljaju artikle u svoju košaricu i spremaju sadržaj između posjeta (ovo je važno jer se vjerojatnost prodaje artikla značajno povećava ako, kada korisnik vrati na stranicu, proizvod je i dalje u njegovoj košarici). Međutim, ako je korisnik usmjeren na jedan čvor za prvu sesiju, a zatim na drugi čvor prilikom sljedećeg posjeta, može doći do nedosljednosti jer novi čvor možda neće imati saznanja o sadržaju košarice za kupnju tog korisnika. (Ne biste li bili uzrujani ako stavite paket Mountain Dew-a u svoju košaricu, a kada se vratite nema ga tamo?) Jedno od rješenja bi moglo biti da sesije učinite "ljepljivima" tako da korisnik uvijek bude usmjeren na isti čvor. Međutim, iskorištavanje prednosti nekih značajki pouzdanosti, kao što je automatski failover, bit će značajno teško. U ovom će slučaju korisnička košarica uvijek imati sadržaj, ali ako njihov ljepljivi čvor postane nedostupan, bit će potreban poseban pristup i pretpostavka o sadržaju košarice više neće biti točna (iako se nadamo da ta pretpostavka neće biti ugrađena u aplikacija). Naravno, ovaj se problem može riješiti korištenjem drugih strategija i alata, poput onih opisanih u ovom poglavlju, poput usluga i mnogih drugih (kao što su predmemorije preglednika, kolačići i prepisivanje URL-ova).

Ako sustav ima samo nekoliko čvorova, tada će tehnike kao što je DNS vrtuljak vjerojatno biti praktičnije od balansera opterećenja, koji mogu biti skupi i dodaju nepotreban sloj složenosti sustavu. Naravno, u velikih sustava postoje sve vrste različitih algoritama za raspoređivanje i balansiranje opterećenja, uključujući one tako jednostavne kao što su slučajni odabir ili algoritam vrtuljka ili više složeni mehanizmi, koji uzimaju u obzir karakteristike izvedbe obrasca korištenja sustava. Svi ovi algoritmi omogućuju distribuciju prometa i zahtjeva te mogu pružiti korisne alate za pouzdanost kao što je automatska tolerancija grešaka ili automatsko uklanjanje pokvarenog čvora (na primjer, kada prestane odgovarati na zahtjeve). Međutim, ove napredne značajke mogu otežati dijagnosticiranje problema. Na primjer, u situacijama visokog opterećenja, balanseri opterećenja će ukloniti čvorove koji možda rade sporo ili im ističe vrijeme (zbog niza zahtjeva), što će samo pogoršati stvari za druge čvorove. Opsežno praćenje je važno u ovim slučajevima jer čak i ako se čini da su ukupni promet i opterećenje sustava smanjeni (jer čvorovi poslužuju manje zahtjeva) - pojedinačni čvorovi može biti opterećen do krajnjih granica.

Balanseri opterećenja jednostavan su način povećanja kapaciteta sustava. Kao i druge metode opisane u ovom članku, igra ključnu ulogu u arhitekturi distribuiranog sustava. Balanseri opterećenja također pružaju kritičnu funkciju provjere zdravlja čvorova. Ako, kao rezultat takve provjere, čvor ne odgovara ili je preopterećen, tada se može ukloniti iz skupa za obradu zahtjeva, a zahvaljujući redundanciji vašeg sustava, opterećenje će se redistribuirati između preostalih radnih čvorova. .

Redovi čekanja

Do sada smo pogledali mnogo načina za brzo čitanje podataka. U isto vrijeme, još jedan važan dio skaliranja podatkovnog sloja je učinkovito upravljanje zapisima. Kada su sustavi jednostavni i imaju minimalno opterećenje obrade i male baze podataka, pisanje može biti predvidljivo brzo. Međutim, u složenijim sustavima ovaj proces može trajati neograničeno dugo. Na primjer, podaci se možda moraju pisati na više mjesta na različitim poslužiteljima ili indeksima ili je sustav jednostavno pod velikim opterećenjem. U slučajevima kada pisanje, ili čak bilo koji zadatak, traje dugo, postizanje performansi i dostupnosti zahtijeva ugradnju asinkronije u sustav. Uobičajen način za to je organiziranje reda čekanja zahtjeva.


Slika 1.20: Sinkroni zahtjev

Zamislite sustav u kojem svaki klijent zahtijeva zadatak daljinsko održavanje. Svaki od tih klijenata šalje svoj zahtjev poslužitelju, koji izvršava zadatke što je brže moguće i njihove rezultate vraća odgovarajućim klijentima. U malim sustavima gdje jedan poslužitelj (ili logična usluga) može opsluživati ​​dolazne klijente čim stignu, situacije ove prirode trebale bi dobro funkcionirati. Međutim, kada poslužitelj primi više zahtjeva nego što može obraditi, tada je svaki klijent prisiljen čekati da zahtjevi drugih klijenata završe obradu prije nego što se generira odgovor na vlastiti zahtjev. Ovo je primjer sinkronog zahtjeva, prikazanog u .

Ova vrsta sinkronog ponašanja može značajno pogoršati rad klijenta; zapravo, dok je u stanju mirovanja, klijent je prisiljen čekati dok ne dobije odgovor na zahtjev. Dodavanje dodatnih poslužitelja za suočavanje s opterećenjem sustava zapravo ne rješava problem; Čak i uz učinkovito balansiranje opterećenja, iznimno je teško osigurati ravnomjernu i poštenu raspodjelu opterećenja koja je potrebna za maksimiziranje produktivnosti klijenta. Štoviše, ako je poslužitelj za obradu ovog zahtjeva nedostupan (ili se srušio), tada će klijent povezan s njim također prestati raditi. Učinkovito rješenje ovog problema zahtijeva apstrakciju između zahtjeva klijenta i stvarnog posla koji se obavlja da bi se on poslužio.


Slika 1.21: Korištenje redova čekanja za upravljanje zahtjevima

Ulazni redovi. Način na koji red čekanja radi je vrlo jednostavan: zadatak stigne, uđe u red čekanja, a onda “radnici” prihvate sljedeći zadatak čim ga imaju priliku obraditi. (Vidi.) Ovi zadaci mogu biti jednostavni unosi u bazu podataka ili nešto tako složeno kao što je generiranje slike pretpregled za dokument. Kada klijent pošalje zahtjeve za zadatkom u red čekanja, više ne treba čekati rezultate izvršenja; umjesto toga, zahtjevi trebaju samo potvrdu da su ispravno primljeni. Ta potvrda kasnije može poslužiti kao referenca na rezultate rada kada ih naručitelj zatraži.

Redovi čekanja omogućuju klijentima da rade na asinkroni način, pružajući stratešku apstrakciju zahtjeva i odgovora klijenta. S druge strane, u sinkronom sustavu ne postoji razlika između zahtjeva i odgovora, pa se njima ne može upravljati odvojeno. U asinkronom sustavu, klijent šalje zadatak, servis odgovara porukom kojom potvrđuje da je zadatak primljen, a klijent tada može povremeno provjeravati status zadatka, tražeći rezultat tek nakon što je dovršen. Dok klijent postavlja asinkroni zahtjev, slobodan je raditi druge poslove, pa čak i postavljati asinkrone zahtjeve od drugih usluga. Potonji je primjer kako redovi i poruke rade u distribuiranim sustavima.

Redovi čekanja također pružaju određenu zaštitu od prekida i kvarova usluge. Na primjer, vrlo je lako stvoriti vrlo otporan red čekanja koji može ponovno pokušati zahtjeve za uslugom koji ne uspiju zbog trenutnih kvarova poslužitelja. Poželjnije je koristiti red čekanja za provedbu jamstava kvalitete usluge umjesto izlaganja klijenata privremenim prekidima usluge, što zahtijeva složeno i često nedosljedno rukovanje pogreškama na strani klijenta.

Redovi su temeljni princip u upravljanju distribuiranim prijenosom između različitih dijelova bilo kojeg distribuiranog sustava velikih razmjera i postoji mnogo načina za njihovu implementaciju. Postoji dosta implementacija čekanja čekanja otvorenog koda kao što je RabbitMQ.
ActiveMQ
BeanstalkD, ali neki koriste i usluge poput

  • skaliranje
  • distribuirano računalstvo
  • web razvoj
  • Kate Matsudaira
  • Dodaj oznake

    DIZAJN TEMELJEN NA TEHNOLOGIJI WEB SERVISA

    Specijalnost: 05.13.12 – Projektiranje sustava automatizacije

    Sankt Peterburg 2013. 2

    Rad je izveden na federalnoj državnoj proračunskoj obrazovnoj visokoškolskoj ustanovi strukovno obrazovanje„Državno elektrotehničko sveučilište u Sankt Peterburgu „LETI“ nazvano po. V. I. Uljanova (Lenjin), Odjel za sustave računalno potpomognutog projektiranja

    Znanstveni direktor– doktor tehničkih znanosti, profesor Dmitrevich Gennady Daniilovich

    Službeni protivnici:

    Doktor tehničkih znanosti, profesor Državnog elektrotehničkog sveučilišta u St. Petersburgu "LETI" nazvan po. U I.

    Uljanova (Lenjin), Odjel za automatiziranu obradu informacija i sustave upravljanja Kutuzov Oleg Ivanovič kandidat tehničkih znanosti, Otvoreno dioničko društvo "Koncern"

    "ISTRAŽIVAČKO-PROIZVODNA UDRUGA "AURORA",

    voditelj laboratorija Pakhomenkov Jurij Mihajlovič

    Vodeća organizacija: Savezna državna proračunska obrazovna ustanova visokog stručnog obrazovanja "St. Petersburg National Research University of Information Technologies, Mechanics and Optics"

    Obrana disertacije održat će se 23. svibnja 2013. u 16.30 na sastanku disertacijskog vijeća D212.238.02 Sankt-Peterburškog državnog elektrotehničkog sveučilišta "LETI" nazvanog po. U I.

    Ulyanova (Lenjina) na adresi: 197376, St. Petersburg, ul. Profesora Popova, 5.

    Disertacija se može pronaći u knjižnici Državnog elektroničkog tehničkog sveučilišta u Sankt Peterburgu. Sažetak je poslan "_" 2013.

    Znanstveni tajnik disertacijskog vijeća D212.238.02 N. M. Safyannikov

    OPĆI OPIS RADA

    Relevantnost istraživanje Rašireno uvođenje sustava računalno potpomognutog projektiranja u praksu inženjerskih problema značajno je ograničeno visoka cijena licencirani softver. Uz to, izrada vlastitih CAD sustava povezana je s ogromnim utroškom resursa i ne može se implementirati u kratkom vremenu, budući da razvoj modernih CAD sustava zahtijeva stotine čovjek-godina. Problem je kompliciran i činjenicom da se u stvarnim radnim situacijama multifunkcionalni integrirani CAD sustavi koriste u pravilu krajnje neučinkovito, budući da se prilikom rješavanja specifične zadatke Od glavnog sastava ovih sustava često se ne koristi više od 10-20% softvera koji je najspecifičniji za svaki odjel.

    Rješenje ovog hitnog problema mogla bi biti decentralizacija CAD arhitekture kroz prijelaz na distribuirane sustave projektiranja izgrađene na temelju internetskih tehnologija koje implementiraju zadaci komunikacije i razmjena informacija između aplikacija.

    Ove neovisno upravljane aplikacije su autonomne i mogu komunicirati jedna s drugom kako bi izvršile zajednički zadatak.

    Protokoli internetske tehnologije pružaju pouzdanu osnovu za povezivanje podsustava i ne zahtijevaju koordinirano korištenje resursa koji se nalaze u različitim mrežnim čvorovima, što značajno pojednostavljuje proces izgradnje i rada distribuiranog CAD sustava. Glavni uvjet za mogućnost implementacije ovakvog distribuiranog sustava je konzistentnost sučelja preko kojih se povezuju pojedini podsustavi. Kada je ovaj zahtjev ispunjen pojedinačne komponente može se kreirati distribuirani CAD od strane raznih programera i održavati na raznim mjestima odakle će biti isporučeni (moguće na komercijalnoj osnovi) potrošačima.

    Najučinkovitiji način kombiniranja podsustava u distribuiranu aplikaciju treba smatrati organizacijom poziva udaljenih procedura na temelju servisno orijentirane arhitekture korištenjem web usluga. Integracija temeljena na web servisima u razvoju decentraliziranih CAD sustava omogućuje prelazak na opis sučelja i interakcija temeljenih na XML-u, pružajući mogućnost izmjene i razvoja izgrađenog softvera uz zadržavanje odabranog sučelja. To omogućuje, zbog labave sprege pojedinih podsustava, da se osigura interakcija između usluga na proizvoljnoj platformi i da se postojeće aplikacije prilagode promjenjivim uvjetima dizajna.

    Glavni teret izvođenja računalnih operacija s takvom arhitekturom pada na web servise koji rješavaju sve probleme modeliranja sustava koji se projektiraju, a klijentskim aplikacijama dodijeljene su samo najjednostavnije funkcije pripreme podataka i prikaza rezultata modeliranja. Prilikom razvoja CAD-a korištenjem web usluga mogu se koristiti sljedeće vrste klijentske aplikacije:

    aplikacija konzolnog tipa, aplikacija prozorskog tipa i web aplikacija.

    Značajka konzolnih aplikacija je nedostatak grafičkog sučelja, ali njihova upotreba može biti korisna pri implementaciji jednostavnih CAD sustava za džepna računala s malom površinom ekrana.

    Aplikacije s prozorima omogućuju najbolju implementaciju grafički alati i najprikladniji su za razvoj distribuiranih sustava temeljenih na web uslugama. Za bilo koju web uslugu moguće je izgraditi nekoliko klijentskih aplikacija s različitim načinima implementacije dijaloške interakcije.

    Web aplikacije pružaju mogućnost postavljanja cijelog vašeg CAD softvera u potpunosti online. Prednost primjene ove strukture je otvoreni pristup za korištenje distribuiranog CAD-a kroz bilo koju vrstu preglednika, nedostatak ove vrste aplikacije je povećanje vremena potrebnog za opisivanje komponenti projektiranog sustava zbog čekanja odgovora na pojedinačne korake unosa podataka.

    Za bilo koju vrstu klijentske aplikacije, web servisi se pozivaju na isti način, a za svaki web servis moguće je koristiti bilo koji način implementacije klijentskih aplikacija napisanih na različitim jezicima. Ako je potrebno, takve klijentske aplikacije mogu se lako modificirati kako bi odgovarale promjenjivim uvjetima dizajna, a web usluga se također može proširiti kako bi uključila dodatne metode.

    Cilj rada i glavni ciljevi istraživanja Ova disertacija je posvećena istraživanju i razvoju metoda za konstruiranje platformski neovisnih distribuiranih CAD sustava korištenjem web servisa. Za konkretnu implementaciju odabran je zadatak razvoja distribuiranog automatiziranog sustava za projektiranje sklopova.

    Za postizanje ovog cilja potrebno je riješiti sljedeće zadatke:

    1. Razvijte opću metodologiju za izgradnju, offline testiranje i postavljanje na odabrani poslužitelj Java web usluga.

    Java softver za web usluge za automatizirani sustav projektiranja distribuiranih krugova.

    3. Istražiti i razviti metodologiju za izgradnju Java web usluga korištenjem tehnologije kompresije podataka.

    4. Provesti istraživanje i razvoj opće metodologije za izradu predložaka za klijentske aplikacije konzolnog i prozorskog tipa, kao i klijentske web aplikacije.

    5. Razviti metodologiju za implementaciju funkcioniranja web servisa i klijentskih aplikacija u heterogenim okruženjima.

    Metode istraživanja Pri izradi postavljenih zadataka u disertaciji korištene su osn opća teorija CAD, teorija modeliranja sustava, osnovna teorija matrica i grafova.

    Pouzdanost znanstvenih rezultata potvrđuju temeljne odredbe opće teorije CAD-a, teorije modeliranja, ispravnost korištenog matematičkog aparata te rezultati dobiveni testiranjem izrađenog softvera za web servise i klijentske aplikacije.

    Novi znanstveni rezultati distribuiranog CAD-a korištenjem web servisa.

    2. Razvijena je opća metodologija za implementaciju, offline testiranje i implementaciju Java web usluga na distribuiranom CAD poslužitelju.

    3. Istražio i razvio metode za izgradnju softvera Java web usluga za rješavanje tipičnih problema dizajna elektroničkih sklopova.

    5. Razvijena je opća metodologija za izgradnju konzolnih i prozorskih klijentskih aplikacija, kao i klijentskih web aplikacija.

    6. Razvijena je metodologija za implementaciju distribuiranog CAD softvera za organiziranje interakcije u heterogenim okruženjima web servisa i klijentskih aplikacija.

    Osnovne odredbe 1. Arhitektura distribuiranog uslužno orijentiranog CAD-a temeljenog na web uslugama.

    2. Opća metodologija za dizajn Java web usluga odozdo prema gore. 3. Metodologija implementacije softvera Java web usluga temeljenog na kompresiji podataka.

    Praktična vrijednost 1. Predložena distribuirana CAD struktura pruža mogućnost organiziranja interakcije između različitih web usluga na odabranoj platformi i prilagodbe aplikacija promjenjivim uvjetima projektiranja.

    2. Izgrađena biblioteka pomoćnih funkcija temeljena na kompresiji podataka povećava učinkovitost kreiranja softvera Java web servisa za sustave automatizacije projektiranja sklopova 3. Razvijena metodologija za implementaciju interakcije klijent-poslužitelj osigurava rad distribuiranih CAD sustava u heterogenim okruženjima.

    4. Softver razvijenog distribuiranog automatiziranog sustava za projektiranje sklopova sadrži invarijantnu jezgru za organiziranje i simboličkih i numeričkih faza Java programa, koji se mogu koristiti kao osnova za izgradnju sustava za projektiranje širokog spektra objekata.

    Implementacija i implementacija rezultata Distribuirani CAD sustav razvijen u diplomskom radu korištenjem web servisa implementiran je u Javi korištenjem WTP (Web Tools Platform) platforme. Praktični rezultat je CAD sustav za projektiranje distribuiranih krugova neovisan o platformi, koji provodi multivarijantno modeliranje nelinearnih krugova u stacionarnom načinu, u dinamičkom načinu, za proračun frekvencijske karakteristike, a također pruža izračune osjetljivosti prijenosnih funkcija i osjetljivosti varijabli u stabilnom stanju na varijacije parametara.

    Rezultati disertacije korišteni su u istraživanju državnog proračuna na temu „Razvoj modela i metoda analize i sinteze. inteligentni sustavi podrška odlučivanju za upravljanje složenim distribuiranim objektima" (šifra CAD-47 predmetni plan St. Petersburg Electrotechnical University 2011) i na temu "Matematičke i logičke osnove izgradnje virtualnih instrumentalnih okruženja" (šifra CAD-49 predmetni plan SPbGETU 2012) Rezultati disertacije uveden u inženjersku praksu znanstveno-proizvodne tvrtke "Modem" i korišten u obrazovnom procesu CAD odjela Državnog tehničkog sveučilišta u St. u smjeru "Informatika i računalno inženjerstvo".

    Provjera rada Glavne odredbe disertacije iznesene su i raspravljene na sljedećim konferencijama:

    1. 9. konferencija mladih znanstvenika “Navigacija i upravljanje prometom” – Sankt Peterburg;

    2. 5. međunarodna konferencija “Instrumentogradnja u ekologiji i sigurnosti ljudi” – Sankt Peterburg, SUAI;

    3. XIII, XIV, XVII međunarodne konferencije"Suvremeno obrazovanje: sadržaj, tehnologija, kvaliteta." – St. Petersburg, 4. 60, 61, 63. znanstvene i tehničke konferencije nastavnog osoblja SETU.

    Publikacije Glavni teorijski i praktični sadržaj disertacije objavljen je u 16 znanstvenih radova, uključujući 4 članka u vodećim recenziranim publikacijama preporučenim na trenutnom popisu VIK-a, 1 potvrdu o službena registracija računalni programi registrirani pri Saveznoj službi za intelektualno vlasništvo, patente i robne marke.

    Struktura i opseg disertacije Disertacija sadrži uvod, četiri poglavlja glavnoga sadržaja, zaključak i bibliografiju koja sadrži 69 izvora. Rad je prikazan na 154 stranice teksta, a sadrži 21 sliku i jednu tablicu.

    U uvodu obrazložena je relevantnost teme disertacije, formulirani su ciljevi istraživanja te je dan popis zadataka koje treba riješiti u radu.

    U prvom poglavlju Razmatraju se pitanja izgradnje arhitekture distribuiranih aplikacija, koja određuje opću strukturu, funkcije koje se izvode i odnos pojedinih komponenti sustava.

    Pokazuje se da arhitektura distribuirane aplikacije pokriva njezine strukturne i bihevioralne aspekte, kao i pravila integracije i korištenja, funkcionalnost, fleksibilnost, pouzdanost, izvedbu, ponovno korištenje, tehnološka ograničenja i pitanja korisničkog sučelja. Glavni cilj integracije autonomnih aplikacija (podsustava) u distribuiranu aplikaciju je osigurati funkcionalne veze koje osiguravaju potrebne interakcije uz minimalnu ovisnost između podsustava.

    Disertacija pokazuje da je takav mehanizam najučinkovitije osiguran pri korištenju arhitekture koja se temelji na interakciji između podsustava pomoću poziva udaljenih procedura, koji se koriste za razmjenu podataka i za izvođenje određenih radnji. U slučaju da aplikacija treba dohvatiti ili promijeniti bilo koju informaciju koju održava druga aplikacija, ona joj pristupa putem poziva funkcije.

    Za izgradnju distribuiranih CAD sustava, u radu se predlaže korištenje servisno orijentirane arhitekture (SOA) temeljene na modularnoj programskoj strukturi i standardiziranim sučeljima. SOA koristi objedinjavanje osnovnih operativnih procesa, principe višekratne upotrebe funkcionalnih elemenata i organizaciju temeljenu na integracijskoj platformi. Iako SOA arhitektura nije povezana ni s jednom specifičnom tehnologijom pozivanja daljinskih procedura, softverski podsustavi dizajnirani u skladu sa SOA-om obično se implementiraju kao skup web usluga povezanih korištenjem temeljnih protokola (SOAP, WSDL).

    Sustavi koji se temelje na servisno orijentiranoj arhitekturi pripadaju klasi multi-agentskih sustava (MAS), koji se tvore od više međusobno djelujućih inteligentnih agenata koji osiguravaju autonomiju, ograničenu zastupljenost i decentralizaciju pojedinih podsustava distribuiranog informacijskog računalnog sustava.

    Web usluge temelje se na XML standardu i omogućuju korisnicima interakciju s vanjskim sistemskim alatima putem Interneta, kao labavo povezane komponente softverskog sustava koje su dostupne za korištenje putem internetskih protokola. Disertacija pokazuje da u praktičnoj implementaciji distribuiranih CAD sustava korištenjem web servisa značajnu pozornost treba posvetiti pravilnoj podjeli funkcionalnih odgovornosti dodijeljenih glavnoj klijentskoj aplikaciji i web servisu koji s tom aplikacijom komunicira.

    Specifična metodologija implementacije web servisa uvelike ovisi o odabranom programskom jeziku. Rad pokazuje da prednost pri odabiru programskog jezika za izgradnju web servisa treba dati jeziku Java koji najpotpunije osigurava platformsku neovisnost implementiranih rješenja. Važan čimbenik u korist ovog izbora je i dostupnost moćne alatne podrške za razvoj web-baziranih aplikacija u Javi, koju pruža okruženje WTP (Web Tools Platform).

    U disertaciji je provedena komparativna analiza dviju glavnih metoda za izgradnju Java web servisa - odozdo prema gore (Bottom-Up), kada se prvo kreira Java klasa web servisa, a zatim se na temelju nje generira WSDL dokument, i odozgo prema dolje (Top-Down), kada se prvo kreira traženi WSDL dokument, a zatim se na temelju njega generira implementacijski kod web servisa. Na temelju usporedne procjene pokazalo se da dizajn web servisa treba provoditi metodom odozdo prema gore, budući da se u ovom slučaju WSDL dokument formira na temelju unaprijed kreirane Java klase koja opisuje sve parametre proslijeđene metoda web usluge i vrijednosti koje ova metoda vraća. U tom se slučaju sve informacije dostupne u Java klasi automatski pretvaraju u odgovarajući WSDL dokument, čiji sadržaj točno odgovara osnovnoj strukturi WSDL specifikacije i glavnim karakteristikama metode pozvane web usluge, čime se osigurava potpuna pouzdanost informacija sadržanih u WSDL dokumentu.

    Kako bi se omogućila praktična implementacija dizajna web servisa metodom odozdo prema gore, u disertaciji se predlaže metodologija za izradu dinamičkog web projekta i Java klase za implementaciju web servisa sadržanog u njemu s opisom pozvanih metoda, među kojima, uz glavne radne metode, nužno mora sadržavati i pomoćnu metodu bez argumenata, koja vraća string varijablu koja sadrži sve informacije o glavnim metodama koje osiguravaju funkcioniranje web servisa i opis formata proslijeđenih parametara, kao i vraćenih podataka, čime se osigurava samodokumentacija web servisa i mogućnost kreiranja i kontinuiranog poboljšanja klijentskih aplikacija neovisno o developeru web servisa.

    Disertacija nudi tehniku ​​organiziranja poziva informacijske metode web servisa izravno iz integriranog okruženja za razvoj Java aplikacija, u kojem se korištenjem URL-a web servisa može pristupiti Soap odgovoru informacijske metode i sadržaju njegovog povrata. vrijednost.

    U drugom poglavlju Razmatraju se metode za konstruiranje distribuiranih CAD web servisa uz pomoć kojih se izračunavaju nelinearni sklopovi u stacionarnom načinu rada, funkcije sklopa linearnih i lineariziranih sklopova izračunavaju se za frekvencijsku domenu, a nelinearni sklopovi izračunavaju se u dinamičkim načinima rada. Osim toga, podsustavi uključeni u distribuirani sustav uključuju web servis za izračun osjetljivosti funkcija sklopa u frekvencijskoj domeni i web servis za izračun osjetljivosti stacionarnih varijabli nelinearnih sklopova na varijacije parametara. Kao komponente sklopova dizajniranih na temelju razvijenih web servisa mogu se koristiti dvoterminalni uređaji tipa R, C, L, linearni frekvencijski ovisni kontrolirani izvori, nelinearni kontrolirani izvori, transformatori, bipolarni i unipolarni tranzistori, operacijska pojačala, kao i glavni izvori struje i napona.

    Osnova za takve metode je opća struktura matematičkog opisa sustava projektiranja sklopova. U disertaciji se daje usporedna ocjena mogućih metoda izbora koordinatne baze za opis lineariziranih sklopova, pri čemu se prednost daje proširenoj bazi nodalnih potencijala. Napominje se da je, uz nedvojbene prednosti, značajno ograničenje ove osnove nemogućnost matematičkog opisa komponenti sklopa jednadžbama u implicitnom obliku, što često komplicira, a ponekad i onemogućuje, njegovu praktičnu primjenu. Kako bi se ostvarila mogućnost opisivanja komponenti kruga jednadžbama u implicitnom obliku, rad daje modificiranu verziju proširene baze čvornih napona, koja je uzeta kao osnova za izradu softvera za web usluge.

    Pri razmatranju pitanja vezanih uz konstrukciju web servisa za probleme proračuna frekvencijskih svojstava elektroničkih sklopova, napominje se da se problemi ove vrste mogu podijeliti u dvije skupine. Prva skupina uključuje probleme proračuna linearnih krugova, čiji parametri komponenti imaju fiksne vrijednosti koje u procesu rješavanja problema ne ovise o koordinatnim vrijednostima radnih točaka komponenti. Druga skupina je povezana s proračunom frekvencijskih karakteristika lineariziranih krugova, čiji parametri ovise o koordinatama radnih točaka komponenti i te koordinate, kao i vrijednosti odgovarajućih lineariziranih parametara, moraju biti unaprijed izračunati.

    Za rješavanje prve skupine problema izračuna frekvencijskih svojstava elektroničkih sklopova pri izvođenju disertacijskog rada izgrađena je web usluga ModService_Java. Da biste mogli raditi s kompleksnim brojevima tijekom njegove izgradnje, stvorena je prilagođena klasa Complex, budući da u vrijeme ovog rada takva klasa nije dio standardnih Java API alata. Klasa Complex sadrži konstruktore i pomoćne funkcije za obradu složenih podataka i svega potrebne funkcije za izvođenje aritmetike i logičke operacije s kompleksnim brojevima, budući da Java jezik nema operator nadjačavanja za te operacije. Web servis prima opis komponenti sklopa i direktive za izračun kao argumente i vraća niz koji opisuje rezultate izračuna frekvencijskih karakteristika.

    Da biste izračunali stacionarni način rada, nemojte linearni sustavi U disertaciji se predlaže opća metodologija za izradu softvera za odgovarajuće web servise implementirana prilikom izrade web servisa StaticService_Java. Web servis također prima kao argumente opis komponenti kruga i direktive za izračun te vraća niz koji opisuje rezultate izračuna osnovnih varijabli i koordinata u stabilnom stanju za sve nelinearne komponente (diode, bipolarni tranzistori, unipolarni tranzistori, operacijska pojačala, nelinearni kontrolirani izvori). Nulti element vraćenog niza rezerviran je za prosljeđivanje informacija strani klijenta u slučaju nedostatka konvergencije proces računanja, što zahtijeva promjenu direktiva izračuna i ponovno pozivanje metode web usluge.

    U disertaciji se ispituju mogući pristupi razvoju metodologije za konstruiranje web servisa za proračun frekvencijskih karakteristika lineariziranih sklopova, čiji parametri ovise o koordinatama radnih točaka komponenti. Kao rezultat komparativne procjene, odabran je put za izgradnju web usluge temeljene na integriranom sustavu, koji uključuje softver za linearizaciju nelinearnih komponenti na izračunatim radnim točkama i za naknadni izračun frekvencijskih svojstava lineariziranog kruga. . Rad daje opću metodologiju za rješavanje takvog problema, čija je implementacija provedena u StFrqService_Java web servisu. Web servis prima kao argumente opis frekvencijski ovisnih i nelinearnih komponenti sklopa, kao i računske direktive, a kao rezultat njegovog rada vraća se niz koji opisuje rezultate izračuna frekvencijskih karakteristika. Na isti način kao u izračunu stabilnog stanja, nulti element vraćenog niza koristi se za prijenos informacija na stranu klijenta u slučaju da proces ne konvergira.

    Pri razvoju metodologije za konstruiranje web servisa za proračun dinamičkih modova nelinearnih sustava koristi se matematički opis sklopa u modificiranoj proširenoj bazi nodalnih potencijala, čime je moguće dobiti sustav jednadžbi algebarsko-diferencijalnog tipa. u najopćenitijem obliku. Eliminacija derivacija iz komponentnih jednadžbi provodi se na temelju korekcijskih formula koje proizlaze iz višekoračnih implicitnih metoda viših redova, dok je Gear metoda drugog reda usvojena kao glavna s mogućnošću povećanja njenog reda. Komponente iz čije su jednadžbe isključene derivacije su dvopolne mreže tipa C i L, diode, transformatori, bipolarni i unipolarni tranzistori, operacijska pojačala, kao i frekvencijski ovisni kontrolirani izvori. Za izračun vrijednosti autonomnih izvora koji čuvaju vrijednosti odgovarajućih varijabli u prethodnim koracima, pomoćne funkcije uzorkovanja dis_cmp izgrađene su za sve navedene cmp komponente sa svojstvima ovisnim o frekvenciji.

    Razvijena metodologija implementirana je u konstrukciju web servisa Dyn2Service_Java, koji na stranu klijenta vraća niz koji opisuje rezultate izračuna dinamičkih karakteristika.

    U trećem poglavlju Razmatraju se pitanja izgradnje web usluga metodama kompresije podataka. Relevantnost ovih pitanja određena je činjenicom da strukturu realnih sustava karakterizira slaba povezanost komponenti, što rezultira njihovim matematičkim opisom u obliku matrica prorijeđenog tipa, u kojima samo mali dio elemenata ima smislene informacije.

    Ova okolnost nameće zadatak promjene općeprihvaćenih pristupa oblikovanju i rješavanju jednadžbi kako bi se uštedjela memorija i povećala izvedba, što je ključno za funkcioniranje web sustava.

    U disertaciji je analizirana učinkovitost mogućih metoda za pretvaranje podataka u kompaktne nizove, na temelju čega je donesen zaključak o svrsishodnosti odabira metode koja se temelji na korištenju Shermanove kompresije i zahtijeva dvostupanjski postupak za izvođenje simboličkog i numerička obrada podataka. Značajna prednost usvojenog dvostupanjskog postupka je njegova podjela na dva neovisna dijela simboličke i numeričke faze. Budući da su gotovo svi stvarni problemi dizajna sklopa povezani s multivarijantnim proračunom kruga nepromijenjene strukture, simbolički stupanj se izvodi za svaku strukturu samo jednom, dok se numerički stupanj provodi desetke, stotine, a ponekad i tisuće puta.

    Međutim, dvofazni postupak karakterizira prilično složena logika konstruiranja programskog koda, a pri prelasku na opis temeljen na kompresiji podataka potrebna je značajna izmjena prethodno kreiranog cjelovitog opisa problema.

    U disertaciji se ispituje blok dijagram implementacije dvostupanjske obrade podataka pri izgradnji Java aplikacija, prema kojemu se u fazi simboličke analize formira indeksna matrica cjelobrojnog tipa za koju je simbolički stupanj LU faktorizacije. provedeno, gdje su redovi (stupci) poredani kako bi se smanjio broj elemenata koji se ponovno pojavljuju s vrijednostima različitim od nule. U završnom koraku simboličke faze konstruiraju se koordinatne matrice koje sadrže informacije o strukturi indeksne matrice, zbog čega se ta matrica može brisati.

    U numeričkoj fazi, u skladu s poznatim formatom opisa, formiraju se kompaktne matrice i vrši se njihova virtualna numerička LU faktorizacija na temelju algoritma konstruiranog u radu. Nakon završetka numeričke faze LU faktorizacije, sve varijable sustava se izračunavaju i rekodiraju prema permutacijama redaka (stupaca) provedenim u fazi simboličke obrade. Ovaj se problem, u skladu s općom tehnikom LU faktorizacije, obično rješava korištenjem pomaka unatrag i naprijed kroz retke izvorne matrice, ali budući da ne postoji potpuna matrica kada se koristi kompresija podataka, i pomaci naprijed i natrag izvode se pomoću posebnih algoritama koji provode te zadatke pomoću kompresije podataka.

    Diplomski rad pokazuje da su moguća dva različita pristupa razvoju softvera web usluga temeljenog na kompresiji podataka. Prvi je povezan s obradom postojećeg softvera, temeljenog na cjelovitom matematičkom opisu u obliku originalnih matrica s rijetkom strukturom, kako bi se izgradila modificirana metoda korištenjem kompaktnih polja. Posjedovanje prototipa uvelike pojednostavljuje proces kreiranja metode bazirane na kompresiji podataka, no za najučinkovitije korištenje raspoloživog materijala potrebno je imati metodologiju za razvoj modificiranih verzija web servisa. Ova je tehnika izgrađena u disertaciji i na temelju nje su modificirane sve gore spomenute web usluge. Rezultat je okvir web usluga koji sadrži dvije glavne radne metode, jednu temeljenu na potpunom opisu modeliranog sklopa, a drugu koja koristi kompaktnu tehnologiju obrade podataka.

    Drugi pristup koristi se u slučajevima kada ne postoji prototip za razvoj metode koja se temelji na kompresiji podataka. U ovom slučaju, i simbolička i numerička faza implementiraju se u nedostatku potpunog opisa simuliranog kruga u obliku rijetke matrice, što značajno komplicira proces programiranja. U disertaciji se drugi pristup koristi za izgradnju web servisa koji izračunavaju osjetljivost sklopnih prijenosa i varijabli stacionarnog načina rada sklopova na varijacije parametara njihovih komponenti.

    Za izračun osjetljivosti frekvencijskih karakteristika funkcija sklopa izgrađen je web servis VaryService koji sadrži metodu temeljenu na diferencijaciji jednadžbi i metodu temeljenu na povezanim sklopovima.

    Na temelju diferencijacije jednadžbi, metoda web servisa VaryService omogućuje izračunavanje vrijednosti apsolutne i relativne vektorske osjetljivosti funkcija sklopa za frekvencijsku domenu na odabrani parametar varijable za cijeli skup osnovnih varijabli. Varijabilni parametri mogu biti vrijednosti otpora, kapacitivnosti ili induktiviteta proizvoljnog kruga s dva priključka tipa R, C ili L i parametri prijenosa kontroliranih frekvencijski ovisnih izvora kao što su ITUN, INUN, ITUT ili INUT.

    Metoda web servisa VaryService pomoću priloženih sklopova omogućuje izračunavanje vrijednosti i apsolutne i relativne skalarne osjetljivosti funkcija sklopa za frekvencijsku domenu s obzirom na sve moguće parametre varijable za odabranu vrijednost analizirane varijable. Softverski blok dijagram predložen u ovom radu omogućuje vam korištenje rezultata formiranja kompaktnih nizova glavnog kruga za izračun priključenog kruga. Varijabilni parametri u metodi koja se temelji na pridruženom krugu mogu biti isti parametri kao i za metodu koja se temelji na diferencijaciji jednadžbi.

    Za izračun osjetljivosti varijabli koje definiraju stacionarni način rada nelinearnih sklopova na varijacije njihovih parametara razvijen je web servis StVaryService koji također sadrži dvije metode od kojih se jedna temelji na diferencijaciji jednadžbi, a druga na priloženoj strujni krug. Promjenjivi parametri u obje metode mogu biti vrijednosti otpora otpornika i parametri prijenosa kontroliranih izvora kao što su ITUN, INUN, ITUT ili INUT.

    Algoritam za izračunavanje apsolutne osjetljivosti osnovnih varijabli stacionarnog načina rada metodom diferencijacije jednadžbi predviđa diferencijaciju nelinearne jednadžbe strujnog kruga po osnovnim varijablama i varijabilnim parametrima, što omogućuje dobivanje jednadžbe osjetljivosti čije rješenje određuje željenu vektorsku osjetljivost varijabli stacionarnog načina rada.

    Praktična primjena metode temelji se na diferenciranju jednadžbi variranih komponenti korištenjem rezultata proračuna osnovnih varijabli stacionarnog načina rada nelinearnog kruga.

    Algoritam metode za izračunavanje skalarne osjetljivosti varijabli stacionarnog načina rada pomoću pridruženog kruga predviđa izračun osnovnih varijabli stacionarnog načina rada glavnog strujnog kruga i izračun osnovnih varijabli lineariziranog povezanog kruga, koji se izvodi na temelju prethodno generiranih kompaktnih nizova za glavni krug. Rezultat druge metode je niz apsolutnih i relativnih vrijednosti osjetljivosti odabrane varijable sklopa za sve promjenjive parametre komponente.

    U četvrtom poglavlju raspravlja se o metodama za izgradnju prilagođenih klijentskih aplikacija koje omogućuju interakciju s web servisima, a koje se, nakon što su izgrađene u alatu za razvoj Java aplikacija, moraju postaviti na distribuirani CAD poslužitelj. Da biste implementirali web uslugu, morate znati njene glavne karakteristike, uključujući naziv usluge, naziv klase, nazive metoda i vrstu WSDL dokumenta.

    U diplomskom radu dane su relevantne informacije o razvijenim i gore opisanim web uslugama za distribuirani sustav projektiranja sklopova, te u informacijskim metodama pod nazivom getInf koje su uključene u sve razvijene web usluge. Rad predlaže jednostavnu tehniku ​​za izravnu implementaciju web usluga na poslužitelju i raspravlja moguće načine uvoz WSDL datoteke na stranu klijenta. Na temelju usporedne analize, rad pokazuje da se ispravnost operacije isporuke WSDL datoteke s udaljenog web servisa klijentskoj aplikaciji može najučinkovitije osigurati korištenjem alata Web Services Explorer, a najoptimalniji redoslijed uvoza WSDL datoteka u početni okvir klijentske aplikacije je uspostavljena.

    Nakon što je WSDL datoteka isporučena projektu klijentske aplikacije, daljnja transformacija početnog kostura projekta u cjelovitu klijentsku aplikaciju predlaže se u dvije faze. Prva faza takve transformacije je stvaranje proxy objekta u početnom okviru projekta, a druga faza je formiranje klasa koje sadrže metode koje podržavaju funkcioniranje proxy objekta i interakciju usluga na daljinu s klijentskom aplikacijom. Implementacija prve faze svodi se na dopunu projekta operatorima koji kreiraju proxy objekt, druga faza se provodi pomoću alata Web Services platforme WTP, čiji su najučinkovitiji načini korištenja navedeni u disertaciji.

    Finalizacija početnog kostura dizajna u cjelovitu klijentsku aplikaciju može se izvršiti na različite načine za različite tipove te aplikacije. Najjednostavniji način za pokretanje klijentskih aplikacija je dizajnirati ih na temelju konzolnih aplikacija koje nemaju grafičko sučelje. Rad predlaže generalizirani strukturna shema implementacija distribuirane CAD konzolne aplikacije za izračun elektroničkih sklopova, koja se može koristiti za bilo koji web servis unatoč nizu mogućih specifičnih rješenja.

    Tijekom diplomskog rada implementirane su klijentske konzolne aplikacije za sve gore navedene distribuirane CAD web usluge. Njihove izvorne datoteke mogu se isporučiti standardnim sredstvima putem interneta do klijenta i korišteni su kako za izradu najjednostavnije verzije konzolne aplikacije za interakciju s distribuiranim CAD uslugama, tako i kao pomoć u podučavanju za razvoj naprednijih prozorskih aplikacija.

    Klijentske aplikacije s prozorima pružaju najveće mogućnosti za funkcioniranje u distribuiranom CAD-u, budući da u najvećoj mjeri omogućuju korištenje grafičkih elemenata. Za ovu web uslugu možete izgraditi različite verzije klijentskih aplikacija s različitim načinima organiziranja dijaloga s korisnikom i prikaza rezultata izračuna. Rad je uspostavio minimalni skup dijaloških alata koji osiguravaju potpunu interakciju s uslugom. Takav skup sadrži izbornik prozora i skup dijaloških okvira za unos podataka i prikaz rezultata izračuna, kao i upravljanje naredbama za izračun.

    U disertaciji je predložena metodologija izgradnje klijentskih web aplikacija na temelju koje su razvijeni JSP predlošci stranica koji obavljaju funkcije odabira i prelaska na druge stranice, unosa određenog skupa varijabli s prijelazom na početnu stranicu, cikličkog unosa određeni skup varijabli s prijelazom na sljedeću stranicu prema vrijednostima tih varijabli, pozivajući traženi web servis i prikazujući rezultate njegovog rada. Korištenje klijentskih web aplikacija omogućuje postavljanje cjelokupnog programskog koda distribuiranog sustava na mrežu, a ovisno o usvojenom načinu postavljanja klijentskih i poslužiteljskih aplikacija na mrežu, pozivanje usluge moguće je s jedne ili s nekoliko web stranica.

    Pozitivna značajka ove arhitekture je mogućnost organiziranja pristupa distribuiranom CAD-u putem proizvoljnog web preglednika bez potrebe za izgradnjom vlastite klijentske aplikacije; nedostatak ovog pristupa organiziranju distribuiranog CAD-a je neizbježno povećanje vremenskog intervala potrebnog za opisivanje komponente sustava u procesu interaktivne interakcije.

    U disertaciji je izgrađena metodologija za organiziranje procesa postavljanja klijentskih aplikacija, čija je svrha osigurati mogućnost pokretanja klijentske aplikacije korištenjem sredstava na razini cijelog sustava bez korištenja alata za razvoj aplikacija, kako za klijentske aplikacije konzolnog tipa, tako i za klijentske aplikacije prozorskog tipa, pokretanje treba izvesti kroz naredbeni redak, a za web aplikacije - iz preglednika. Informacije o lokaciji web usluge prenose se putem objekta proxy klase, koji se prvo mora konfigurirati na odgovarajući URL.

    U radu se napominje da se prilikom postavljanja konzolne aplikacije najprije mora promijeniti kodna stranica projekta, za što je potrebno prijeći s kodne stranice na kojoj se prikazuje ćirilični tekst u svim integriranim sustavima alata koji rade s Java kodom, na kodnu stranicu u kojem će se ćirilični tekst normalno prikazati u prozoru naredbenog retka.

    Disertacija pokazuje da se pri korištenju klijentskih web aplikacija, ovisno o odabranoj komunikacijskoj strukturi između klijentskih i poslužiteljskih računala, informacije o lokaciji web servisa mogu prenositi i preko objekta proxy klase i putem URL-a unesenog iz preglednika. U radu se također raspravlja o odgovarajućim metodama interakcije klijenta sa servisom pri implementaciji njihovih funkcionalnih zadataka za odabranu komunikacijsku strukturu.

    Standardizacija SOAP-a pruža mogućnost međusobnog povezivanja labavo povezanih aplikacija bez obzira na njihovu implementacijsku platformu, što omogućuje korištenje web usluga kako bi se osigurala učinkovita i optimalna upotreba širokog raspona heterogenih, labavo povezanih resursa u distribuiranim aplikacijama. Disertacija daje opću metodologiju za izgradnju softvera za interakciju objekta proxy klase .NET aplikacije s uslugom Java/J2EE okruženja. Na temelju ove metodologije implementirana je organizacija interakcije između razvijenih Java web servisa i Windows klijentskih aplikacija izgrađenih u .NET okruženju temeljenom na jeziku C#.

    Sposobnost rada s distribuiranim CAD-om u heterogenim okruženjima značajno proširuje opseg njegove primjene.

    U pritvoru formulirani su glavni znanstveni i praktični rezultati dobiveni na temelju istraživanja provedenog u disertaciji.

    Glavni rezultati Radovi 1. Razvijena je arhitektura za distribuirani servisno orijentirani CAD temeljen na web uslugama, koju karakterizira decentralizirana struktura, neovisnost o platformi i mogućnost provođenja kontinuirane modernizacije pojedinih podsustava kako bi se njihova svojstva prilagodila promjenjivim uvjetima projektiranja.

    2. Implementirana je opća metodologija za izradu Java web usluga i odgovarajućih WSDL dokumenata korištenjem metode odozdo prema gore, kao i njihovu isporuku distribuiranom CAD poslužitelju nakon offline testiranja u razvojnom okruženju.

    3. Razvijena je metodologija za izradu softvera za Java web usluge za rješavanje tipičnih problema modeliranja kontinuiranih sustava u automatiziranom dizajnu elektroničkih sklopova.

    4. Izgrađena je biblioteka pomoćnih funkcija za implementaciju softvera Java web usluga temeljenog na kompresiji podataka.

    5. Razvijena je opća metodologija za konstruiranje predložaka za konzolne i prozorske klijentske aplikacije za sustav automatizacije projektiranja distribuiranih sklopova i implementirana je organizacija funkcioniranja distribuiranog CAD sustava s klijentskim web aplikacijama.

    6. Razvijena je metodologija za izgradnju distribuiranih CAD sustava koja osigurava interakciju Java web servisa i klijentskih aplikacija proizvoljan tip u heterogenim sredinama.

    1. Anisimov D.A. Izgradnja sustava računalno potpomognutog projektiranja temeljenih na web uslugama [Tekst] / Anisimov D.A. Gridin V.N., Dmitrevich G.D. // Automatizacija u industriji – 2011. – br. 1 – str. 9-12.

    2. Anisimov D.A. Izgradnja sustava računalno potpomognutog dizajna temeljenih na web tehnologijama [Tekst] / Gridin V.N., Dmitrevich G.D., Anisimov D.A. // Informacijske tehnologije - 2011. - br. 5. – str. 23-27.

    3. Anisimov D.A. Izgradnja web servisa za sustave automatizacije projektiranja sklopova [Tekst] / Gridin V.N., Dmitrevich G.D., Anisimov D.A. // Informacijske tehnologije i računalni sustavi - 2012. - br. 4. – str. 79-84.

    4. Anisimov D.A. Metode konstruiranja sustava automatizacije za projektiranje sklopova na temelju web usluga [Tekst] / Anisimov D.A. // Vijesti Elektrotehničkog sveučilišta u St. Petersburgu "LETI" - 2012. - br. 10. – St. Petersburg: Izdavačka kuća St. Petersburg Elektrotehničkog sveučilišta “LETI”, – str. 56-61.

    5. Anisimov D.A. Pristup web resursima u CAD sustavima za navigaciju i upravljanje [Tekst] / Laristov D.A., Anisimov D.A. // Žiroskopija i navigacija. 2007. br. 2. –S. 106.

    Web usluge- nova riječ u tehnologiji distribuiranih sustava. Specifikacija Otvoreno mrežno okruženje (ONE) Sun Microsystems Corporation i inicijativa. Microsoftov Net pruža infrastrukturu za pisanje i implementaciju web usluga. U trenutno Postoji nekoliko definicija web usluge. Web usluga može biti bilo koja aplikacija koja ima pristup webu, kao što je web stranica s dinamičkim sadržajem. U užem smislu, web usluga je aplikacija koja pruža otvoreno sučelje koje mogu koristiti druge aplikacije na webu. Specifikacija ONE Sun zahtijeva da web usluge budu dostupne preko HTTP-a i drugih web protokola, da se omogući razmjena informacija putem XML poruka i da se mogu pretraživati ​​putem posebne usluge- usluge pretraživanja. Za pristup web servisima razvijen je poseban protokol - Jednostavan Pristup objektu Protokol (SOAP), koji uvodi interoperabilnost temeljenu na XML-u za mnoge web usluge. Web usluge su posebno atraktivne jer mogu pružiti visok stupanj kompatibilnosti između različitih sustava.

    Hipotetska web usluga razvijena prema Sunovoj ONE arhitekturi mogla bi imati oblik registra usluga koji objavljuje opis web usluge kao dokument .

    Ogroman potencijal web usluga nije određen tehnologijom koja se koristi za njihovu izradu. HTTP, XML i drugi protokoli koje koriste web usluge nisu novi. Interoperabilnost a skalabilnost web usluga znači da programeri mogu brzo izgraditi veće aplikacije i veće web usluge od manjih web usluga. Specifikacija Sun Open Net Environment opisuje arhitekturu za stvaranje inteligentne web usluge.Inteligentne web usluge koriste zajedničko radno okruženje. Dijeljenjem konteksta, inteligentne web usluge mogu izvesti standardnu ​​autentifikaciju za financijske transakcije, dati preporuke i smjernice na temelju geografske lokacije tvrtki uključenih u transakciju. e-poslovanje.

    Za izradu aplikacije koja je Web servis potrebno je primijeniti niz tehnologija.

    Odnos između ovih tehnologija konvencionalno je prikazan na slici. 10.1.


    Riža. 10.1.

    Zapravo, web usluge su jedna od mogućnosti implementacije komponentna arhitektura, u kojem se aplikacija smatra skupom komponenti koje međusobno djeluju. Kao što je već mnogo puta rečeno, interakcija komponenti se nastavlja različite platforme, prilično je složen zadatak, posebno zahtijeva razvoj komunikacijski protokol , uzimajući u obzir značajke prijenosa podataka između različitih platformi. Jedna od glavnih ideja na kojima se temelji razmatrana tehnologija web usluga je odbacivanje binarnog zapisa komunikacijski protokol. Poruke se razmjenjuju između komponenti sustava odašiljanjem XML poruka. Budući da su XML poruke tekstualne datoteke, transportni protokol prijenosa može biti vrlo različit - XML ​​poruke se mogu prenositi putem HTTP, SMTP, FTP protokola, a korištenje različitih transportnih protokola je transparentno za aplikacije. Kao što je već spomenuto, poziva se protokol koji omogućuje interakciju web usluga SAPUN (Jednostavni protokol za pristup objektu). Definiran je na temelju XML-a. SAPUN osigurava interakciju distribuiranih sustava, bez obzira na korišteni objektni model ili platformu. Podaci unutar SAPUN prenosi u obliku XML dokumenata posebnog formata. SAPUN ne nameće nikakav poseban transportni protokol. Međutim, u stvarne primjene prijenos se najčešće provodi SAPUN-poruke putem HTTP protokola. Također se široko koristi kao prijevoz SMTP protokol, FTP pa čak i "čisti" TCP. Tako, SAPUN definira mehanizam pomoću kojeg Web usluge mogu međusobno pozivati ​​funkcije. U određenom smislu, rad ovog protokola podsjeća na udaljeni poziv procedure - pozivatelj zna ime web servisa, naziv njegove metode, parametre koje metoda prihvaća i formalizira poziv ove metode u obliku SAPUN-poruku i šalje je web servisu.

    Međutim, opisani pristup prikladan je samo ako su unaprijed poznati “potpisi” metoda koje Web servis implementira. Ali što ako to nije slučaj? Kako bi se riješio ovaj problem, u model web usluge uveden je dodatni sloj - sloj za opisivanje servisnih sučelja. Ovaj sloj je predstavljen kao opis WSDL.

    Kao što definira W3C, " WSDL - XML format za opis mrežne usluge kao skup konačnih operacija koje rade pomoću poruka koje sadrže informacije orijentirane na dokument ili proceduru." Dokument WSDL u potpunosti opisuje sučelje web usluge s vanjskim svijetom. Pruža informacije o uslugama koje se mogu dobiti pomoću metoda usluga i kako pristupiti tim metodama. Dakle, ako potpis metode web usluge nije točno poznat (na primjer, promijenio se tijekom vremena), ciljna web usluga može se upitati WSDL-opis - datoteka u kojoj će biti sadržane te informacije.

    Sljedeći sloj tehnologije je usluga Univerzalni opis, otkriće i integracija (UDDI).Ova tehnologija uključuje održavanje registra web usluga. Spajanjem na ovaj registar potrošač može pronaći web usluge koje najbolje odgovaraju njegovim potrebama. Tehnologija UDDI omogućuje pretraživanje i objavu željene usluge, a te radnje može obavljati osoba ili neka druga Web usluga ili poseban klijentski program. UDDI, pak, također je web usluga.

    Stoga su web usluge još jedna implementacija sustava međuprogramska oprema. Posebnost ove tehnologije je njezina neovisnost o korištenom softveru i hardver, kao i korištenje naširoko korištenih otvoreni standardi(kao što je XML) i standardne komunikacijske protokole.

    Trenutno su web usluge vrlo aktivno promovirana tehnologija i pozicionirane su kao sredstvo za rješavanje brojnih problema.

    Treba napomenuti da se pomoću njih mogu graditi i tzv. „standardne“ aplikacije, kod kojih je poslužiteljski dio zamišljen kao Web servis.

    Jednostavni protokol za pristup objektu (SOAP)

    Osnovni protokol koji osigurava interakciju u okruženju web usluga je

    Poglavlje 1. Opća metodologija za izgradnju distribuiranih sustava temeljenih na web uslugama

    1.1. Servisno orijentirana arhitektura.

    1-2. Metodologija izgradnje Java web servisa.

    1-3. Preliminarno testiranje web usluga.

    Poglavlje 2. Metode za izgradnju softvera za web usluge automatiziranog sustava projektiranja distribuiranih krugova

    2-1. Matematička podrška sustavima automatizacije projektiranja sklopova.

    2-2. Web servis za projektiranje linearnih sustava u frekvencijskoj domeni.

    2-3. Web servis za proračun stacionarnog stanja nelinearnih sustava.

    2-4. Uslužno orijentirani integrirani sustav za frekvencijsku analizu lineariziranih sklopova.

    2-5. Web servis za proračun nelinearnih sustava u dinamičkom načinu rada.

    Poglavlje 3. Izgradnja web usluga na temelju metoda kompresije podataka.

    3-1. Metode eliminacije nulti elementi tijekom skladištenja i obrade matrica.

    3-2. Metodologija razvoja modificiranih verzija web servisa.

    3-2-1. Modifikacija u simboličkoj fazi.

    3-2-2. Modifikacija u numeričkoj fazi.

    3-3. Web servis za izračunavanje osjetljivosti funkcija sklopa na varijacije parametara.

    3-3-1. Konstrukcija metode web servisa temeljene na diferencijaciji jednadžbi.

    3-3-2. Metoda web usluge temeljena na priloženoj shemi.

    3-4. Web servis za izračunavanje osjetljivosti stacionarnih varijabli.

    3-4-1. Konstrukcija metode web servisa za izračun vektorske osjetljivosti varijabli.

    3-4-2. Metoda web servisa za izračun skalarne osjetljivosti varijabli.

    Poglavlje 4. Metode za izgradnju klijentskih aplikacija distribuiranih CAD sustava.

    4-1. Tehnika za izgradnju klijentskih aplikacija temeljenih na WSDL dokumentu.

    4-1-1. Postavljanje web usluga na Apache poslužitelj Mačak.

    4-1-2. Tehnika za uvoz WSDL datoteke i izgradnju kostura klijentske aplikacije.

    4-2. Klijentske aplikacije sustava za projektiranje distribuiranih sklopova.

    4-2-1. Metodologija za izgradnju konzolnih klijenata.

    4-2-2. Metodologija za izradu prozorskih klijentskih aplikacija.

    4-2-3. Metodologija izrade klijentskih web aplikacija.

    4-3. Implementacija klijentskih Java aplikacija.

    4-3-1. Implementacija Java klijentskih aplikacija pokrenutih iz naredbenog retka.

    4-3-2. Implementacija Java klijentskih aplikacija pokrenutih iz web preglednika.

    4-4. Organizacija interakcije klijentskih aplikacija s web servisima u heterogenim okruženjima.

    Uvod u disertaciju (dio sažetka) na temu "Istraživanje i razvoj metoda za konstruiranje distribuiranih sustava računalno potpomognutog projektiranja temeljenih na tehnologiji web usluga"

    Široko uvođenje sustava računalno potpomognutog projektiranja u praksu rješavanja inženjerskih problema značajno je ograničeno visokom cijenom licenciranog CAD softvera. Istodobno, stvaranje vlastitih sustava računalno potpomognutog projektiranja povezano je s velikim utroškom resursa i ne može se implementirati u kratkom vremenu, budući da razvoj modernih CAD sustava zahtijeva stotine čovjek-godina. Problem je kompliciran i činjenicom da se u stvarnim radnim situacijama višenamjenski integrirani CAD sustavi (primjerice Micro-Cap 7, PSPICE, DISPC) koriste u pravilu krajnje neučinkovito, budući da se u procesu rješavanja specifičnih problema iz osnovni softver ovih sustava, ne više od 10-20% softvera koji je najspecifičniji za svaki odjel.

    Rješenje ovog hitnog problema može biti decentralizacija CAD arhitekture prelaskom na distribuirane sustave projektiranja izgrađene na temelju internetskih tehnologija koje provode zadatke komunikacije i razmjene informacija između aplikacija. Ove neovisno upravljane aplikacije su autonomne i mogu komunicirati jedna s drugom kako bi izvršile zajednički zadatak. Protokoli internetske tehnologije pružaju pouzdanu osnovu za povezivanje podsustava, a za razliku od Grid tehnologija ne zahtijevaju koordinirano korištenje resursa koji se nalaze u različitim mrežnim čvorovima, što značajno pojednostavljuje proces izgradnje i rada distribuiranog CAD sustava. Glavni uvjet za mogućnost implementacije takvog distribuiranog sustava je konzistentnost sučelja preko kojih pojedini podsustavi mogu međusobno komunicirati. Ako je ovaj zahtjev ispunjen, pojedinačne komponente distribuiranog CAD sustava mogu kreirati različiti programeri i održavati ih na različitim mjestima, odakle će se isporučivati, po mogućnosti na komercijalnoj osnovi, potrošačima.

    Najučinkovitija metoda za integraciju pojedinačnih podsustava u distribuiranu aplikaciju je udaljeni poziv procedure temeljen na servisno orijentiranoj arhitekturi korištenjem tehnologije web usluga. Integracija temeljena na web servisima u razvoju decentraliziranih CAD sustava omogućuje prijelaz na opis sučelja i interakcija temeljenih na XML-u, pružajući mogućnost izmjene i razvoja softvera, pod uvjetom da se sačuva odabrano sučelje. To omogućuje, zbog labave sprege pojedinih podsustava, da se osigura interakcija između različitih usluga na bilo kojoj platformi i da se postojeće aplikacije prilagode promjenjivim uvjetima dizajna.

    Glavni teret izvođenja računalnih operacija s takvom arhitekturom pada na web servise koji rješavaju sve probleme modeliranja sustava koji se projektiraju, a klijentskim aplikacijama dodjeljuju se samo najjednostavnije funkcije pripreme početnih podataka i prikaza rezultata modeliranja. Prilikom izgradnje CAD sustava temeljenog na tehnologiji web servisa mogu se implementirati sljedeće vrste klijentskih aplikacija: aplikacija konzolnog tipa, aplikacija prozorskog tipa i web aplikacija.

    Značajka konzolnih aplikacija je nedostatak grafičkog sučelja, ali njihova upotreba može biti korisna pri implementaciji jednostavnih CAD sustava za džepna računala s malom površinom ekrana.

    Prozorske aplikacije omogućuju najbolju implementaciju grafičkog sučelja i najprikladniji su za razvoj CAD sustava temeljenih na tehnologiji web usluga. Istodobno, za bilo koju web uslugu moguće je izgraditi nekoliko aplikacija iste vrste s različitim načinima implementacije dijaloške interakcije.

    Web aplikacije pružaju mogućnost potpunog postavljanja cjelokupnog softvera sustava distribuiranog dizajna na Internet. Prednost aplikacije takve strukture je otvoren pristup korištenju distribuiranog CAD-a putem preglednika bilo koje vrste; nedostatak aplikacije ove vrste je povećanje vremena potrebnog za unos opisa komponenti modeliranog. sustava, uzrokovan očekivanjem reakcije na svakom koraku unosa početnih podataka.

    Za bilo koju vrstu klijentske aplikacije, web usluge se pozivaju na isti način, a za svaku web uslugu možete koristiti bilo koji način za izgradnju klijentskih aplikacija napisanih u različitim programskim jezicima. Ako je potrebno, takve klijentske aplikacije mogu se jednostavno modificirati u skladu s promjenjivim uvjetima dizajna, također je moguće proširiti web uslugu uključivanjem dodatnih metoda.

    Svrha ove disertacije je istraživanje i razvoj metoda za konstruiranje platformski neovisnih distribuiranih računalno potpomognutih sustava projektiranja temeljenih na servisno orijentiranoj arhitekturi korištenjem tehnologije web usluga. Za specifičnu implementaciju odabrani zadatak je izgradnja distribuiranog automatiziranog sustava za projektiranje sklopova, koji bi trebao provoditi multivarijantno modeliranje linearnih i nelinearnih elektroničkih sklopova u stacionarnom načinu rada, u frekvencijskoj domeni, u vremenskoj domeni, te izračunati osjetljivost (prijenosnih) funkcija sklopa i osjetljivosti varijabli stacionarnog načina rada na varijacije parametara.

    Za postizanje ovog zadatka potrebno je:

    Razviti opću metodologiju za izgradnju, offline testiranje i postavljanje Java web usluga na poslužitelj.

    Provođenje istraživanja i razvoja softvera Java web usluga za automatizirani sustav projektiranja distribuiranih krugova.

    Istraživanje i razvoj metodologije za izgradnju Java web usluga temeljenih na tehnologiji kompresije podataka.

    Provesti istraživanje i razvoj opće metodologije za izradu predložaka za klijentske aplikacije konzolnog i prozorskog tipa, kao i klijentske web aplikacije.

    Razviti metodologiju za implementaciju funkcioniranja web servisa u heterogenim okruženjima.

    Disertacija sadrži uvod, četiri poglavlja glavnoga sadržaja, zaključak i bibliografiju koja sadrži 69 naslova. Rad je prikazan na 154 stranice teksta, a uključuje 21 sliku i jednu tablicu.

    Zaključak disertacije na temu "Sustavi automatizacije dizajna (po industriji)", Anisimov, Denis Andreevich

    Glavni rezultati rada na disertaciji su sljedeći:

    1. Razvijena je arhitektura za distribuirani uslužno orijentirani CAD temeljen na web uslugama, karakteriziran decentraliziranom strukturom, neovisnošću o platformi i sposobnošću provođenja kontinuirane modernizacije pojedinačnih podsustava kako bi se njihova svojstva prilagodila promjenjivim uvjetima projektiranja.

    2. Implementirana je opća metodologija za izradu Java web usluga i odgovarajućih WSDL dokumenata korištenjem metode odozdo prema gore, kao i njihovu isporuku distribuiranom CAD poslužitelju nakon offline testiranja u razvojnom okruženju.

    3. Razvijena je metodologija za izgradnju softvera Java web usluga za rješavanje tipičnih problema modeliranja kontinuirani sustavi u automatiziranom dizajnu elektroničkih sklopova.

    4. Izgrađena je biblioteka pomoćnih funkcija za implementaciju softvera Java web usluga temeljenog na kompresiji podataka.

    5. Razvijena je opća metodologija za konstruiranje predložaka za konzolne i prozorske klijentske aplikacije sustava automatizacije projektiranja distribuiranih sklopova i implementirana je organizacija funkcioniranja distribuiranog CAD sustava s klijentskim web aplikacijama.

    6. Razvijena je metodologija za izgradnju distribuiranih CAD sustava koja osigurava interakciju Java web servisa i klijentskih aplikacija bilo koje vrste u heterogenim okruženjima.

    Zaključak

    Prilikom izrade disertacije razmatrana su pitanja istraživanja i razvoja metoda za izgradnju platformski neovisnih distribuiranih CAD sustava s uslužno orijentiranom arhitekturom i korištenjem web servisa. Kako bi se specificirao takav CAD sustav, odabran je distribuirani sustav za rješavanje problema dizajna sklopa.

    Rad pokazuje da korištenje web usluga pri izgradnji decentraliziranog CAD softvera omogućuje opisivanje sučelja i interakcija temeljenih na XML-u, pružajući mogućnost izmjene i razvoja sustava, pod uvjetom da potrebno sučelje. To vam omogućuje da organizirate interakciju između usluga na bilo kojoj platformi i prilagodite aplikacije koje se koriste promjenjivim uvjetima dizajna.

    Rad je stvorio opću metodologiju za izgradnju, offline testiranje i implementaciju Java web usluga na poslužitelju. Na temelju ove metodologije razvijena je softverska implementacija Java web servisa koja rješava probleme proračuna linearnih i nelinearnih elektroničkih sklopova u stacionarnom načinu rada, u frekvencijskoj domeni, u vremenskoj domeni, uključujući izračunavanje osjetljivosti funkcija sklopa i stacionarno -varijable načina rada u varijacije parametara. Struktura softvera temelji se na širokoj uporabi tehnologije kompresije podataka i pomoćnih funkcija, čija je biblioteka stvorena u procesu izrade disertacije.

    Kako bismo organizirali učinkovitu interakciju korisnika s web uslugom, razvili smo opća metodologija izrada predložaka za klijentske aplikacije konzolnog i prozorskog tipa, kao i klijentske web aplikacije te implementacija funkcioniranja web servisa u heterogenim okruženjima.

    Popis literature za istraživanje disertacije Kandidat tehničkih znanosti Anisimov, Denis Andreevič, 2013

    1. Automatizacija projektiranja sklopova Tekst: monografija / V. N. Ilyin [et al.]; uredio V. N. Iljina. M.: Radio i komunikacije, 1987. - 368 str.

    2. Automatizacija projektiranja sklopova na mini-računalu Tekst: udžbenik / V. I. Anisimov [etc.]. JL: Izdavačka kuća Leningr. Sveučilište, 1983. - 199 str.

    3. Anisimov, V.I. Skup interaktivnih paketa za modeliranje analognih i digitalnih elektroničkih sklopova na IBM/PC Text. / V.I.Anisimov, K.B.Skobeltsyn, A.V.Nikitin // Automatizirano projektiranje u radioelektronici i izradi instrumenata: 1991.-P.3-6.

    4. Anisimov, V.I. Osjetljivost nelinearnih sustava na varijacije parametara Tekst. / V.I.Anisimov, Yu.M.Amakhvr // Proceedings of St. Petersburg Electrotechnical University "LETI". Ser. Informatika, menadžment i računalna tehnika, -2007. Izdanje 2. - str. 22-26.

    5. Anisimov, V.I. Modeliranje kontinuiranih sustava Tekst: udžbenik / V.I. Anisimov. SPb.: LETI, 2006. - 172 str.

    6. Bellignaso, M. Razvoj web aplikacija u okruženju ASP.NET 2.0 Tekst: monografija / M. Bellignaso.; traka s engleskog uredio Yu.N. Artemenko. M.: LLC "I.D. Williams", 2007. - 640 str.

    7. Bellman, R. Uvod u teoriju matrica Tekst: monografija / R. Bellman; traka s engleskog uredio V.B. Lidsky. M.: Nauka, 1969. - 336 str.

    8. Bogdanov, A.B. Uslužno orijentirana arhitektura: nove mogućnosti u svjetlu razvoja GRID tehnologija / A.V. Bogdanov, E.N. Stankova, V.V. Mareev (http//www.ict.edu.ru/lib/index.php?idres= 5639)

    9. Vlah, I. Strojne metode analize i projektiranja elektroničkih sklopova Tekst: monografija / I. Vlah, K. Singhal.; traka s engleskog M.: Radio i komunikacije, 1988. - 560 str.

    10. Gamma, E. Tehnike objektno orijentiranog dizajna Tekst: monografija / E. Gamma, R. Helm.; traka s engleskog Sankt Peterburg: Peter, 2001.

    11. I. Gerber, Sh. Kompletan priručnik o C# Tekst: monografija / Sh. Gerber.; traka s engleskog St. Petersburg: Peter, 2006. - 740 str.

    12. Gloriozov, E.L. Uvod u automatizaciju projektiranja sklopova Tekst: monografija / E.L. Gloriozov, V.G. Sorin, P.P. Sypchuk. M.: Sovjetski radio, 1976. - 232 str.

    13. Daconta, M. XML i Java 2. Programmer’s library Tekst: monografija / M. Daconta, A. Saganich; traka s engleskog St. Petersburg: 2001. - 384 str.

    14. Dey, N. Eclipse: Web Tools Platform Text: monografija / N. Dey, L. Mandel, A. Rayman; traka s engleskog M.:, 2008.- 688 str.

    15. Deitel, H.M. Tehnologija programiranja u Javi 2: Knjiga 1. Grafika, JavaBeans, korisničko sučelje Tekst: monografija / H.M.Deitel, P.D.Deitel, S.I.Santry.; M.: Binom-Press LLC, 2003.-560 str.

    16. Deitel, H.M. Tehnologija programiranja u Javi 2: Knjiga 2. Distribuirane aplikacije Tekst: monografija / Kh.M. Deitel, P. D. Deitel, S. I. Santry.; M.: Binom-Press LLC, 2003.-464 str.

    17. Deitel, H.M. Tehnologija programiranja u Javi 2: Knjiga 3. Korporativni sustavi, servleti, JSP, Web usluge Tekst: monografija / H.M.Deitel, P.D.Deitel, S.I.Santry; traka s engleskog M.: Binom-Press LLC, 2003. - 672 str.

    18. Demidovich, B.P. Osnove računalne matematike Tekst: monografija / B.P. Demidovich, I.A. Maron. M.: Fizmatgiz, 1963. - 658 str.

    19. James, O. Iterativne metode za rješavanje nelinearnih sustava jednadžbi Tekst: monografija / O. James, R. Vener.; traka s engleskog uredio E.V. Verškova, N.P. Židkova, I.V. Konovaltseva. M.: Mir, 1975.- 551 str.

    20. George, A. Numeričko rješavanje velikih rijetkih sustava jednadžbi Tekst: monografija / A. George, J. Liu.; traka s engleskog H.D. Ikramova M.: Mir, 1984. - 333 str.

    21. Dijaloški sustavi projektiranja sklopova Tekst: monografija / V. I. Anisimov [etc.]. M.: Radio i komunikacije, 1988. - 287 str.

    22. Dunaev S.B. Java za Internet na Windowsima i Linux tekst.: monografija / S. B. Dunaev. M.: DIALOG-MEPhI, 2004. - 496 str.

    23. Zelenukhina, V.A. Razvoj internetski orijentiranih virtualnih laboratorija za matematičko modeliranje odvajanjem računalnih i vizualizacijskih zadataka Tekst. / V.A.Zelenukhina, //Informacijske tehnologije, 2010. br. 10. - SA.

    24. Zykov, A.A. Osnove teorije grafova Tekst: monografija / A.A. Zykov. -M.: Nauka, 1987.-256 str.

    25. Iljin, V.N. Osnove automatizacije projektiranja sklopova Tekst: monografija / V.N. Ilyin. M.: Energija, 1979. - 391 str.

    26. Simulacijsko modeliranje proizvodnih sustava Tekst: monografija / A. A. Vavilov [et al.]. Kijev: Tehnika, 1983. - 415 str.

    27. Kako programirati u XML tekstu: monografija / H.M. Deitel, [etc.].; traka s engleskog M.: ZAO Izdavačka kuća BINOM, 2001. - 944 str.

    28. Kalitkin, N.H. Numeričke metode Tekst: monografija / N.N. Kalitkin. -M .: Nauka, 1978, - 519 str.

    29. Knuth, D. Umijeće računalnog programiranja Tekst: monografija / D.Knut.; traka s engleskog G.P.Bavenko, Yu.M.Vayakovsky; uredio K. I. Babenko, V. S. Štarkman. M.: Mir, 1976. - 734 str.

    30. Christofides, N. Teorija grafova. Algoritamski pristup Tekst: monografija / N. Christofides; traka s engleskog uredio G.P. Gavrilova. M.: Mir, 1978.-432 str.

    31. MacDonald, M. Microsoft ASP.NET 2.0 s primjerima u C# 2005 za profesionalce Tekst: monografija / M. MacDonald, M. Shpushta; traka s engleskog uredio Yu.N. Artemenko. M.: LLC "I.D. Williams", 2006. - 1408 str.

    32. Mihajlov, V.B. Numeričko-analitičke metode za rješavanje superkrutih diferencijalno-algebarskih sustava jednadžbi Tekst: monografija / V.B. Mikhailov. St. Petersburg: Nauka, 2005. - 223 str.

    33. Norenkov, I.P. Uvod u računalno projektiranje tehničkih uređaja i sustava Tekst: monografija / I.P. Norenkov. -M .: Viša škola, 1986. 302 str.

    34. Norenkov, I.P. Osnove CAD teorije i projektiranja Tekst: monografija / I.P. Norenkov, V.B. Manichev. M.: 1990. -334 str.

    35. Norenkov, I.P. Sustavi za računalno potpomognuto projektiranje elektroničke i računalne opreme Tekst: monografija / I.P. Norenkov, V.B. Manichev. -M .: Viša škola, 1983. 272 ​​​​str.

    36. Naughton, P. Java 2 Tekst: monografija / P. Naughton, G. Schildt. ; traka s engleskog St. Petersburg: BHV-Petersburg, 2001. - 1072 str.

    37. Petrenko, A.I. Osnove konstruiranja sustava računalno potpomognutog projektiranja Tekst: monografija / A. I. Petrenko, O. I. Semenkov. -Kijev: Viša škola, 1984. 293 str.

    38. Petrenko, A.I. Tablične metode modeliranje elektroničkih sklopova na digitalnom računalu Tekst: monografija / A.I. Petrenko, A.I.Vlasov, A.P.Timčenko. -Kijev: Viša škola, 1977. 186 str.

    39. Pissanetski, S. Tehnologija rijetkih matrica Tekst: monografija / S. Pissanetski; traka s engleskog uredio Kh.D.Ikramova. M.: Mir, 1988. - 410 str.

    40. Razevig, V. Modeliranje strujnog kruga pomoću Micro-Cap 7 Tekst: monografija / V. Razevig. M.: Telecom, 2003. - 368 str.

    41. Razvoj distribuiranih aplikacija na Microsoft platformi. Net Framework Tekst: monografija / S. Morgan [et al.].; traka s engleskog M.: “Rusko izdanje”, 2008. - 608 str.

    42. Razvoj klijentskih web aplikacija na platformi Microsoft .Net Framework Tekst: monografija / Glenn D. [et al.].; traka s engleskog M.: “Rusko izdanje”, 2007. - 768 str.

    43. Borland JBuilder Developer's Guide Tekst: monografija / M. Lendi [et al.].; traka s engleskog M.: Izdavačka kuća "William", 2004. -864 str.

    44. Rice, J. Matrični izračuni i matematički softver Tekst: monografija / J. Rice.; traka s engleskog M.: Mir, 1984. - 264 str.

    45. C# za profesionalce Tekst: monografija / Simon Robinson [et al.].; traka s engleskog S. Korotygin [i drugi]. M.: Lori, 2005. - 1002 str.

    46. ​​​​Simon, P. Microsoft Windows 2000 API. Programer's Encyclopedia Text: monografija / R. Simon; St. Petersburg: DiaSoft, 2002.-1088 str.

    47. Tajne programiranja za Internet u Java tekstu: monografija / M. Thomas [et al.].; traka s engleskog St. Petersburg: Peter, 1997. - 640 str.

    48. Seshu, S. Linearni grafovi i električni krugovi Tekst: monografija / S.Seshu, M.B.Rid.; traka s engleskog M.: Viša škola, 1971. - 448 str.

    49. Sigorsky, V.P. Algoritmi za analizu elektroničkih sklopova Tekst: /

    50. V.P.Sigorsky, A.I.Petrenko. M.: Sovjetski radio, 1976. - 606 str.

    51. Sigorsky, V.P. Matematički aparat inženjera Tekst: monografija / V.P. Sigorsky. Kijev: Tehnika, 1975. - 765 str.

    52. Slipchenko, V.G. Strojni algoritmi i programi za modeliranje elektroničkih sklopova Tekst: monografija / V.G. Slipchenko, V.G. Tabarny - Kijev: Technology, 1976. 157 str.

    53. Sovetov, B.Ya. Modeliranje sustava Tekst: monografija / B.Ya.Sovetov,

    54. S.A. Jakovljev. M.: Viša škola, 1985. - 271 str.

    55. Solnitsev, R.I. Automatizacija projektiranja sustava automatska kontrola Tekst: monografija / R.I. Solnitsev. M.: Viša škola, 1991. - 328 str.

    56. Solnitsev, R.I. Osnove automatizacije u projektiranju žiroskopskih sustava. Tekst: monografija / R.I. Solnjitsev. M.: Viša škola, 1985. - 240 str.

    57. Stepanenko, I.P. Osnove mikroelektronike: udžbenik. priručnik za sveučilišta Tekst / I.P. Stepanenko. M.: Sovjetski radio, 1980. -567 str.

    58. Tarasik, V.P. Matematičko modeliranje tehničkih sustava Tekst: monografija / V.P. Tarasik. Minsk: Design PRO, 2004. - 639 str.

    59. Troelsen, E. Programski jezik C# 2005 i platforma .NET 2.0 Tekst: monografija / E. Troelsen; traka s engleskog uredio A.G. Spivak. M.: LLC "I.D. Williams", 2007. - 1168 str.

    60. Tewarson, F.R. Rijetke matrice Tekst: monografija / F.R. Tewarson; traka s engleskog M.: Mir, 1977. - 189 str.

    61. Fadeev, D.K. Računalne metode linearne algebre Tekst: monografija / D.K. Fadeev, V.N. Fadeeva. M.: Izdavačka kuća Fiz-mat Literature, 1963. - 734 str.

    62. Ferrara, A. Programiranje web usluga za .NET Tekst: monografija / A. Ferrara, M. MacDonald. St. Petersburg: Peter, 2003. - 422 str.

    63. Forsythe, J. Strojne metode matematički proračuni Tekst: monografija / J. Forsythe, M. Malcolm, K. Mowler.; traka s engleskog uredio Kh.D.Ikramova. M.: Mir, 1980. - 277 str.

    64. Cymbal, A.A. Tehnologija za stvaranje distribuiranih sustava Tekst: monografija / A.A. Tsimbal, M.L. Anshina. St. Petersburg: Peter, 2003. - 576 str.

    65. Chua, L.O. Strojna analiza elektroničkih sklopova Tekst: monografija / L.O.Chua, Lin.Pen-Min.; traka s engleskog -M .: Energija, 1980. 631 str.

    66. Heineman, P. PSPICE Modeliranje rada elektroničkih sklopova Tekst: monografija / R. Heineman. -M .: Izdavačka kuća DMK, 2005. 327 str.

    67. Khabibulin, I. Razvoj web usluga korištenjem Java Text: monografija / I. Khabibulin. St. Petersburg: BHV-Petersburg, 2003. - 400 str.

    68. Hall, M. Servleti i JavaServer stranice Tekst: monografija / M. Hall; traka s engleskog -SPb.: Peter, 2001. 496 str.

    69. Esterby, O. Izravne metode za rijetke matrice Tekst: monografija / O. Esterby, Z. Zlatev; traka s engleskog M.: Mir, 1987. - 111 str.

    70. Young, M.D. Microsoft XML. Korak po korak Tekst: monografija / M.D. Young; traka s engleskog -M.: Izdavačka kuća EKOM, 2002. 384 str.69. http://bigor.bmstu.ru/?doc=080IS/ai006.mod/?cou-140CADedu/CAD.cou

    Imajte na umu gore navedeno znanstvenih tekstova objavljeno u informativne svrhe i dobiveno prepoznavanjem teksta izvorne disertacije (OCR). Stoga mogu sadržavati pogreške povezane s nesavršenim algoritmima prepoznavanja. U PDF datotekama disertacija i sažetaka koje isporučujemo nema takvih pogrešaka.