БистСма ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ доступа Cage

НазначСниС систСмы

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π² сСти. БистСма Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΒ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС основныС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (созданиС, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись ΠΈ Π΄Ρ€.) ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° транзакциями (сообщСниями) ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ Π’Π‘Π .

ΠžΠ±Π»Π°ΡΡ‚ΠΈ примСнСния

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» систСмы эффСктивСн Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

  • Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… прилоТСниях для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ embedded устройств (смартфоны, Π±ΠΎΡ€Ρ‚ΠΎΠ²Ρ‹Π΅ систСмы управлСния ΠΈ Ρ‚.ΠΏ.), Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… быстрого доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… сСрвСрах Π² условиях вСроятных Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²ΠΎΠ² Π² связи (с ΡƒΡ…ΠΎΠ΄ΠΎΠΌ Π² ΠΎΡ„Ρ„Π»Π°ΠΉΠ½);
  • Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π‘Π£Π‘Π”, Ссли ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° запросов производится Π½Π° ΠΎΠ΄Π½ΠΈΡ… сСрвСрах, Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… – Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ…;
  • Π² распрСдСлСнных ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сСтях сбора ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… высокой скорости ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, рСзСрвирования ΠΈ надСТности;
  • Π² слоТных систСмах с микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, Π³Π΄Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ΠΈΠΌΠ΅ΡŽΡ‚ критичСски Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

БистСма Cage (имССтся рСализация β€” beta-вСрсия Π½Π° Python 3.7 Π² ОБ Windows) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Π²Π΅ основныС части:

  1. Cageserver β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„Π°ΠΉΠ»-сСрвСра (ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ), которая запускаСтся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π² сСти, ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ;
  2. класс Cage с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для клиСнтского ПО, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ взаимодСйствия с сСрвСрами.

ИспользованиС систСмы Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Cage Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅, Β«Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅Β» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы: созданиС, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ…). ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Ρ‹ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ функциям языка C, Π³Π΄Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² производится Β«Π½Π° ΠΊΠ°Π½Π°Π»Π°Ρ…Β» Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

Π˜Π½Ρ‹ΠΌΠΈ словами, программист Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Β«Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ…Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (класса _io Π² Python), Π° с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса Cage.

ΠŸΡ€ΠΈ создании экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Cage ΠΎΠ½ устанавливаСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ связь с сСрвСром (ΠΈΠ»ΠΈ нСсколькими сСрвСрами), ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Id ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° для осущСствлСния всСх Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Cage ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ сСрвСру ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ связи ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ связи ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ сами сСрвСры.

БистСма ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ быстродСйствиС чтСния/записи Π½Π° основС Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Ρƒ клиСнтских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² кэшС (Π±ΡƒΡ„Π΅Ρ€Π΅) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.
ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ПО ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС число ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Cage с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ настройками (объСм Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ памяти, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с сСрвСром ΠΈ Π΄Ρ€.).

Один ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Cage ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с нСсколькими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСрвСрах. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для связи (IP-адрСс ΠΈΠ»ΠΈ DNS сСрвСра, основной ΠΏΠΎΡ€Ρ‚ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡƒΡ‚ΡŒ ΠΈ имя Ρ„Π°ΠΉΠ»Π°) Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Cage ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с мноТСством Ρ„Π°ΠΉΠ»ΠΎΠ², для Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‰Π΅Π΅ пространство памяти. Π Π°Π·ΠΌΠ΅Ρ€ кэша – количСство страниц ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€, задаСтся динамичСски ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Cage. НапримСр, кэш Π² 1 Π“Π±Π°ΠΉΡ‚ β€” это 1000 страниц ΠΏΠΎ 1 ΠœΠ±Π°ΠΉΡ‚, ΠΈΠ»ΠΈ 10 тыс. страниц ΠΏΠΎ 100 ΠšΠ±Π°ΠΉΡ‚, ΠΈΠ»ΠΈ 1 ΠΌΠ»Π½. страниц ΠΏΠΎ 1 ΠšΠ±Π°ΠΉΡ‚. Π’Ρ‹Π±ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ количСства страниц – это конкрСтная Π·Π°Π΄Π°Ρ‡Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ случая.

МоТно ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Cage, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ настройки Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ памяти Π² зависимости ΠΎΡ‚ особСнностСй доступа ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. Как Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ примСняСтся ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ: послС исчСрпания Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ объСма памяти Π½ΠΎΠ²Ρ‹Π΅ страницы Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‚ старыС ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ выбытия с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ. БуфСризация особСнно эффСктивна Π² случаС Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ (Π² статистичСском смыслС) совмСстного доступа, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΈ, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Класс Cage ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ адрСсам Π΄Π°Π½Π½Ρ‹Ρ… (с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Π΄Π»ΠΈΠ½Ρ‹ массива, «замСняя» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы), Π½ΠΎ ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ, «физичСском» ΡƒΡ€ΠΎΠ²Π½Π΅ β€” ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ страниц Π² Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ памяти.

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Cage поддСрТиваСтся ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ функция Β«Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈΒ» («сна») – ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Β«ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС Ρ€Π°Π·Ρ€Ρ‹Π²Π° связи с сСрвСрами, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ остановкС прилоТСния ΠΈ Ρ‚.ΠΏ.) Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π°ΠΌΠΏ-Ρ„Π°ΠΉΠ» Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ быстро Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π° (послС возобновлСния связи, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ запускС прилоТСния). Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сущСствСнного сокращСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡƒΡ…ΠΎΠ΄Π° Β«Π² ΠΎΡ„Ρ„Π»Π°ΠΉΠ½Β», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² кэшС.

Cage β€” это ΠΎΠΊΠΎΠ»ΠΎ 3600 строк ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ построСния сСрвСров

Π€Π°ΠΉΠ»-сСрвСры Cageserver ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… («основной») ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сСрвСра Cage трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Python. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с Ρ„Π°ΠΉΠ»-сСрвСром ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π‘Π΅Ρ€Π²Π΅Ρ€ запускаСтся Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… основных процСссов:

  1. «БоСдинСния» – процСсс для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ установлСния связи с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ Π΅Π΅ прСкращСния ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π΅ сСрвСра;
  2. Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΒ» – процСсс для выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ) ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для закрытия сСансов связи ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

Оба процСсса Π½Π΅ синхронизированы ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ бСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний Π½Π° основС ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, прокси-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π·Π°ΠΌΠΊΠΎΠ² ΠΈ сокСтов.
ΠŸΡ€ΠΎΡ†Π΅ΡΡ «БоСдинСния» выдСляСт ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠΎΡ€Ρ‚ для ΠΏΡ€ΠΈΠ΅ΠΌΠ°-ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ² задаСтся ΠΏΡ€ΠΈ запускС сСрвСра. БоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ хранится Π² раздСляСмой ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами прокси-памяти.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΒ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… рСсурсов, ΠΏΡ€ΠΈ этом нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ совмСстно (ΠΊΠ²Π°Π·ΠΈΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ доступ управляСтся Π·Π°ΠΌΠΊΠ°ΠΌΠΈ) Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ссли это Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΒ» ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° созданиС/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ /ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСрвСрС производится Π² самом процСссС Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΒ» строго ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с использованиСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ подсистСмы ОБ сСрвСра.

Для ΠΎΠ±Ρ‰Π΅Π³ΠΎ ускорСния чтСния/записи эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… (threads), ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹Ρ… процСссом Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΒ». Число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π²Π½ΠΎ количСству ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Задания Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ освободившийся ΠΏΠΎΡ‚ΠΎΠΊ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· Π΅Π΅ Π³ΠΎΠ»ΠΎΠ²Ρ‹. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСзаписи Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти сСрвСра.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΒ» слСдит Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… обслуТиваниС ΠΊΠ°ΠΊ ΠΏΠΎ ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° нСактивности.

Для обСспСчСния надСТности Cageserver Π²Π΅Π΄Π΅Ρ‚ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ всСх Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Один ΠΎΠ±Ρ‰ΠΈΠΉ ΠΆΡƒΡ€Π½Π°Π» содСрТит ΠΊΠΎΠΏΠΈΠΈ сообщСний ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² с заданиями Π½Π° созданиС/ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅/ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅/ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ². Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΆΡƒΡ€Π½Π°Π», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΏΠΈΠΈ сообщСний с заданиями Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π΄Π°Π½Π½Ρ‹Ρ… Π² этом Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ массивы записываСмых (Π½ΠΎΠ²Ρ‹Ρ…) Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ массивы Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оказались ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΈ пСрСзаписи (записи Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Β«ΠΏΠΎΠ²Π΅Ρ€Ρ…Β» старых).

Π­Ρ‚ΠΈ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ для восстановлСния Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… копиях, Ρ‚Π°ΠΊ ΠΈ для Β«ΠΎΡ‚ΠΊΠ°Ρ‚Π°Β» ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ содСрТимого ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ.

Cageserver β€” это ΠΎΠΊΠΎΠ»ΠΎ 3100 строк ΠΊΠΎΠ΄Π°.

БистСма ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ доступа Cage

Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ„Π°ΠΉΠ»-сСрвСра Cageserver

ΠŸΡ€ΠΈ запускС Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ:
β€” основной ΠΏΠΎΡ€Ρ‚ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ;
β€” количСство ΠΏΠΎΡ€Ρ‚ΠΎΠ² для ΠΎΠ±ΠΌΠ΅Π½Π° транзакциями с Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ (ΠΎΡ‚ 1-Π³ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅, ΠΏΡƒΠ» Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² начинаСтся с ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ основного ΠΏΠΎΡ€Ρ‚Π°).

ИспользованиС класса Cage

class cage.Cage( cage_name=»», pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=»» )

Из этого класса ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ взаимодСйствиС с Ρ„Π°ΠΉΠ»-сСрвСрами ΠΈ содСрТат Π±ΡƒΡ„Π΅Ρ€Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

  • cage_name(str) β€” условноС имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π° сторонС сСрвСра
  • pagesize(int) β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΉ страницы Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ памяти (Π² Π±Π°ΠΉΡ‚Π°Ρ…)
  • numpages(int) β€” количСство страниц Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ памяти
  • maxstrlen(int) β€” максимальная Π΄Π»ΠΈΠ½Π° Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΉ строки Π² опСрациях записи ΠΈ чтСния
  • server_ip(dict) β€” ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ с адрСсами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСрвСров, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся условноС имя сСрвСра (id сСрвСра Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния), Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ строка с адрСсом: β€œip address:port” ΠΈΠ»ΠΈ β€œDNS:port” (сопоставлСниС ΠΈΠΌΠ΅Π½ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… адрСсов β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ)
  • wait(int) β€” врСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ сСрвСра ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ² (Π² сСк.)
  • awake(boolean) β€” Ρ„Π»Π°Π³ способа создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (False β€” Ссли создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, True β€” Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся ΠΈΠ· Ρ€Π°Π½Π΅Π΅ «свСрнутого» β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈΒ», ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ False)
  • cache_file(str) β€” имя Ρ„Π°ΠΉΠ»Π° для Π³ΠΈΠ±Π΅Ρ€Π½Π°Ρ†ΠΈΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Cage.file_create( server, path ) – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

Cage.file_rename( server, path, new_name ) – ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

Cage.file_remove( server, path) – ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»

Cage.open( server, path, mod ) – ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ fchannel Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ mod β€” это Ρ€Π΅ΠΆΠΈΠΌ открытия Ρ„Π°ΠΉΠ»Π°: Β«wmΒ» β€” ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡŒΠ½Ρ‹ΠΉ (Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись), Β«rsΒ» β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΈ раздСляСмый Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Β«wsΒ» β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись, ΠΈ раздСляСмый Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ.

Cage.close (fchannel) – Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

Cage.write (fchannel, begin, data ) – Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ строку Π² Ρ„Π°ΠΉΠ»

Cage.read (fchannel, begin, len_data ) – ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ строку ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

Cage.put_pages ( fchannel ) – Β«Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Β» ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° Π½Π° сСрвСр всС страницы ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π΅ физичСски сохранСны Π² Ρ„Π°ΠΉΠ»Π΅ Π½Π° сСрвСрС.

Cage.push_all () – Β«Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Β» ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° Π½Π° сСрвСр всС страницы всСх ΠΊΠ°Π½Π°Π»ΠΎΠ² для экзСмпляра класса Cage, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° всСх ΠΊΠ°Π½Π°Π»Π°Ρ… сохранСны Π½Π° сСрвСрС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com