Jump to content
php.lv forumi

Viena lapa, trīs valodas, trīs domēni, trīs serveri


Toms

Recommended Posts

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

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

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 by Toms
Link to comment
Share on other sites

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

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

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 by Aleksejs
Link to comment
Share on other sites

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

  • 4 weeks later...

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

×
×
  • Create New...