ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

Π£ ΠΏΠΎΡΠ»Π΅Π΄ΡšΠΈΡ… Π§Π»Π°Π½Π°ΠΊ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ смо Ρ‚Π΅ΠΎΡ€ΠΈΡ˜ΡΠΊΠ΅ основС Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. Π’Ρ€Π΅ΠΌΠ΅ јС Π΄Π° Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠΎ ΠΎ Ρ‚ΠΎΠΊΠΎΠ²ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Π½Π°Ρ‡ΠΈΠ½ΠΈΠΌΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… Π•Ρ€Π»Π°Π½Π³/Π•Π»ΠΈΠΊΠΈΡ€ систСма ΠΈ обрасцима слања ΠΏΠΎΡ€ΡƒΠΊΠ° Ρƒ њима:

  • Π—Π°Ρ…Ρ‚Π΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€
  • РСкуСст-Π¦ΡƒΠ½ΠΊΠ΅Π΄ РСспонсС
  • ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€ са Π·Π°Ρ…Ρ‚Π΅Π²ΠΎΠΌ
  • објави-ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚ΠΈ сС
  • Π˜Π½Π²Π΅Ρ€Ρ‚Π΅Π΄ ΠŸΡƒΠ±Π»ΠΈΡΡ… БубсцрибС
  • Π”ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ°

БОА, МБА ΠΈ Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ°

БОА, МБА су систСмскС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ којС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ систСма, Π΄ΠΎΠΊ Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Ρ’ΡƒΡ˜Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π΅ Π·Π° ΡšΠΈΡ…ΠΎΠ²Ρƒ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ.

НС ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΠΏΡ€ΠΎΠΏΠ°Π³ΠΈΡ€Π°ΠΌ ΠΎΠ²Ρƒ ΠΈΠ»ΠΈ ΠΎΠ½Ρƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ систСма. Ја сам Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Ρƒ Π½Π°Ρ˜Π΅Ρ„ΠΈΠΊΠ°ΡΠ½ΠΈΡ˜ΠΈΡ… ΠΈ Π½Π°Ρ˜ΠΊΠΎΡ€ΠΈΡΠ½ΠΈΡ˜ΠΈΡ… пракси Π·Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ ΠΈ посао. ΠšΠΎΡ˜Ρƒ Π³ΠΎΠ΄ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ Π΄Π° ΠΈΠ·Π°Π±Π΅Ρ€Π΅ΠΌΠΎ, Π±ΠΎΡ™Π΅ јС ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ систСмскС Π±Π»ΠΎΠΊΠΎΠ²Π΅ са ΠΎΠΊΠΎΠΌ Π½Π° Π£Π½ΠΈΠΊ-ΠΏΡƒΡ‚: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ са ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΠΌ ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡˆΡ›Ρƒ, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π΅ Π·Π° ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½Π΅ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚Π΅. АПИ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΎΠ±Π°Π²Ρ™Π°Ρ˜Ρƒ Π½Π°Ρ˜Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΈΡ˜Π΅ Ρ€Π°Π΄ΡšΠ΅ са Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈΠΌΠ°.

Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° - ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ ΠΈΠΌΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈ - посрСдник ΠΏΠΎΡ€ΡƒΠΊΠ°. ЊСгова Π³Π»Π°Π²Π½Π° сврха јС ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅ ΠΈ слањС ΠΏΠΎΡ€ΡƒΠΊΠ°. ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€Π°Π½ јС Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ΅ Π·Π° слањС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°, Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΡšΠ΅ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈΡ… ΠΊΠ°Π½Π°Π»Π° Π·Π° прСнос ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΡƒΠ½ΡƒΡ‚Π°Ρ€ систСма, Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅, ΠΊΠ°ΠΎ ΠΈ Ρ€ΡƒΠΊΠΎΠ²Π°ΡšΠ΅ ΠΊΠ²Π°Ρ€ΠΎΠ²ΠΈΠΌΠ° Π½Π° Π½ΠΈΠ²ΠΎΡƒ систСма.
РазвијСнС ΠΏΠΎΡ€ΡƒΠΊΠ΅ Π½Π΅ ΠΏΠΎΠΊΡƒΡˆΠ°Π²Π°Ρ˜Ρƒ Π΄Π° сС Ρ‚Π°ΠΊΠΌΠΈΡ‡Π΅ са ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ Ρ€Π°Π±Π±ΠΈΡ‚ΠΌΠΊ. ЊСговС Π³Π»Π°Π²Π½Π΅ карактСристикС:

  • Π”ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°.
    Π’Π°Ρ‡ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ сС ΠΌΠΎΠ³Ρƒ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Π½Π° свим Ρ‡Π²ΠΎΡ€ΠΎΠ²ΠΈΠΌΠ° кластСра, ΡˆΡ‚ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Ρƒ који ΠΈΡ… користи.
  • ΠˆΠ΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΡΡ‚.
    Π€ΠΎΠΊΡƒΡΠΈΡ€Π°Ρ˜Ρ‚Π΅ сС Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ стандардног ΠΊΠΎΠ΄Π° ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΡΡ‚ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ°.
  • Π‘ΠΎΡ™Π΅ пСрформансС.
    НС ΠΏΠΎΠΊΡƒΡˆΠ°Π²Π°ΠΌΠΎ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΈΠΌΠΎ функционалност Ρ€Π°Π±Π±ΠΈΡ‚ΠΌΠΊ-Π°, Π²Π΅Ρ› Π±ΠΈΡ€Π°ΠΌΠΎ само архитСктонски ΠΈ транспортни слој, који ΡˆΡ‚ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΈΡ˜Π΅ ΡƒΠΊΠ»Π°ΠΏΠ°ΠΌΠΎ Ρƒ ОВП, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ˜ΡƒΡ›ΠΈ Ρ‚Ρ€ΠΎΡˆΠΊΠΎΠ²Π΅.
  • ЀлСксибилност.
    Π‘Π²Π°ΠΊΠ° услуга ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Ρ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ шаблона Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ.
  • ΠžΡ‚ΠΏΠΎΡ€Π½ΠΎΡΡ‚ ΠΏΠΎ Π΄ΠΈΠ·Π°Ρ˜Π½Ρƒ.
  • ΠŸΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Ρ™ΠΈΠ²ΠΎΡΡ‚.
    Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° растС са Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΎΠΌ. Како сС ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅ ΠΏΠΎΠ²Π΅Ρ›Π°Π²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° прСмСститС Ρ‚Π°Ρ‡ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ Π½Π° одвојСнС машинС.

НапомСна. Π£ смислу ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ ΠΊΠΎΠ΄Π°, ΠΌΠ΅Ρ‚Π°-ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΈ су Π²Π΅ΠΎΠΌΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° слоТСнС Π•Ρ€Π»Π°Π½Π³/Π•Π»ΠΈΠΊΠΈΡ€ систСмС. Π‘Π°Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° јС Ρƒ јСдном ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Ρƒ - ΠΊΡ€ΠΎΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ. Π˜ΡΡ‚ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΎ, микросСрвисС су ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°Π½Π΅ ΡˆΡ‚ΠΎ јС вишС ΠΌΠΎΠ³ΡƒΡ›Π΅ ΠΈ ΠΎΠ±Π°Π²Ρ™Π°Ρ˜Ρƒ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ којС су ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π΅ Π·Π° посСбан Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚. Π‘Π° ΠΎΠ²ΠΈΠΌ приступом, Π»Π°ΠΊΠΎ јС ΠΎΠ΄Ρ€ΠΆΠ°Π²Π°Ρ‚ΠΈ АПИ Ρ†Π΅Π»ΠΎΠ³ систСма, Π»Π°ΠΊΠΎ јС уносити ΠΈΠ·ΠΌΠ΅Π½Π΅, Π·Π³ΠΎΠ΄Π½ΠΎ јС писати тСстовС Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π΅.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ систСма ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Ρ˜Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°. Π‘Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡ˜Π΅ Ρ€Π°Π·ΠΌΡ˜Π΅Π½Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ°, свака услуга ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈΡ… Ρ„Π°Π·Π°:

  • Π˜Π½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° услугС.
    Π£ овој Ρ„Π°Π·ΠΈ сС дСшава ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ процСса који ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° услугу ΠΈ зависности.
  • НаправитС Ρ‚Π°Ρ‡ΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Π½Π΅.
    Услуга ΠΌΠΎΠΆΠ΅ Π΄Π° користи статичку Ρ‚Π°Ρ‡ΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ Π½Π°Π²Π΅Π΄Π΅Π½Ρƒ Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜ΠΈ хоста ΠΈΠ»ΠΈ Π΄Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΊΡ€Π΅ΠΈΡ€Π° Ρ‚Π°Ρ‡ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Π½Π΅.
  • Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π° услугС.
    Π”Π° Π±ΠΈ услуга слуТила Π·Π°Ρ…Ρ‚Π΅Π²Π΅, ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ рСгистрована Π½Π° мСсту Ρ€Π°Π·ΠΌΠ΅Π½Π΅.
  • Нормалан Ρ€Π°Π΄.
    Услуга Ρ€Π°Π΄ΠΈ користан посао.
  • Π—Π°Π²Ρ€ΡˆΠ΅Ρ‚Π°ΠΊ Ρ€Π°Π΄ΠΎΠ²Π°.
    ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ 2 врстС ΠΈΡΠΊΡ™ΡƒΡ‡Π΅ΡšΠ°: Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ ΠΈ Ρ…ΠΈΡ‚Π½ΠΎ. Π‘Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈΠΌ сСрвисом, ΠΈΡΠΊΡ™ΡƒΡ‡ΡƒΡ˜Π΅ сС са мСста Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΈ зауставља. Π£ Ρ…ΠΈΡ‚Π½ΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ°, Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π° јСдан ΠΎΠ΄ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡ˜Π° прСласка Π½Π° Π³Ρ€Π΅ΡˆΠΊΡƒ.

ИзглСда ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ, Π°Π»ΠΈ ΠΊΠΎΠ΄ нијС Ρ‚ΠΎΠ»ΠΈΠΊΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π° са ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΌΠ° Π±ΠΈΡ›Π΅ Π΄Π°Ρ‚ΠΈ Ρƒ Π°Π½Π°Π»ΠΈΠ·ΠΈ шаблона Π½Π΅ΡˆΡ‚ΠΎ каснијС.

Π Π°Π·ΠΌΠ΅Π½Π΅

Π’Π°Ρ‡ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Π½Π΅ јС процСс Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ° који ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π΅ са ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠ° ΡƒΠ½ΡƒΡ‚Π°Ρ€ шаблона Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΠ°. Π£ свим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΠΌΠ° Ρƒ наставку, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Ρ˜Ρƒ ΠΏΡ€Π΅ΠΊΠΎ Ρ‚Π°Ρ‡Π°ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Π½Π΅, Ρ‡ΠΈΡ˜Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΠ°.

ΠžΠ±Ρ€Π°ΡΡ†ΠΈ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ° (ΠœΠ•ΠŸ)

Π£ Π³Π»ΠΎΠ±Π°Π»Ρƒ, обрасци Ρ€Π°Π·ΠΌΠ΅Π½Π΅ сС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΠΈ Π½Π° двостранС ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Ρ€Π°Π½Π΅. ΠŸΡ€Π²ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ˜Ρƒ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π΄ΠΎΠ»Π°Π·Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΡƒ, Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅. ΠšΠ»Π°ΡΠΈΡ‡Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ двосмСрног обрасца Ρƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚-сСрвСр јС ΠΎΠ±Ρ€Π°Π·Π°Ρ† Π—Π°Ρ…Ρ‚Π΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€. Π Π°Π·ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ шаблон ΠΈ њСговС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π—Π°Ρ…Ρ‚Π΅Π²-ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΈΠ»ΠΈ РПЦ

РПЦ сС користи ΠΊΠ°Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° добијСмо ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠ³ процСса. Овај процСс сС ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ Π½Π° истом хосту ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚Ρƒ. Испод јС Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π΅ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π° ΠΈ сСрвСра ΠΊΡ€ΠΎΠ· Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΠ°.

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

ΠŸΠΎΡˆΡ‚ΠΎ јС Ρ€Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ асинхрона, Ρ€Π°Π·ΠΌΠ΅Π½Π° Π·Π° ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π° јС ΠΏΠΎΠ΄Π΅Ρ™Π΅Π½Π° Ρƒ 2 Ρ„Π°Π·Π΅:

  1. ΡˆΠ°Ρ™Π΅ Π·Π°Ρ…Ρ‚Π΅Π²

    messaging:request(Exchange, ResponseMatchingTag, RequestDefinition, HandlerProcess).

    Ρ€Π°Π·ΠΌΠ΅Π½Π° β€’ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈ Π½Π°Π·ΠΈΠ² Ρ‚Π°Ρ‡ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Π½Π΅
    Π Π΅ΡΠΏΠΎΠ½ΡΠ΅ΠœΠ°Ρ‚Ρ†Ρ…ΠΈΠ½Π³Π’Π°Π³ β€’ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° ΠΎΠ±Ρ€Π°Π΄Ρƒ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ слања Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈΡ… Π·Π°Ρ…Ρ‚Π΅Π²Π° који ΠΏΡ€ΠΈΠΏΠ°Π΄Π°Ρ˜Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ корисницима.
    Π”Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π° Π·Π°Ρ…Ρ‚Π΅Π²Π° β€’ Ρ‚Π΅Π»ΠΎ Π·Π°Ρ…Ρ‚Π΅Π²Π°
    Π₯Π°Π½Π΄Π»Π΅Ρ€ΠŸΡ€ΠΎΡ†Π΅ΡΡ β€’ ΠŸΠ˜Π” Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π°. Овај процСс Ρ›Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ΄ сСрвСра.

  2. ΠžΠ±Ρ€Π°Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°

    handle_info(#'$msg'{exchange = EXCHANGE, tag = ResponseMatchingTag,message = ResponsePayload}, State)

    РСспонсСПаилоад - ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ сСрвСра.

Π—Π° сСрвСр, процСс сС Ρ‚Π°ΠΊΠΎΡ’Π΅ ΡΠ°ΡΡ‚ΠΎΡ˜ΠΈ ΠΎΠ΄ 2 Ρ„Π°Π·Π΅:

  1. Π˜Π½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Ρ‚Π°Ρ‡ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Π½Π΅
  2. ΠžΠ±Ρ€Π°Π΄Π° Π΄ΠΎΠ»Π°Π·Π½ΠΈΡ… Π·Π°Ρ…Ρ‚Π΅Π²Π°

Π˜Π»ΡƒΡΡ‚Ρ€ΡƒΡ˜ΠΌΠΎ овај шаблон ΠΊΠΎΠ΄ΠΎΠΌ. Π Π΅Ρ†ΠΈΠΌΠΎ Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Ρƒ услугу која ΠΎΠ±Π΅Π·Π±Π΅Ρ’ΡƒΡ˜Π΅ јСдан ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°Ρ‡Π½ΠΎΠ³ Π²Ρ€Π΅ΠΌΠ΅Π½Π°.

БСрвСрски ΠΊΠΎΠ΄

Π₯ајдС Π΄Π° прСмСстимо Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Ρƒ АПИ-ја услугС Π½Π° Π°ΠΏΠΈ.Ρ…Ρ€Π»:

%% =====================================================
%%  entities
%% =====================================================
-record(time, {
  unixtime :: non_neg_integer(),
  datetime :: binary()
}).

-record(time_error, {
  code :: non_neg_integer(),
  error :: term()
}).

%% =====================================================
%%  methods
%% =====================================================
-record(time_req, {
  opts :: term()
}).
-record(time_resp, {
  result :: #time{} | #time_error{}
}).

Π”Π΅Ρ„ΠΈΠ½ΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ услугС Ρƒ Ρ‚ΠΈΠΌΠ΅_Ρ†ΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€.Π΅Ρ€Π»

%% Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. Вставив Π΅Π³ΠΎ Π² шаблон gen_server ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ сСрвис.

%% инициализация gen_server
init(Args) ->
  %% ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°
  messaging:monitor_exchange(req_resp, ?EXCHANGE, default, self())
  {ok, #{}}.

%% ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° события ΠΏΠΎΡ‚Π΅Ρ€ΠΈ связи с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΆΠ΅ событиС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚, Ссли Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π° Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ.
handle_info(#exchange_die{exchange = ?EXCHANGE}, State) ->
  erlang:send(self(), monitor_exchange),
  {noreply, State};

%% ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° API
handle_info(#time_req{opts = _Opts}, State) ->
  messaging:response_once(Client, #time_resp{
result = #time{ unixtime = time_utils:unixtime(now()), datetime = time_utils:iso8601_fmt(now())}
  });
  {noreply, State};

%% Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ gen_server
terminate(_Reason, _State) ->
  messaging:demonitor_exchange(req_resp, ?EXCHANGE, default, self()),
  ok.

Π¨ΠΈΡ„Ρ€Π° ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π°

Π”Π° бистС послали Π·Π°Ρ…Ρ‚Π΅Π² услузи, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ·ΠΎΠ²Π΅Ρ‚Π΅ АПИ Π·Π°Ρ…Ρ‚Π΅Π²Π° Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΠ° Π±ΠΈΠ»ΠΎ Π³Π΄Π΅ Π½Π° ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Ρƒ:

case messaging:request(?EXCHANGE, tag, #time_req{opts = #{}}, self()) of
    ok -> ok;
    _ -> %% repeat or fail logic
end

Π£ дистрибуираном систСму, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ Π²Π΅ΠΎΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π°, Π° Ρƒ Π²Ρ€Π΅ΠΌΠ΅ Π·Π°Ρ…Ρ‚Π΅Π²Π°, ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΌΠΎΠΆΠ΄Π° још нијС ΠΏΠΎΡ‡Π΅Π»Π° ΠΈΠ»ΠΈ сСрвисни ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ спрСман Π΄Π° услуТи Π·Π°Ρ…Ρ‚Π΅Π². Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° Ρ€Π°Π·ΠΌΠ΅Π½Ρƒ ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΈ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π³Ρ€Π΅ΡˆΠΊΠ΅.
Након ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ слања ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Ρƒ, сСрвис Ρ›Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ ΠΈΠ»ΠΈ Π³Ρ€Π΅ΡˆΠΊΡƒ.
Π₯ајдС Π΄Π° ΠΎΠ±Ρ€Π°Π΄ΠΈΠΌΠΎ ΠΎΠ±Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π° Ρƒ Ρ…Π°Π½Π΄Π»Π΅_ΠΈΠ½Ρ„ΠΎ:

handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time{unixtime = Utime}}}, State) ->
  ?debugVal(Utime),
  {noreply, State};

handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time_error{code = ErrorCode}}}, State) ->
  ?debugVal({error, ErrorCode}),
  {noreply, State};

РСкуСст-Π¦ΡƒΠ½ΠΊΠ΅Π΄ РСспонсС

ΠΠ°Ρ˜Π±ΠΎΡ™Π΅ јС ΠΈΠ·Π±Π΅Π³Π°Π²Π°Ρ‚ΠΈ слањС ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈΡ… ΠΏΠΎΡ€ΡƒΠΊΠ°. Од Ρ‚ΠΎΠ³Π° зависи одзивност ΠΈ стабилан Ρ€Π°Π΄ Ρ†Π΅Π»ΠΎΠ³ систСма. Ако ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° ΡƒΠΏΠΈΡ‚ Π·Π°ΡƒΠ·ΠΈΠΌΠ° ΠΏΡƒΠ½ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅, ΠΎΠ½Π΄Π° јС Ρ€Π°Π·Π΄Π²Π°Ρ˜Π°ΡšΠ΅ ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ.

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

Π•Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊΠ²ΠΈΡ… ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²Π°:

  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡšΡƒΡ˜Ρƒ Π±ΠΈΠ½Π°Ρ€Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. РазбијањС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π° Π½Π° ΠΌΠ°Π»Π΅ Π΄Π΅Π»ΠΎΠ²Π΅ ΠΏΠΎΠΌΠ°ΠΆΠ΅ Π΄Π° сС Сфикасно Ρ€Π°Π΄ΠΈ са Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° Π±ΠΈΠ»ΠΎ којС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ ΠΈ Π΄Π° сС Π½Π΅ ΡƒΡ…Π²Π°Ρ‚ΠΈ ΠΏΡ€Π΅Π»ΠΈΠ²Π°ΡšΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅.
  • Огласи. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π°Π±Π΅Ρ€Π΅ΠΌΠΎ свС записС ΠΈΠ· ΠΎΠ³Ρ€ΠΎΠΌΠ½Π΅ Ρ‚Π°Π±Π΅Π»Π΅ Ρƒ Π±Π°Π·ΠΈ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ прослСдимо ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΎΡ˜ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ.

Π’Π°ΠΊΠ²Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅ Π½Π°Π·ΠΈΠ²Π°ΠΌ Π»ΠΎΠΊΠΎΠΌΠΎΡ‚ΠΈΠ²ΠΎΠΌ. Π£ сваком ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, 1024 ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΎΠ΄ 1 ΠœΠ‘ су Π±ΠΎΡ™Π΅ ΠΎΠ΄ јСднС ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΎΠ΄ 1 Π“Π‘.

Π£ кластСру Π•Ρ€Π»Π°Π½Π³ добијамо Π΄ΠΎΠ΄Π°Ρ‚Π½Ρƒ корист - смањСњС ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ° Π½Π° Ρ‚Π°Ρ‡ΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Π½Π΅ ΠΈ ΠΌΡ€Π΅ΠΆΠΈ, ΠΏΠΎΡˆΡ‚ΠΎ сС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ ΠΎΠ΄ΠΌΠ°Ρ… ΡˆΠ°Ρ™Ρƒ ΠΏΡ€ΠΈΠΌΠ°ΠΎΡ†Ρƒ, Π·Π°ΠΎΠ±ΠΈΠ»Π°Π·Π΅Ρ›ΠΈ Ρ‚Π°Ρ‡ΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Π½Π΅.

ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€ са Π·Π°Ρ…Ρ‚Π΅Π²ΠΎΠΌ

Ово јС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Ρ€Π΅Ρ‚ΠΊΠ° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° РПЦ обрасца Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ ΠΊΠΎΠ½Π²Π΅Ρ€Π·Π°Ρ†ΠΈΡ˜ΡΠΊΠΈΡ… систСма.

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

Објави-ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚ΠΈ сС (стабло Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°)

БистСми Π²ΠΎΡ’Π΅Π½ΠΈ Π΄ΠΎΠ³Π°Ρ’Π°Ρ˜ΠΈΠΌΠ° ΠΈΡΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Ρƒ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°Ρ‡ΠΈΠΌΠ° Ρ‡ΠΈΠΌ Π±ΡƒΠ΄Ρƒ спрСмни. ΠŸΡ€Π΅ΠΌΠ° Ρ‚ΠΎΠΌΠ΅, систСми су склонији пусх ΠΌΠΎΠ΄Π΅Π»Ρƒ Π½Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»Ρƒ ΠΏΠΎΠ²Π»Π°Ρ‡Π΅ΡšΠ° ΠΈΠ»ΠΈ Π°Π½ΠΊΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ°. Ова Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Π½Π΅ Ρ‚Ρ€ΠΎΡˆΠΈΡ‚Π΅ рСсурсС сталним Ρ‚Ρ€Π°ΠΆΠ΅ΡšΠ΅ΠΌ ΠΈ Ρ‡Π΅ΠΊΠ°ΡšΠ΅ΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.
Π‘Π»ΠΈΠΊΠ° ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ процСс Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°Ρ‡ΠΈΠΌΠ° који су ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ›Π΅Π½ΠΈ Π½Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Ρƒ Ρ‚Π΅ΠΌΡƒ.

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

ΠšΠ»Π°ΡΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ΠΎΠ²ΠΎΠ³ обрасца су Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° ΡΡ‚Π°ΡšΠ°: свСт ΠΈΠ³Ρ€Π΅ Ρƒ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈΠΌ ΠΈΠ³Ρ€Π°ΠΌΠ°, Ρ‚Ρ€ΠΆΠΈΡˆΠ½ΠΈ ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π½Π° Π±Π΅Ρ€Π·Π°ΠΌΠ°, кориснС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ Ρ„ΠΈΠ΄ΠΎΠ²ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Π£Π·ΠΌΠΈΡ‚Π΅ Ρƒ ΠΎΠ±Π·ΠΈΡ€ ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΡ‡ΠΊΠΈ ΠΊΠΎΠ΄:

init(_Args) ->
  %% подписываСмся Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΠΊ, ΠΊΠ»ΡŽΡ‡ = key
  messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
  {ok, #{}}.

handle_info(#exchange_die{exchange = ?SUBSCRIPTION}, State) ->
  %% Ссли Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π° нСдоступна, Ρ‚ΠΎ пытаСмся ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ
  messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
  {noreply, State};

%% ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠ΅ сообщСния
handle_info(#'$msg'{exchange = ?SUBSCRIPTION, message = Msg}, State) ->
  ?debugVal(Msg),
  {noreply, State};

%% ΠΏΡ€ΠΈ остановкС потрСбитСля - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π°
terminate(_Reason, _State) ->
  messaging:unsubscribe(?SUBSCRIPTION, key, tag, self()),
  ok.

Π˜Π·Π²ΠΎΡ€ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ·Π²Π°Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ ΠΎΠ±Ρ˜Π°Π²Ρ™ΠΈΠ²Π°ΡšΠ° ΠΏΠΎΡ€ΡƒΠΊΠ΅ Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΠΌ мСсту:

messaging:publish_message(Exchange, Key, Message).

Ρ€Π°Π·ΠΌΠ΅Π½Π° - Π½Π°Π·ΠΈΠ² мСста Ρ€Π°Π·ΠΌΠ΅Π½Π΅,
ΠšΡ™ΡƒΡ‡ β€’ ΠΊΡ™ΡƒΡ‡ Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅
ΠΏΠΎΡ€ΡƒΠΊΠ° - носивост

Π˜Π½Π²Π΅Ρ€Ρ‚Π΅Π΄ ΠŸΡƒΠ±Π»ΠΈΡΡ… БубсцрибС

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

ΠŸΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜ΡƒΡ›ΠΈ ΠΏΡƒΠ±-суб, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π·Π°Ρ† који јС Π·Π³ΠΎΠ΄Π°Π½ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅. Π‘ΠΊΡƒΠΏ ΠΈΠ·Π²ΠΎΡ€Π° ΠΈ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°Ρ‡Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚. На слици јС ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π½ ΡΠ»ΡƒΡ‡Π°Ρ˜ са јСдним ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°Ρ‡Π΅ΠΌ ΠΈ вишС ΠΈΠ·Π²ΠΎΡ€Π°.

ΠžΠ±Ρ€Π°Π·Π°Ρ† расподСлС Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ°

Π£ скоро сваком ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ Π·Π°Π΄Π°Ρ†ΠΈ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½Π΅ ΠΎΠ±Ρ€Π°Π΄Π΅, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су Π³Π΅Π½Π΅Ρ€ΠΈΡΠ°ΡšΠ΅ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜Π°, испорука ΠΎΠ±Π°Π²Π΅ΡˆΡ‚Π΅ΡšΠ° ΠΈ ΠΏΡ€ΠΈΡ˜Π΅ΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΎΠ΄ систСма Ρ‚Ρ€Π΅Ρ›ΠΈΡ… страна. ΠŸΡ€ΠΎΠΏΡƒΡΠ½ΠΎΡΡ‚ систСма који ΠΎΠ±Π°Π²Ρ™Π° ΠΎΠ²Π΅ Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ Π»Π°ΠΊΠΎ сС ΠΏΠΎΠ²Π΅Ρ›Π°Π²Π° додавањСм процСсора. ΠžΡΡ‚Π°Ρ˜Π΅ Π½Π°ΠΌ само Π΄Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΠΌΠΎ кластСр процСсора ΠΈ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распорСдимо Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΡšΠΈΡ….

Π Π°Π·ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ којС Π½Π°ΡΡ‚Π°Ρ˜Ρƒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ 3 Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π°. Π§Π°ΠΊ ΠΈΡƒ Ρ„Π°Π·ΠΈ расподСлС Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ° поставља сС ΠΏΠΈΡ‚Π°ΡšΠ΅ правСдности расподСлС ΠΈ ΠΏΡ€Π΅Π»ΠΈΠ²Π°ΡšΠ° Ρ€ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ†Π°. ΠšΡ€ΡƒΠΆΠ½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° правичност, Π° ΠΊΠ°ΠΊΠΎ бисмо ΠΈΠ·Π±Π΅Π³Π»ΠΈ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Ρƒ ΠΏΡ€Π΅Π»ΠΈΠ²Π°ΡšΠ° Ρ€ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ†Π°, ΡƒΠ²Π΅ΡˆΡ›Π΅ΠΌΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ΅ ΠΏΡ€Π΅Ρ„Π΅Ρ‚Ρ†Ρ…_Π»ΠΈΠΌΠΈΡ‚. Π£ ΠΏΡ€Π΅Π»Π°Π·Π½ΠΈΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΈΠΌΠ° ΠΏΡ€Π΅Ρ„Π΅Ρ‚Ρ†Ρ…_Π»ΠΈΠΌΠΈΡ‚ Π½Π΅Ρ›Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΠΈ Π΄Π° јСдан Ρ€ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ† ΠΏΡ€ΠΈΠΌΠΈ свС Π·Π°Π΄Π°Ρ‚ΠΊΠ΅.

Π Π°Π·ΠΌΠ΅Π½Π° ΠΏΠΎΡ€ΡƒΠΊΠ° ΡƒΠΏΡ€Π°Π²Ρ™Π° Ρ€Π΅Π΄ΠΎΠ²ΠΈΠΌΠ° ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Π΄Π΅. ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΠΈ Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ˜Ρƒ Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ Ρ‡ΠΈΠΌ стигну. Π—Π°Π΄Π°Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄Π° сС Π·Π°Π²Ρ€ΡˆΠΈ ΠΈΠ»ΠΈ Π½Π΅ успС:

  • messaging:ack(Tack) β€’ ΠΏΠΎΠ·ΠΈΠ²Π° сС Ρƒ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ ΡƒΡΠΏΠ΅ΡˆΠ½Π΅ ΠΎΠ±Ρ€Π°Π΄Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅
  • messaging:nack(Tack) β€’ ΠΏΠΎΠ·ΠΈΠ²Π°Ρ‚ΠΈ Ρƒ свим Π²Π°Π½Ρ€Π΅Π΄Π½ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ°. Након ΡˆΡ‚ΠΎ сС Π·Π°Π΄Π°Ρ‚Π°ΠΊ Π²Ρ€Π°Ρ‚ΠΈ, ΠΏΠΎΡ€ΡƒΠΊΠ° Ρ›Π΅ Π³Π° прослСдити Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Ρƒ.

ГрађСвински Π±Π»ΠΎΠΊΠΎΠ²ΠΈ дистрибуираних Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠŸΡ€Π²ΠΈ приступ

ΠŸΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΠΎ Π΄Π° јС Ρ‚ΠΎΠΊΠΎΠΌ ΠΎΠ±Ρ€Π°Π΄Π΅ Ρ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‚ΠΊΠ° дошло Π΄ΠΎ слоТСног ΠΊΠ²Π°Ρ€Π°: Ρ€ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ† 1 јС, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ јС ΠΏΡ€ΠΈΠΌΠΈΠΎ Π·Π°Π΄Π°Ρ‚Π°ΠΊ, ΠΏΠ°ΠΎ Π° Π΄Π° нијС ΠΈΠΌΠ°ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π΄Π° Π±ΠΈΠ»ΠΎ ΡˆΡ‚Π° ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈ Ρ‚Π°Ρ‡ΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Π½Π΅. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, Ρ‚Π°Ρ‡ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Π½Π΅ Ρ›Π΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ посао Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Ρƒ Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ истСкнС врСмСнско ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ΅ ΠΏΠΎΡ‚Π²Ρ€Π΄Π΅. Π ΡƒΠΊΠΎΠ²Π°Π»Π°Ρ† 3 јС ΠΈΠ· Π½Π΅ΠΊΠΎΠ³ Ρ€Π°Π·Π»ΠΎΠ³Π° напустио Π·Π°Π΄Π°Ρ‚Π°ΠΊ ΠΈ послао Π½Π°Ρ†ΠΊ, ΠΊΠ°ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‚ΠΎΠ³Π°, Π·Π°Π΄Π°Ρ‚Π°ΠΊ јС Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΏΡ€Π΅ΡˆΠ°ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ Ρ€ΡƒΠΊΠΎΠ²Π°ΠΎΡ†Π° који Π³Π° јС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Ρ€ΡˆΠΈΠΎ.

ΠŸΡ€Π΅Π»ΠΈΠΌΠΈΠ½Π°Ρ€Π½ΠΈ Ρ€Π΅Π·ΠΈΠΌΠ΅

Π Π°Π·Π±ΠΈΠ»ΠΈ смо основнС Π³Ρ€Π°Ρ’Π΅Π²Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ дистрибуираних систСма ΠΈ стСкли основно Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡšΠ΅ ΡšΠΈΡ…ΠΎΠ²Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ Ρƒ Π•Ρ€Π»Π°Π½Π³/Π•Π»ΠΈΠΊΠΈΡ€-Ρƒ.

КомбиновањСм основних шаблона ΠΌΠΎΠ³Ρƒ сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚ΠΈ слоТСнС ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½ΠΎΠ²ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π£ Π·Π°Π²Ρ€ΡˆΠ½ΠΎΠΌ Π΄Π΅Π»Ρƒ циклуса Ρ€Π°Π·ΠΌΠΎΡ‚Ρ€ΠΈΡ›Π΅ΠΌΠΎ ΠΎΠΏΡˆΡ‚Π° ΠΏΠΈΡ‚Π°ΡšΠ° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡšΠ° сСрвиса, Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ° ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ°, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ Ρ›Π΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΡ˜ страни скалабилности ΠΈ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ†ΠΈΡ˜Π΅ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° систСма.

ΠšΡ€Π°Ρ˜ Π΄Ρ€ΡƒΠ³ΠΎΠ³ Π΄Π΅Π»Π°.

Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ˜Π° ΠœΠ°Ρ€ΠΈΡƒΡ ЦхристСнсСн
Π˜Π»ΡƒΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π΅ Ρ™ΡƒΠ±Π°Π·Π½ΠΎΡˆΡ›Ρƒ вСбсСкуСнцСдиаграмс.Ρ†ΠΎΠΌ

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€