Мазмунга өтүү

Өнүккөн долбоор: реалдуу убакыт микросервиси

Сабактын башталышы

Өнүккөн долбоор: реалдуу убакыт микросервиси

Жыйынтыктоочу долбоор: чыныгы трафикти көтөрө турган жана бир процесстен ашып масштабдалган тирүү лидерлер тактасынын бир бүтүн сервисин долбоорлоп куруу.

Негизги идея: бул курстун бардык түшүнүктөрү -- HTTP-серверлер, EventEmitter, асинхрондук киргизүү-чыгаруу, чөйрө аркылуу конфигурация, SQL жана тестирлөө -- эми бир жайгаштырыла турган бирдикке биригет. Биз реалдуу убакыт лидерлер тактасынын микросервисин курабыз: оюнчулар упайларын HTTP аркылуу жөнөтөт, сервис аларды заматта иреттейт, ал эми ар бир туташкан кардар тактанын чокусунун жаңырышын тирүүлөй WebSocket аркылуу көрөт -- сервис жүк тең салмактагычтын артында бир нече контейнер катары иштеп жатса да.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • реалдуу убакыт сервисинин архитектурасын тартып, анын ар бир бөлүгүн негиздей аласыз;
  • Redis иреттелген көптүгүн SQLдеги ишенимдүү чындык булагынын алдында тез иреттөө кэши катары колдоно аласыз;
  • WebSocket шлюзу аркылуу браузерлерге тирүү жаңылоолорду жөнөтө аласыз;
  • ошол жаңылоолорду Redis Pub/Sub аркылуу бир нече нускага тарата аласыз;
  • компромисстер жөнүндө чынчыл ой жүгүртө аласыз -- туруксуздук, эң көп бир жолу жеткирүү, жаңылоолорду бириктирүү;
  • бүт системаны Docker Compose менен таңгактап, аны туура токтото аласыз.

1. Биз эмне курабыз

Онлайн оюн үчүн лидерлер тактасынын сервиси. Анын үч милдети бар, ал эми кызыктуу инженерия -- үчөөнү тең бир убакта, туура аткаруу:

  • Упайды кабыл алуу: оюнчу жана мааниси менен POST /scores. Бул ишенимдүү болушу керек -- кыйроо жөнөтүлгөн упайды жоготпошу керек.
  • Тез иреттөө: оюнчулардын санына карабай учурдагы алдыңкы ондукту туруктуу, миллисекунддан аз убакытта кайтаруу.
  • Тирүү таратуу: тактаны караган ар бир браузер жаңы рейтингди секунддун үлүшүндө, сурамжылоосуз (polling) көрөт.

"Микросервис" деген сөз жөн гана бул бир так жоопкерчилиги (лидерлер тактасы) бар бир сервис экенин билдирет, өз маалымат сактагычтары менен сүйлөшөт жана өзүнчө жайгаштырылат. Ал ошондой эле аутентификация сервери же оюнчуларды тандоо сервиси болууга аракет кылбайт -- булар ал чакыра ала турган өзүнчө бирдиктер.

Эмне үчүн жөн гана SQL суроо-талап эмес? Сиз "алдыңкы 10ду" SELECT ... ORDER BY score DESC LIMIT 10 менен жооптой алмаксыз. Бул төмөн трафикте иштейт. Бирок секундасына миңдеген жазуу учурунда ар бир окууда өсүп жаткан тактаны иреттөө жана жаңы жыйынтыктарды миңдеген тирүү сокетке жөнөтүү -- дал ушул жерде жөнөкөй бир процесстик схема кулайт. Теманын калган бөлүгү -- профессионалдар мунун кантип алдын алары.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө