F3llony Posted May 11, 2016 Report Share Posted May 11, 2016 Man spēļu serverī katrs lietotājs 20 reizes sekundē sūta savas komandas un 20 reizes sekundē saņem stāvokļa izmaiņas, pie 200 lietotājiem sanāk ap 4000 komandu apstrāde un 4000 stāvokļu nosūtīšanas, pie tam katrs stāvoklis, ko sūta var būt 1 - 20+ lietotāju dati. Rezultātā apjoms var sasniegt pat 100k datu vienību sekudē. Pie šāda apjoma, trafiks parasti ir ap 10Mbs up un 1Mbs down. Un tu taču neglabā katru izmaiņu kaut kādā DB, vai ne? :P tikai rezultējošo steitu? Quote Link to comment Share on other sites More sharing options...
codez Posted May 11, 2016 Report Share Posted May 11, 2016 Fellony, ārēja db netiek izmantota, ir tikai iekšējas datu struktūras, kuras glabājas RAMā, kas kalpo kā tāda RAM db, bet tas nemaina būtību, ka datu 1 sekundē ir ļoti daudz. Wuu, priekš ģeolokācijas tiek izmantots kd-Tree, kas arī tiek kverijots, lai noskaidrotu, kuri objekti iedarbojas ar tevi un kuri objekti ir tavā redzamības zonā un par kuriem dati tev jāsaņem. Dati tiek sūtīti maksimāli optimizēt - katram lietotājam tikai tie, kas nepieciešami, piemēram, lietotāju koordinātes, tikai tiem lietotājiem, kurus redzi, apēstā un uzrodošās pārtika, tikai tajā brīdi, kad pazūd vai uzrodas. Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 11, 2016 Report Share Posted May 11, 2016 codez, par klienta pusi, ar ko tur socket dati tiek apstrādi? Un ko sūti, turpu/šurpu, binārus datus, vai strukturētu a.k. JSON ? Quote Link to comment Share on other sites More sharing options...
codez Posted May 11, 2016 Report Share Posted May 11, 2016 (edited) Binārus datus, 1. baits nosaka, kas tiek sūtīts un tālāk jau atkarībā no tā, tiek lasīti konkrēti baiti, vai masīvi ar ierakstiem. P.S. Datus lasu no ArrayBuffer-a ar DataView Edited May 11, 2016 by codez Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 11, 2016 Report Share Posted May 11, 2016 Heksadecimāli? :D Quote Link to comment Share on other sites More sharing options...
codez Posted May 11, 2016 Report Share Posted May 11, 2016 Viss tā vai tā glabājas bināri, gan atmiņā, gan sūtot pa tīklu, gan arī visas matemātiskās darbības tiek veiktas binārā formā. Decimāli tiek reprezentēti skaitļi tos attēlojot lietotājam. Heksadecimāli varētu būt reprezentētas tikai kāds krāsu kods CSSā. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted May 11, 2016 Report Share Posted May 11, 2016 Uzņēmums, sānu projekti, tagad ar freelancers un drīz arī pats pie saviem projektiem sākšu. Imho, šīs jaunās JavaScript tehnoloģijas, ļauj uzbliezt servisu pāris nedēļu laikā. Pēc papīriem esmu projektu vadītājs. IMO tās pāris nedēļas ir 20% laika un 80% funkcionalitātes. Pēc tam sākās 8 nedēļas, lai novestu līdz galam. :) Tās "tas ir tikai pāris nedēļas" ir konstante IT jomā. Tas velk uz programmētājiem, kuri pazūd, un tiem, kas savāc, ir jāskaidro, ka katra izmaiņa nav viss tikai dažas rindiņas un "man jau lieks, ka tur jau nekā nau!" Quote Link to comment Share on other sites More sharing options...
Wuu Posted May 11, 2016 Report Share Posted May 11, 2016 @codez monstrs. Man matemātika būtu pa īsu, lai ko tādu, vēl tādā līmenī uzblieztu. Quote Link to comment Share on other sites More sharing options...
F3llony Posted May 11, 2016 Report Share Posted May 11, 2016 Fellony, ārēja db netiek izmantota, ir tikai iekšējas datu struktūras, kuras glabājas RAMā, kas kalpo kā tāda RAM db, bet tas nemaina būtību, ka datu 1 sekundē ir ļoti daudz. Tu gribi teikt, ka nav atšķirības starp 1000 requestiem/s pret RAM highly-custom optimizētu struct un 1000 requestiem/s pret, teiksim, Postgre? :P Que? Man Tev pat ir konkrēts piemērs - man ir aplikācija, kas darbojas uz N serveriem, diezgan vienkāršs REST agregators. Uz katru kasti 1 instance, threadpool of 9/8, sastāv no SparkJavas kā HTTP + custom in-memory struktūras lai pieglabātu datus, 1 control thread, 4 tredi Spark, 3 tredi workeriem un 1 sync treds (read-write-delete) pret DB, kas šajā gadījumā ir Mongo. Spark + in-mem struct + Mongo WC:W2: ap 60-65k/rps (jo uz Mongo flush nav jāgaida). Spark + Mongo WC:NACK (!!!): ap 30-35k/rps. Spark + Mongo WC:ACK: ap 15k/rps. Spark + Mongo WC:W2: <10k/rps. Quote Link to comment Share on other sites More sharing options...
e-remit Posted May 11, 2016 Report Share Posted May 11, 2016 F3llony, pamēģini https://dbreeze.codeplex.com/- zema līmeņa DB, līdz ar to bez daudzām smukām DB fīčām, bet ļoti ātra uz lieliem apjomiem. Tiesa, native uz C# tur viss, bet gan jau tiksi galā. Zinu, ka Vācijas uzņēmumi to izmanto mašīnu izsekošanā, uzkrājot datus par maršrutiem un citiem notikumiem un tos pēc tam analizējot. Quote Link to comment Share on other sites More sharing options...
F3llony Posted May 11, 2016 Report Share Posted May 11, 2016 Es gan uz C# daudz vairs neko nedaru, bet pieglabāšu, paldies. Javā es dažkārt izmantoju H2 un Prevayler. Quote Link to comment Share on other sites More sharing options...
qwerty Posted May 12, 2016 Report Share Posted May 12, 2016 tas nemaina būtību, ka datu 1 sekundē ir ļoti daudz. Tu gribi teikt, ka nav atšķirības starp 1000 requestiem/s pret RAM highly-custom optimizētu struct un 1000 requestiem/s pret, teiksim, Postgre? :P Que? Man šķiet codez te runāja par datu daudzumu, nevis ātrumu, kādā tas tiek apstrādāts. Quote Link to comment Share on other sites More sharing options...
codez Posted May 12, 2016 Report Share Posted May 12, 2016 Man šķiet codez te runāja par datu daudzumu, nevis ātrumu, kādā tas tiek apstrādāts. Mhm. Vai kādam vēl ir atnākusi šāda ziņa no Githuba? Good news — your plan now includes unlimited private repositories. Quote Link to comment Share on other sites More sharing options...
briedis Posted May 12, 2016 Author Report Share Posted May 12, 2016 Vai kādam vēl ir atnākusi šāda ziņa no Githuba? Nez, tizli kaut kā maksāt 7$ privātām vajadzībām, ja var paņemt vienkārši bitbucket... Quote Link to comment Share on other sites More sharing options...
codez Posted May 12, 2016 Report Share Posted May 12, 2016 Ir tāds teiciens: "Nauda ir jātērē, lai pelnītu vairāk." ;) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.