Toms Posted August 22, 2008 Report Share Posted August 22, 2008 Sveiki! Ir veikals, kas notulkots trīs valodās. Katrai valodai savs domēns: .lt, .lv, .de. Katram domēnam attiecīgajā valstī ir savs serveris (hostings). Visas trīs lapas jāvar vadīt no viena CMS. Galvenais - kā veidot komunikāciju sistēmu starp visiem serveriem tā, lai informācija nepārklātos un nebūtu lēna lapas ielāde? Ir vairāki risinājumi, bet grūti saprast, kurš būtu labākais. Pirms izsaku savus variantus, gribētu dzirdēt svaigas idejas no malas (lai neietekmētos no manām). Link to comment Share on other sites More sharing options...
Aleksejs Posted August 22, 2008 Report Share Posted August 22, 2008 Nu, es pieļauju domu, ka dati glabājas DB, vai ne? Tālāk pieņemu domu, ka katram no saitiem ir sava lokālā DB. Bez tam, droši vien pati CMS darbība noteikti ģenerē relatīvi mazu trafiku salīdzzinot ar pašiem web veikaliem. Droši vien ir daļas, kas attiecas tikai uz konkrētās valsts lapu, piemēram, komentāri par produktu lietuviski ir aktuāli tikai Lietuvā... Viena ideja, ka CMS veido 3 pieslēgumus uz attiecīgi lokālajām DB... Problēma tajā brīdī, ja kaut kas izpildās vienā DB bet neizpildās citā... Labāks risinājums droši vien būtu kopīgā master datubāze (kurā ir tās daļas, kas visām trim ir kopīgas), kurā tiek veiktas izmaiņas un šīs izmaiņas tālāk tiek replicētas uz lokālajām db. Jautājums, vai var replicēt tikai konkrētas tabulas? Link to comment Share on other sites More sharing options...
Paulinjsh Posted August 22, 2008 Report Share Posted August 22, 2008 (edited) Par db, Alekseja variants. Bildes, failus utt synhronizē servera līmenī. Edited August 22, 2008 by Paulinjsh Link to comment Share on other sites More sharing options...
Aleksejs Posted August 22, 2008 Report Share Posted August 22, 2008 Hmm, nez kāpēc man veikali ienāca prātā... :) Par veikaliem jau nebija ne runas :) Link to comment Share on other sites More sharing options...
Toms Posted August 22, 2008 Author Report Share Posted August 22, 2008 (edited) Manuālī neredzēju iespēju replicēt tikai tabulas. Man vēl bija otra versija, ka slave serveri slēdzas katru reizi pie galvenā un nolasa vajadzīgo info (pašiem salve nebūtu lokālā DB). Bet noteikti būtu manāms ātruma samazinājums? Šim otram variantam trūkums uz to, ka ja kāds no slave nav pieejams (timeout?), tad nenotiek izmaiņas.. Hmm, risinājums laikam būtu masteram sūtīt pieprasījumu, kamēr saņem atbildi par veiksmīgi izpildītu. Arī mazliet sarežģītāks risinājums. Vēl būtu interesants jautājums, kā lietotāja sesiju starp serveriem noorganizēt aktīvu. EDIT: googlē daudz lasāmā par vienu sesiju uz dažādiem serveriem, gan tikšu skaidrībā. Edited August 22, 2008 by Toms Link to comment Share on other sites More sharing options...
Aleksejs Posted August 22, 2008 Report Share Posted August 22, 2008 Lietotāju sesijas nodrošināšanā varētu palīdzēt: http://php.lv/f/index.php?showtopic=11116 Idejiski - lietotājs katrā pieslēgšanās reizē tiek autentificēts. Protams, var arī sesijas glabāt iekš DB, bet to vajag rūpīgi izpētīt, kā notiks replicēšana... Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 22, 2008 Report Share Posted August 22, 2008 Hmm, nez kāpēc man veikali ienāca prātā... :) Par veikaliem jau nebija ne runas :) tiesji bija ;) Ir veikals, kas notulkots trīs valodās.// Zuurka tekstu nograuza :( // kā veidot komunikāciju sistēmu starp visiem serveriem tā, lai informācija nepārklātos un nebūtu lēna lapas ielāde? Ko gribeeji teikt lai neparklaajas? Ja ir 3 atseviskjas DB tad dalja datu parklasies vienalga ... Un pie musdienu iespejam saglabaat datus taa nu nebuutu lielaakaa problema ... --- Manaa skatijumaa ir vajadziigas 4 db .. 3 lokaalas un Master (kaa jau Aleksejs mineeja) -- Teiksim FAQ katrai valodai var buut atskjiriigi ... tb. dati neparklasies ..... Tas pats ar komentariem .... Un lielaa daljaa arii ar jaunumiem ..... -- IMPHO Lielaakaa problema ir Bilzju (DATU) pievienosana Upteitosana araaejam serverim ... Diezgan daudz buus japiestraadaa pie drosiibas ... tb . lai serveris sanjemot $_FILES datus zinaatu ka vinjam no $_FILE['bla']['tempXXX'] japarsuuta samais uz citu (doto) serveri kur attieciigi janoglabaa dotaa 'diraa'.... sinhronizacija servera liimenii nestraadas uz teiksim uz jaunumiem (kas attiecas tikai uz konkreto valsti/serveri) ... Link to comment Share on other sites More sharing options...
Toms Posted August 22, 2008 Author Report Share Posted August 22, 2008 Jā, kļūda - nevis nepārklāsies, bet nebūs iztrūkumi. Tādi kā - vienā veikalā preci nopērk, bet no cita viņa nav izvākta kaut kādu iemeslu dēļ. Bet to izdomāju kā atrisināt. Failiem varētu rsync izmantot. Link to comment Share on other sites More sharing options...
Aleksejs Posted August 22, 2008 Report Share Posted August 22, 2008 (edited) Un par replikāciju.... Rekur: http://dev.mysql.com/doc/refman/5.1/en/rep...on-options.html --replicate-ignore-table=db_name.tbl_name Tells the slave thread to not replicate any statement that updates the specified table, even if any other tables might be updated by the same statement. To specify more than one table to ignore, use this option multiple times, once for each table. This works for cross-database updates, in contrast to --replicate-ignore-db. See Section 19.4.3, “How Servers Evaluate Replication Rules”. + nedaudz augstāk ;) --replicate-do-table=db_name.tbl_name Tell the slave thread to restrict replication to the specified table. To specify more than one table, use this option multiple times, once for each table. This works for cross-database updates, in contrast to --replicate-do-db. See Section 19.4.3, “How Servers Evaluate Replication Rules”. Edited August 22, 2008 by Aleksejs Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 22, 2008 Report Share Posted August 22, 2008 Tādi kā - vienā veikalā preci nopērk, bet no cita viņa nav izvākta kaut kādu iemeslu dēļ. ./* Zuurka tekstu nograuza :( */ Failiem varētu rsync izmantot. nu ja viena Noliktava (reali) tad visdrosak izmantot atseviskju DB --> noliktava .. diezgan leila garantija ka nekas nenotiks --> nu parekjini pats musdienas Tiikla atrums 100Mb ... ta dati kas japarsuuta& apstraade sastadiis 0,001 sek ... praktiski nemanami ... TAs noziimee Noliktava 5 DB .. ( IMPHO) .. --- rsync ? Linku?? Link to comment Share on other sites More sharing options...
Toms Posted August 22, 2008 Author Report Share Posted August 22, 2008 rsync Link to comment Share on other sites More sharing options...
Paulinjsh Posted August 22, 2008 Report Share Posted August 22, 2008 par replikāciju - tak taisam insert, update vienā master, a select no lokālajiem slave i miers Link to comment Share on other sites More sharing options...
Toms Posted September 18, 2008 Author Report Share Posted September 18, 2008 Paulinjsh - tāda sistēma, manuprāt, der tad, ja visi serveri atrodas lokālā tīklā (viens otram blakus - domājot par ātrdarbību). Vēl jāatceras, ka katrai no DB daļa datu atšķirsies. Mans variants ir līdzīgs Alekseja ieteiktajam, bet bez replikācijām. Saziņa starp serveriem notiks (tie atradīsies dažādās valstīs) ar XML-RPC for PHP palīdzību. Būs viena centrālā DB (un CMS) ar pilnīgi visu info. Visi pārējie serveri no centrāles saņems pieprasījumus par izmaiņām (preču maiņa, tekstu maiņa). Centrālei tiks doti pieprasījumi, kad reģistrēsies lietotājs un notiks pirkums. Tas viss darbosies arī tad, ja kāds no serveriem būs off - viņu "pingos", un kā būs online, tā izpildīs pending pieprasījumus. Nezinu vai labākais risinājums, tāpēc vispirms izstrādāšu nelielu prototipu. Jautājumi/ieteikumi? Link to comment Share on other sites More sharing options...
Paulinjsh Posted September 18, 2008 Report Share Posted September 18, 2008 a kāpēc lokāliem? tak tīkla ātrums tagad ir labs un vienalga, kur atrodies. vai arī tev tur daudz inserti? vispār jā, taisi vienu db un miers. Link to comment Share on other sites More sharing options...
Recommended Posts