កម្មវិធីតាមអ៊ិនធរណេតទ្រង់ទ្រាយធំបានមកយ៉ាងយូរក្នុងរយៈពេលពីរទសវត្សរ៍មុន។ ការបង្កើតថ្មីទាំងនេះបានផ្លាស់ប្តូរការយល់ឃើញរបស់យើងចំពោះការអភិវឌ្ឍន៍កម្មវិធី។ ឧទាហរណ៍ Facebook, Instagram និង Twitter គឺជាវេទិកាដែលអាចធ្វើមាត្រដ្ឋានបាន។
ប្រព័ន្ធទាំងនេះត្រូវតែត្រូវបានបង្កើតឡើងដើម្បីគ្រប់គ្រងបរិមាណដ៏ធំនៃចរាចរណ៍ និងទិន្នន័យចាប់តាំងពីមនុស្សរាប់ពាន់លាននាក់ប្រើប្រាស់វាក្នុងពេលតែមួយនៅទូទាំងពិភពលោក។ នេះគឺជាពេលដែល ការរចនាប្រព័ន្ធ ចូលក្នុងរូបភាព។
ដំណើរការនៃការបង្កើតស្ថាបត្យកម្ម ចំណុចប្រទាក់ និងទិន្នន័យសម្រាប់ប្រព័ន្ធដែលបំពេញតាមលក្ខណៈវិនិច្ឆ័យជាក់លាក់ត្រូវបានគេស្គាល់ថាជាការរចនាប្រព័ន្ធ។ តាមរយៈប្រព័ន្ធដ៏ស្អិតរមួត និងមានប្រសិទ្ធភាព ការរចនាប្រព័ន្ធបំពេញតម្រូវការនៃអាជីវកម្ម ឬស្ថាប័នរបស់អ្នក។
នៅពេលដែលក្រុមហ៊ុន ឬស្ថាប័នរបស់អ្នកបានកំណត់លក្ខណៈវិនិច្ឆ័យរបស់ខ្លួន អ្នកអាចចាប់ផ្តើមបញ្ចូលពួកវាទៅក្នុងការរចនាប្រព័ន្ធរូបវន្តដែលបំពេញតម្រូវការអ្នកប្រើប្រាស់របស់អ្នក។
មិនថាអ្នកជ្រើសរើសទៅជាមួយការអភិវឌ្ឍន៍តាមតម្រូវការ ដំណោះស្រាយពាណិជ្ជកម្ម ឬការរួមបញ្ចូលគ្នានៃទាំងពីរនោះ របៀបដែលអ្នករចនាប្រព័ន្ធរបស់អ្នកនឹងកំណត់ពីរបៀបដែលអ្នកបង្កើតវា។
យើងនឹងពិនិត្យមើលលម្អិតអំពីការរចនាប្រព័ន្ធនៃបន្ទាត់ពេលវេលា Twitter នៅក្នុងការប្រកាសនេះ ដោយបញ្ចប់ដោយការបង្រៀន។ តោះចាប់ផ្តើម។
ជំហានទី 1៖ គូសបញ្ជាក់ករណីប្រើប្រាស់ និងកម្រិត
ករណីការប្រើប្រាស់
- អ្នកប្រើប្រាស់បង្ហោះ Tweet ។
- សេវាកម្មផ្ញើការជូនដំណឹងជំរុញ និងអ៊ីមែលទៅកាន់អ្នកតាមដាន tweets ។
- បន្ទាត់ពេលវេលារបស់អ្នកប្រើត្រូវបានមើល (សកម្មភាពពីអ្នកប្រើប្រាស់)
- អ្នកប្រើមើលបន្ទាត់ពេលវេលាផ្ទះ (សកម្មភាពពីមនុស្សដែលអ្នកប្រើកំពុងតាម)
- ពាក្យគន្លឹះត្រូវបានស្វែងរកដោយអ្នកប្រើប្រាស់។
- សេវាកម្មពិតជាអាចចូលដំណើរការបាន។
ក្រៅវិសាលភាព
- Tweets ត្រូវបានផ្ញើទៅកាន់ Twitter Firehose និងស្ទ្រីមផ្សេងទៀតដោយប្រើប្រាស់សេវាកម្មនេះ។
- សេវាកម្មលុប tweets ដោយផ្អែកលើការកំណត់ភាពមើលឃើញរបស់អ្នកប្រើប្រាស់។
- ប្រសិនបើអ្នកប្រើមិនធ្វើតាមអ្នកដែលត្រូវបានឆ្លើយតបទេ សូមលាក់ការឆ្លើយតប។
- សង្កេតជម្រើស 'លាក់ការផ្សាយឡើងវិញ' ។
- វិភាគ
ឧបសគ្គ និងការសន្មត់
ការសន្មត់របស់រដ្ឋ
- ចរាចរណ៍មិនត្រូវបានបែកខ្ញែកស្មើគ្នាទេ។
- វាគួរតែសាមញ្ញក្នុងការផ្ញើ Tweet មួយ។
- លុះត្រាតែអ្នកមានអ្នកតាមដានរាប់លាននាក់ ការផ្ញើ tweet ទៅកាន់អ្នកតាមដានរបស់អ្នកទាំងអស់គួរតែលឿន។
- មានអ្នកប្រើប្រាស់សកម្ម 100 លាននាក់។
- 15 ពាន់លាន tweets រៀងរាល់ខែ ឬ 500 លាន tweets ជារៀងរាល់ថ្ងៃ
- tweet នីមួយៗមានអ្នកគាំទ្រនៃការចែកចាយ 10 ជាមធ្យម។
- ជារៀងរាល់ថ្ងៃ fanout ផ្តល់ 5 ពាន់លាន tweets ។
- Fanout ផ្តល់ 150 ពាន់លាន tweets ជារៀងរាល់ខែ។
- ការស្នើសុំអានប្រចាំខែចំនួន 250 ពាន់លាន
- 10 ពាន់លានការស្វែងរកប្រចាំខែ
ការកំណត់ពេលវេលា
- បន្ទាត់ពេលវេលាគួរតែងាយស្រួលរុករក។
- Twitter គឺនិយាយអំពីការអានច្រើនជាងការសរសេរ។
- បង្កើនប្រសិទ្ធភាពសម្រាប់ការអាន tweet រហ័ស
- ការប្រើប្រាស់ Tweet គឺប្រើប្រាស់ពេលវេលា។
ស្វែងរក
- ដំណើរការស្វែងរកគួរតែរហ័ស។
- វាត្រូវការពេលច្រើនក្នុងការស្វែងរក។
គណនាការប្រើប្រាស់
ទំហំរបស់ tweet នីមួយៗ៖
- លេខសម្គាល់ tweet ចំនួន 8 បៃ
- លេខសម្គាល់អ្នកប្រើប្រាស់ 32 បៃ
- 140 បៃនៃអត្ថបទ
- ប្រព័ន្ធផ្សព្វផ្សាយ - ជាមធ្យម 10 KB
- សរុប៖ ~10 KB
ជារៀងរាល់ខែ 150 TB នៃមាតិកា tweet ថ្មីត្រូវបានបង្កើត។
- * 500 លាន tweets ជារៀងរាល់ថ្ងៃ * 30 ថ្ងៃក្នុងមួយខែ * 10 KB ក្នុងមួយធ្វីត
- ក្នុងរយៈពេល 5.4 ឆ្នាំ មាន XNUMX PB នៃមាតិកា tweet ស្រស់។
មានសំណើអាន 100,000 ក្នុងមួយវិនាទី។
- * (400 សំណើក្នុងមួយវិនាទី / 1 ពាន់លានសំណើក្នុងមួយខែ) 250 ពាន់លានសំណើរអានជារៀងរាល់ខែ
មាន 6,000 tweets ក្នុងមួយវិនាទី។
- * (400 សំណើក្នុងមួយវិនាទី / 1 ពាន់លានសំណើក្នុងមួយខែ) 15 ពាន់លាន tweets ជារៀងរាល់ខែ
នៅលើ fanout, 60 ពាន់ tweets ត្រូវបានផ្ញើរៀងរាល់វិនាទី។
- Fanout ផ្តល់ 150 ពាន់លាន tweets រៀងរាល់ខែ * (400 សំណើក្នុងមួយវិនាទី / 1 ពាន់លានសំណើក្នុងមួយខែ) ។
4,000 ស្នើសុំព័ត៌មានរៀងរាល់វិនាទី
- * (400 សំណើក្នុងមួយវិនាទី / 1 ពាន់លានសំណើក្នុងមួយខែ) 10 ពាន់លានស្វែងរករៀងរាល់ខែ
ការបម្លែងមានប្រយោជន៍មួយចំនួន
- ជារៀងរាល់ខែ 2.5 លានវិនាទីឆ្លងកាត់។
- 2.5 លានសំណើក្នុងមួយខែតាមសំណើ 1 ក្នុងមួយវិនាទី
- 100 លានសំណើក្នុងមួយខែ x 40 សំណើក្នុងមួយវិនាទី
- 1 ពាន់លានសំណើក្នុងមួយខែ = 400 សំណើក្នុងមួយវិនាទី
ជំហានទី 2: ដ្យាក្រាមកម្រិតខ្ពស់
ជំហានទី 3៖ ការពន្យល់អំពីសមាសធាតុស្នូល
យើងអាចរក្សាទុក Tweet ផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់ ដើម្បីបញ្ចូលការកំណត់ពេលវេលារបស់អ្នកប្រើប្រាស់ (សកម្មភាពពីអ្នកប្រើប្រាស់) នៅក្នុងមូលដ្ឋានទិន្នន័យទំនាក់ទំនង ប្រសិនបើពួកគេដាក់ Tweet មួយ។ វាកាន់តែលំបាកក្នុងការចែកចាយ tweets និងបង្កើតបន្ទាត់ពេលវេលានៅផ្ទះ (សកម្មភាពពីបុគ្គលដែលអ្នកប្រើប្រាស់ធ្វើតាម)។
មូលដ្ឋានទិន្នន័យទំនាក់ទំនងធម្មតានឹងត្រូវបានគ្របដណ្ដប់ដោយការបញ្ចេញ tweet ទៅកាន់អ្នកតាមដានទាំងអស់ (60 tweets បញ្ជូនរាល់វិនាទី)។ យើងប្រហែលជាចង់ទៅជាមួយការផ្ទុកទិន្នន័យដែលសរសេរលឿនដូចជា មូលដ្ឋានទិន្នន័យ NoSQL ឬ Memory Cache ជាដើម។
ការអាន 1 មេកាបៃបន្តបន្ទាប់គ្នាពីអង្គចងចាំត្រូវចំណាយពេលប្រហែល 250 មីក្រូវិនាទី ប៉ុន្តែការអានពី SSD ចំណាយពេល 4 ដង ហើយការអានពីថាសត្រូវចំណាយពេល 80 ដង។
Object Store អាចត្រូវបានប្រើដើម្បីរក្សាទុកទិន្នន័យដូចជារូបភាព និងវីដេអូ។
- Web Server ដែលដើរតួជាប្រូកស៊ីបញ្ច្រាស ទទួលបាន tweet ពីអតិថិជន។
- សំណើត្រូវបានផ្ញើទៅម៉ាស៊ីនមេ សរសេរ API ដោយម៉ាស៊ីនមេបណ្តាញ។
- Write API រក្សាទុក tweet ទៅមូលដ្ឋានទិន្នន័យ SQL នៅក្នុងបន្ទាត់ពេលវេលារបស់អ្នកប្រើ។
សេវាកម្ម Fan-Out ត្រូវបានទាក់ទងដោយ Write API ហើយវាបំពេញការងារដូចខាងក្រោម។
- ស្វែងរកអ្នកដើរតាមរបស់អ្នកប្រើនៅក្នុង Memory Cache ដោយសួរសេវាកម្ម User Graph ។
- នៅលើ Memory Cache ធ្វីតត្រូវបានរក្សាទុកនៅក្នុងបន្ទាត់ពេលវេលាផ្ទះនៃអ្នកដើរតាមអ្នកប្រើ។
- 1,000 អ្នកតាមដាន = 1,000 រកមើល និងបញ្ចូល = O(n) ប្រតិបត្តិការ។
- tweet ត្រូវបានរក្សាទុកក្នុង Search Index Service សម្រាប់ការស្វែងរករហ័ស។
- Object Store ត្រូវបានប្រើដើម្បីរក្សាទុកប្រព័ន្ធផ្សព្វផ្សាយ។
- ផ្ញើការដាស់តឿនជំរុញដល់អ្នកដើរតាមតាមរយៈសេវាកម្មជូនដំណឹង។
- ដើម្បីផ្ញើការជូនដំណឹងដោយមិនសមកាលកម្ម វាប្រើជួរ។
យើងអាចប្រើប្រាស់បញ្ជីឈ្មោះ Redis ដែលមានរចនាសម្ព័ន្ធដូចខាងក្រោម ប្រសិនបើ Memory Cache របស់យើងគឺ Redis៖
ការកំណត់ពេលវេលានៅផ្ទះរបស់អ្នកប្រើប្រាស់នឹងត្រូវបានអាប់ដេតជាមួយនឹង tweet ថ្មី ដែលនឹងត្រូវបានរក្សាទុកនៅក្នុង Memory Cache។ យើងនឹងប្រើប្រាស់ REST API សាធារណៈខាងក្រោម៖
ការកំណត់ពេលវេលារបស់អ្នកប្រើប្រាស់ត្រូវបានមើលដោយអ្នកប្រើប្រាស់។
- ម៉ាស៊ីនមេបណ្តាញទទួលបានសំណើកំណត់ពេលវេលារបស់អ្នកប្រើពីអតិថិជន។
- សំណើត្រូវបានផ្ញើទៅម៉ាស៊ីនមេ Read API ដោយម៉ាស៊ីនមេគេហទំព័រ។
- អាន API សួរមូលដ្ឋានទិន្នន័យ SQL សម្រាប់ស៊ុមពេលវេលារបស់អ្នកប្រើ។
REST API នឹងដំណើរការស្រដៀងគ្នាទៅនឹងបន្ទាត់ពេលវេលានៅផ្ទះ ដោយមានករណីលើកលែងថា tweets ទាំងអស់នឹងមានប្រភពចេញពីអ្នកប្រើប្រាស់ជាជាងមនុស្សដែលពួកគេតាមដាន។
អ្នកប្រើប្រាស់ស្វែងរកពាក្យគន្លឹះ៖
- ម៉ាស៊ីនមេគេហទំព័រទទួលបានសំណើស្វែងរកពីអតិថិជន។
- សំណើត្រូវបានផ្ញើទៅម៉ាស៊ីនមេ API ស្វែងរកដោយម៉ាស៊ីនមេបណ្តាញ។
ជំហានទី 4: បន្ទាត់ពេលវេលា Twitter
ការបង្កើត Timeline គឺជាកិច្ចការដ៏លំបាកមួយ។ ការកំណត់ពេលវេលាបង្កើតម៉ាស៊ីនមេដែលភ្ជាប់ទៅបណ្តាញ ឬម៉ាស៊ីនមេកម្មវិធីត្រូវបានទាមទារ។
រាល់ពេលដែលអ្នកប្រើប្រាស់ចូល សេវាកម្មកំណត់ពេលវេលារក្សាដាននៃ tweets ថ្មីបំផុតពីអ្នកប្រើប្រាស់នៅក្នុងតារាងរបស់អ្នកតាមដាន ហើយធ្វើបច្ចុប្បន្នភាព ឬធ្វើឱ្យបន្ទាត់ពេលវេលារបស់អ្នកប្រើប្រាស់ឡើងវិញ។
យើងមិនអនុវត្តប្រព័ន្ធចំណាត់ថ្នាក់ណាមួយនៅទីនេះទេ។ ជំនួសមកវិញ យើងសន្មតថា ធ្វីតកំពូលទាំង 5 ពីអ្នកតាមដានរបស់អ្នកប្រើត្រូវបានបង្ហាញនៅក្នុងបន្ទាត់ពេលវេលាតាមលំដាប់នៃពេលវេលាបង្កើត។ យើងអាចរក្សាការបិទការធ្វើឱ្យស្រស់ 50-tweet ។ យើងនៅតែបញ្ឈប់ការធ្វើឱ្យស្រស់ឬបង្កើតបន្ទាត់ពេលវេលាបន្ទាប់ពីកម្រិតនោះត្រូវបានឈានដល់រហូតដល់អ្នកប្រើធ្វើឱ្យទំព័រឡើងវិញ។
ភាពយឺតយ៉ាវខ្ពស់ និងការព្រួយបារម្ភអំពីដំណើរការនឹងកើតចេញពីការបង្កើតមតិព័ត៌មានអ្នកប្រើប្រាស់ផ្ទាល់។ ផ្ទុយទៅវិញ ការបង្កើតស្ទ្រីមក្រៅបណ្តាញដែលអាចបង្ហាញភ្លាមៗគឺជាវិធីល្អបំផុតដើម្បីកែលម្អដំណើរការ។ ដំណើរការម៉ាស៊ីនមេកំណត់ពេលវេលាជាក់លាក់ដែល ping ម៉ាស៊ីនមេកម្មវិធីជាប្រចាំ ដើម្បីធ្វើបច្ចុប្បន្នភាពព័ត៌មានដោយផ្អែកលើពេលវេលាដែលវាត្រូវបានបង្កើត។
ក្បួនដោះស្រាយចំណាត់ថ្នាក់គួរតែគិតគូរពីសញ្ញាសំខាន់ៗ និងផ្តល់ទម្ងន់ដើម្បីធានាថាបន្ទាត់ពេលវេលារបស់អ្នកប្រើប្រាស់មិនត្រូវបានគ្របដណ្ដប់ដោយសម្ភារៈពីគណនីមួយ ឬច្រើនដែលពួកគេតាមដាននោះទេ។
កាន់តែច្បាស់ជាងនេះទៅទៀត យើងអាចជ្រើសរើសលក្ខណៈពិសេសដែលទាក់ទងនឹងភាពពាក់ព័ន្ធនៃធាតុព័ត៌មានណាមួយ ដូចជាចំនួននៃការចូលចិត្ត មតិយោបល់ ការចែករំលែក និងពេលវេលាធ្វើបច្ចុប្បន្នភាព។ លក្ខណៈវិនិច្ឆ័យនីមួយៗទាំងនេះគួរតែត្រូវបានប្រើដើម្បីវាយតម្លៃ tweet ហើយបន្ទាប់មកចំណាត់ថ្នាក់នោះគួរតែត្រូវបានប្រើដើម្បីបង្ហាញ tweets នៅលើបន្ទាត់ពេលវេលា។
តើយើងគួរដាស់តឿនអ្នកប្រើប្រាស់ឥតឈប់ឈរ នៅពេលដែលមាតិកាថ្មីសម្រាប់ព័ត៌មានរបស់ពួកគេមាន? អ្នកប្រើអាចរកឃើញថាវាមានប្រយោជន៍ក្នុងការជូនដំណឹងពេលទិន្នន័យថ្មីមាន។ ទោះជាយ៉ាងណាក៏ដោយ នៅលើឧបករណ៍ចល័ត នៅពេលដែលការប្រើប្រាស់ទិន្នន័យមានតម្លៃថ្លៃ វាអាចខ្ជះខ្ជាយកម្រិតបញ្ជូន។
ជាលទ្ធផល យើងអាចជ្រើសរើសមិនរុញទិន្នន័យទៅកាន់ឧបករណ៍ចល័ត ហើយជំនួសមកវិញឱ្យអ្នកប្រើប្រាស់ "ទាញដើម្បីផ្ទុកឡើងវិញ" សម្រាប់ការបង្ហោះថ្មី។
ជំហានទី 5: ការរចនាមាត្រដ្ឋាន
ឧបសគ្គដែលអាចកើតមានគឺសេវាកម្ម Fanout ។ អ្នកប្រើ Twitter ដែលមានអ្នកតាមរាប់លាននាក់នឹងត្រូវរង់ចាំប៉ុន្មាននាទីដើម្បីឱ្យ Tweet របស់ពួកគេចេញផ្សាយ។ នេះអាចបណ្តាលឱ្យមានការប្រណាំងជាមួយនឹងការឆ្លើយតបទៅនឹង Tweet ដែលយើងអាចជៀសវាងបានដោយបញ្ជាទិញ Tweet ឡើងវិញនៅពេលបម្រើ។
យើងក៏អាចទប់ស្កាត់ការផ្សព្វផ្សាយ Tweet ពីមនុស្សដែលមានចំនួនអ្នកតាមដានច្រើន។ ជំនួសមកវិញ យើងអាចធ្វើការស្វែងរក tweets ពីបុគ្គលដែលមានការតាមដានខ្ពស់ បញ្ចូលលទ្ធផលស្វែងរកជាមួយនឹងលទ្ធផល timeline ផ្ទះរបស់អ្នកប្រើប្រាស់ ហើយបន្ទាប់មកតម្រៀប tweets ឡើងវិញនៅពេលបម្រើ។
ការកែលម្អបន្ថែមរួមមាន:
- រក្សាទុកតែពីរបីរយ tweets នៅក្នុង Memory Cache សម្រាប់បន្ទាត់ពេលវេលាផ្ទះនីមួយៗ។
- នៅក្នុង Memory Cache មានតែព័ត៌មានពេលវេលាផ្ទះរបស់អ្នកប្រើប្រាស់សកម្មប៉ុណ្ណោះដែលត្រូវបានរក្សាទុក។
- យើងអាចបង្កើតកាលប្បវត្តិឡើងវិញពីមូលដ្ឋានទិន្នន័យ SQL ប្រសិនបើអ្នកប្រើមិនសកម្មក្នុងរយៈពេល 30 ថ្ងៃមុន។
- ដើម្បីស្វែងយល់ថាអ្នកណាជាអ្នកប្រើប្រាស់ សូមប្រើប្រាស់សេវា User Graph ។
- បន្ថែម tweets ទៅ Memory Cache ដោយទាញយកពួកវាពី SQL Database ។
- សេវាកម្មព័ត៌មាន Tweet អាចរក្សាទុក tweets ដែលមានតម្លៃត្រឹមតែមួយខែប៉ុណ្ណោះ។
- នៅក្នុងសេវាកម្មព័ត៌មានអ្នកប្រើប្រាស់ មានតែអ្នកប្រើប្រាស់សកម្មប៉ុណ្ណោះដែលត្រូវបានរក្សាទុក។
- ដើម្បីរក្សាភាពយឺតយ៉ាវទាប ចង្កោមស្វែងរកទំនងជាត្រូវការដើម្បីរក្សាធ្វីតនៅក្នុងសតិ។
សន្និដ្ឋាន
ទោះបីជា Twitter ជាអង្គការធំក៏ដោយ វាមានដំណើរការល្អជាង ការយល់ដឹងអំពីការរចនាប្រព័ន្ធ. ខ្ញុំបានប្រឹងប្រែងអស់ពីសមត្ថភាពដើម្បីផ្តល់ឱ្យអ្នកនូវទិដ្ឋភាពទូទៅកម្រិតខ្ពស់នៃបន្ទាត់ពេលវេលា Twitter ។
ខ្ញុំសង្ឃឹមថាអ្នកទទួលបានព័ត៌មានមានប្រយោជន៍ពីវា ហើយអាចប្រើវាឱ្យបានល្អ។
សូមផ្ដល់យោបល់