ααααααααααααααα
ααΆαααΆαααααααααΆααααΆαα αΌαααααΎααΈα ααααΆααα ααΆααα―αααΆααα ααΎαα»αααααΌααααα ααΎαααααΆαα αααααααα "αα·αααα·α" ααΆααααααααα·ααααα·ααΆαα―αααΆαααΌαααααΆαααΆααα’αα (ααΆααααααΎα ααΆααα»α ααΆαα’αΆα ααΆαααααα ααα) αααααΆαααααΆααααααΌαααααα·ααααα·ααΆα (ααΆα) αααααααΎαα·ααΈααΆα TCP α
αααααα·ααΈ
αα»αααΆαααααααααααααΆαααααα·αααααΆααααα»αααααΈααΌα ααΆααααααα
- αα αααα»ααααααα·ααΈααΎααααααΆααα§αααααα ααα αα·αα§ααααααααααα (ααααΆαα αααΌα ααααααααααααααααααα ααΎααααα ααα
- αα αααα»α DBMSs αααααΆααααα»α ααααα·αααΎααααΎαααΆααααα½αααααΌαααΆαα’αα»αααααα ααΎαααΆαααΈααααα½αα ααα½α α αΎαααΆααααα»ααα·ααααααααααΌαααΆαα’αα»αααααα ααΎα§αααααααααααααα
- αα αααα»ααααααΆαααΆααΈααααααααααΆαα ααα αΆααααααΆααααΆααααααΌα αα·αααααΎαααΆαααααααΆα ααΆαααΆαααΆαααααΆααααααΌααα·αααααααααααΆαααααΏαααΏα ααΆααα·αααΌα ααααΆ αα·αααΆαααΏααΆααα
- αα αααα»ααααααααααααα»αααααααΆαααΆαα½αααΉαααααΆαααααααα microservice αααααΆααααααΆαααααααα»αααΆαααααΆααααααΌαααααααΆααααΆααααΌαα»αααΆαααΆααααααΆααααΆααα
αα ααΆαααααααα
αααααααα Cage (ααΆαααΆαα’αα»αααα - ααααααααΆαα αααα»α Python 3.7 αα ααΎ Windows) αα½αααΆααααααααααΆααααΈαα
- Cageserver - αααααα·ααΈαααΆαααΈαααα―αααΆα (αααα αααα»αααΆα) αααααααΎαααΆαααΎαα»αααααΌααααα ααΎαααααΆααααα―αααΆαααΆαααΆαααΆαα αΌαααααΎααΈα ααααΆαα
- ΠΊΠ»Π°ΡΡ αααα»α ααΆαα½αααΉααααααΆααααααα·ααΈααΆααααααααααΆαααααααα·ααΈα’αα·αα·αα ααααα½αααΆααααααααΌαα’ααααααααααΆαα½ααααΆαααΈαααα
ααΆαααααΎααααΆαααααααααααα ααΆαα’αα·αα·αα
αα·ααΈααΆαααααααααααΆαα Cage αααα½αααααα·ααααα·ααΆαααααααααα―αααΆα "αααααΆαα" ααααααΆα ααΆααααααΎα, ααΎα, αα·α, αα»α α―αααΆαααααΌα ααΆ ααΆαα’αΆα/ααααααα·αααααααααα»ααααααααααααΈα (αααα αΆαααΈααΈααΆαα αα·αααα ααααα·αααααα)α ααΆααααα·α αα·ααΈααΆαααααααΆαααααααΊαα αα·ααα»αααΆαα―αααΆαααααΆααΆ C αααααΆαααΎα/αα·αα―αααΆαααααΌαααΆαα’αα»αααα "αα ααΎααΆααα" ααααΆααααα αΌα/αα·αααααα
αα·ααΆααααααΆααααα’αααααααααααααα·ααΈαα·αααααΎαααΆαααΆαα½ααα·ααΈααΆαααααααααααα» "α―αααΆα" (ααααΆαα _α’αΆαα’αΌ αα αααα»α Python) ααα»ααααααΆαα½αααΉααα·ααΈααΆαααααααααααΆαα Cage α
αα ααααααα§ααΆα αααααααααα» Cage ααααΌαααΆααααααΎα ααΆαααααΎαααΆααααααΆααααααΌαααΆαα½ααααΆαααΈααα (α¬αααΆαααΈαααααΆα αααΎα) ααααΌαααΆαα’αα»ααααΆααααααααααααΆααα’αα·αα·αα αα·αααα½αααΆαααΆααααααΆααααΆαα½αααΉααααα αααααΆααααΆαααααααΆααααααα·ααααα·ααΆαα―αααΆαααΆααα’ααα αα ααααααααααα» Cage ααααΌαααΆααα»α ααΆααααΆααααΆαααΈαααα±ααααααααααΆαααααΆαααααα αα·ααα·αα―αααΆαα ααΆααααα ααααααΆααααααααα’αΆα ααααΌαααΆααααα½α ααααΎαααααααΆαααΈααααααα½αα―ααααααα
αααααααααααααααΎα’αααααααΎαα‘αΎαααΌαααααΎαααΆαα’αΆα/αααααααααααα»αααΌααααααα―αααΆααααααααΎααΉαααΆαααααααααα·ααΈα’αα·αα·αααα
αααα»αααααΆαααααααΆαα RAM (buffer)α
αααααα·ααΈα’αα·αα·ααα’αΆα
ααααΎααααΆααααααα» Cage αα½αα
ααα½ααααααΆαααΆααααααααααααααααΆ (ααα αα’αααα
αα
αΆαααααααα’αΆαααα ααα ααααα»ααα
αααααααΆααααααΌαααΆαα½ααααΆαααΈαααααα)α
ααααα» Cage αααα½αα’αΆα ααααΆααααααααΆαα½αα―αααΆαααΆα αααΎααα ααΎαααΆαααΈαααα αααΎαα αααΆαααΆααααααααααΆαααααα (α’αΆααααααΆα IP α¬αααΆαααΈααα DNS α αααααααΆαααααααΆααααΆαα’αα»ααααΆα ααααΌα αα·ααααααα―αααΆα) ααααΌαααΆααααααΆαααα ααααααααΎαααααα»α
αααααΆαααααα» Cage ααΈαα½ααα’αΆα ααααΎαααΆαααΆαα½αα―αααΆαα αααΎααααα»αααααααα½α ααα αα’αααα αα αΆααααααΆαα αααααααααααΌαααΆαααααΎααααΆαααααααΆααααΆααααα»ααα·ααααααα ααα αααααΆαααααααΆαα β α ααα½αααααα αα·αααα αααααααΆααααΌαααΆααααααααΆααααααα ααααααααΎαααααα» Cage α α§ααΆα ααα ααααΆαααααααΆαα 1 GB ααΊ 1000 ααααααα 1 MB ααΈαα½αα α¬ 10 ααΆααααααααα 100 KB ααΈαα½αα α¬ 1 ααΆαααααααα 1 KB ααΈαα½ααα ααΆαααααΎαααΎαααα α αα·αα ααα½αααααα ααΊααΆαα·α αα ααΆαααΆααααΆαααα½ααααααΆααααααΈαααααα·ααΈααΈαα½ααα
α’αααβα’αΆα βααααΎβααααα» Cage α αααΎαβαααα»αβαααβααβαα½αβααΎααααΈβαααααβααΆαβαααααβα’αααβα αα αΆαβααα·ααααααβα’αΆααααβαααααβααααΆ α’αΆαααααβααΎβααααβαααβααααααΆαβααααΌαβααΆαβα αΌαβααααΎβαααα»αβα―αααΆαβαααααβααααΆα αααα»αααΆαααΆααΌαααααΆααα½α αααα½ααααααααΆαααα·ααααααα’αΆααααααααΆαααααααα»αααααΌαααΆαααααΎααααΆααα αααααΆααααΈα ααα½αα’αααα αα αΆααααααΆααααααα±ααα’ααα αΎα αααααααααΈααααΆααααααΌααααααα αΆαααα ααΆααααααΆαααααααΆαα αΌααα·ααααααααΆαα½αααΉαα ααα½αα’αααααααΆααααΆαα αΌαααααΎααααΆααα ααΆαααααα»ααααααΆαααΆαααααα·αααααΆαααΆαα·ααααααα»αααααΈααααα·αααααΎααααΆ (αααα»αααααααα·αα·) ααΆαα αΌαααααΎαααααΆαα ααααααα ααΈαα½ααα ααΆααα―αααΆαααααααααααΆ αα·αααΈααΈαα αααααααααααα―αααΆαααΈαα½ααα
ααααΆαα Cage ααΆαααα I/O αα·αααααΉααααααα’αΆααααααΆααα·αααααα (αααα αΆαααΈααΈααΆαα αα·αααααααααα’αΆαα "ααΆααααα½α" ααααα·ααααα·ααΆαααααααααα―αααΆα) ααα»ααααααααΆαααααα·α "ααΌααααα" ααΆαααααα - ααΆααααααααααα αααα»αααα·ααααααα’αΆααααα
αα»αααΆαααΎαααααΌαααΆαααΆαααααααααΆααααααα» Cage "hibernation" ("ααα") - αα½αααΆα’αΆα ααααΌαααΆα "αα½αααα" (α§ααΆα ααααααα»αααααΈααΆαααΆαααΆαααααααΆααααααΆααααΆαα½ααααΆαααΈαααα¬αα αααααααααααα·ααΈααααΌαααΆαααααααα α―αααΆαααα (αααααΆααααΈααΆαααααΆααααααααααΌαααΆααααα αα αααα’αααα αΆααααααΎααααααα·ααΈα‘αΎααα·α)α αααααααΎα±ααααΆα’αΆα ααααΎαα ααΆαααΎααααΈααΆαααααααα ααΆα ααααααΆαααααΆαααα αααααΎαααααΎαααΆααααααα·ααΈα’αα·αα·αααααααΆααααΈααααΎαααΆα "αααα αααααΆα" ααΆααααααα’αΆαααα αααααΆααααααα―αααΆααααααααΎααΉαααΆααααΉααααα·ααα αααα»αααααΆαααααααΆαααα½α α αΎαα
αααα»αααΊαααα αα 3600 αα½αααααΌαα
αααααΆαααααααΆαααΆαααααααΆαααΈααα
αααΆαααΈαααα―αααΆα Cageserver α’αΆα ααααΌαααΆαααααΎαααΆαααΆαα½αααΉαα ααα½αα αααααΆαα’αααΎα α·ααα ααααα½ααααα»αα αααα ("αα") ααααΌαααΆαααααΎαααααΆααααααΆαα’αα»ααααΆαααααα’αα·αα·ααααΆααα’αα αα αααααααΌαααΆαααααΎαααααΆααααΆαααααΆααααααΌααα·ααααααα αααααα·ααΈ Cage server ααααΌαααΆααα Python ααα»αααααα ααααααααΆααα αα»αααααΌααααααααΆααααΆαααΈαααα―αααΆαα’αΆα ααααΎαααΆαααΆαααΆαααααααααα
αααΆαααΈαααα αΆααααααΎαααααΌαααΆααΆααααααΌααααα»αααααααΎαααΆαααααΆααααΈαα
- "ααΆααααααΆαα" - ααααΎαααΆααααααΆααα’αα»ααααααααα·ααααα·ααΆαααααΆααααααΎαααααΆααααααααΆαα½αα’αα·αα·αα αα·ααααα ααααΆαα ααΆααααα½α ααααΎααααααααΆαααΈαααα
- "ααααα·ααααα·ααΆα" - ααααΎαααΆααααααΆααα’αα»ααααααΆααα·α αα (ααααα·ααααα·ααΆα) ααααα’αα·αα·ααααΎααααΈααααΎααΆαααΆαα½αα―αααΆα ααααΌα ααΆαααααΆααααΆααα·αααααααααΆαααααααααααα’ααααΎααΆααααααααΆααααα’αα·αα·ααα
ααααΎαααΆαααΆααααΈααα·αααααΌαααΆαααααΎααααΆααααααα α αΎαααααΌαααΆααααα
αααΆααααα·ααα»αααααΆαααΈαααα
ααααααΆαααα½α αα·αααααΎααΆααααααα’ααααΎαα½αααααΎαααΆαα
αααΎα ααααα»ααααΌααααΈ αα αα·αααααα
ααααΎαααΆααααααΆαααααα
ααα
ααααααααΆααα’αα·αα·ααααΈαα½ααααΎααααΈααα½α αα·ααααααΌααα·ααααααα α
ααα½αα
αααααααΌαααΆαααααααα
αααααααααΆαααΈαααα
αΆααααααΎαα ααΆαααΌααααααΈαααΆαα
ααα αα·ααααΆαααΈααααααααααΌαααΆααααααΆαα»ααααα»αα’αααα
αα
αΆαααααΌααααΈαααα
αααααααα’ααααααααΎαααΆαα
ααααΎαααΆαααααα·ααααα·ααΆαααΆααααααΆαα αααααααααααΆαα―αααΆα ααΌα ααααα’αα·αα·ααααΆα αααΎαα’αΆα α ααααααα (ααΆαααααααΆααααΆαααΆα‘ααα αΆααααΆααααΈααΆαα αΌαααααΎααααΌαααΆαααααααααααααααΆαα αΆαααα) α’αΆααα·ααααααααΈα―αααΆααα½αααααα·αααΎααΆααααΌαααΆαα’αα»ααααΆααα αααααΆααααΌαααΆαααΎαααααααΆαααΈαααααα "ααααΌα" α
ααααΎαααΆαααααΆααααααααΆααΎααααΈαααααΎα / αα»α / ααΎα / αα·αα―αααΆααα ααΎαααΆαααΈαααααααΌαααΆαα’αα»αααααα αααα»αααααΎαααΆα "ααααα·ααααα·ααΆα" ααααααα½αααΆααααΆααααΆαααααΆααααααααααΆαααΉαααΉααααααααΎααααααααααα―αααΆαααααααααααααααα·ααααα·ααΆααααΆαααΈαααα
ααΆααΌαα ααΎααααΈαααααΎαααααΏαα’αΆα/ααααα ααααα·ααααα·ααΆαααΆαααααααααΌαααΆαα’αα»αααααα αααα»ααααααααα‘αΆαααααααααΎααααααααΎαααΆα "ααααα·ααααα·ααΆα"α α ααα½ααααααααα‘αΆαααΆααααααΆααααΎααΉαα ααα½αα―αααΆαααΎαα αα·α αα ααΆαα’αΆα/αααααααΈα’αα·αα·ααααααΌαααΆαααΆααααΌααα αα½αααΌαα α αΎααααααααα‘αΆαα₯ααα·αααααααααΌαααααΆααα·α αα ααΈααααΆαααααααΆα αααααα·ααααΆαα·αααα’αα»ααααΆαα±ααα’ααααα»αααααΆααααααα·ααααα·ααΆααααααα‘αΎααα·ααα·αααααααα αααα»α RAM αααααααΆαααΈαααα
ααααΎαααΆαααααα·ααααα·ααΆααααα½ααα·αα·ααααααααααΆαα’αα·αα·αα αα·αααααααααΆααααααΎαα½αααααΆαααΆααααααααΆαααααα½ααα α¬αα ααααααα α½ααααα’αααααα
ααΎααααΈααΆααΆααΆαααΌαααΆαααΏααΆαα Cageserver αααααΆαααααα ααα»ααααααα·ααααα·ααΆαααΆααα’ααα αααααα ααα»ααΌαα αα½αααΆαα αααΆααα ααααααααΆαααΈα’αα·αα·αααααααΆαααΆααα·α αα αααααΎα/ααΎα/ααααΌαααααα/αα»αα―αααΆαα αααααα ααα»ααΆα ααααα‘αααα½αααααΌαααΆααααααΎαα‘αΎααααααΆααα―αααΆαααΆαααΆαααΈαα½αα αααα αααΆααα ααααααααΆααααααΆαααΆααα·α αα αααααΆααα’αΆα αα·αααααααα·αααααααα αααα»αα―αααΆαααΆαααΆααααααααΌαααΆααααααααΆ ααααΌα ααΆα’αΆαααααα·αααααααααααααα (ααααΈ) αα·αα’αΆαααααα·αααααααααααααΌαααΆαααααααΆαααα‘α»αααααααααααΆααααΎ (ααααα αα·ααααααααααΈ "αα ααΎααααΌα" αααα·ααααααα αΆαα)) α
αααααβα ααα»βααΆααβαααβαααααβααΌαβαααααααΆαβαααα»αβααΆαβααααΆαβααΆαβααααΆααβααααΌβαβααααΈβαα βααΉαβααΆαβααααα»αβαα»αβαα·αβαααα‘ααβααβαα·αβααΆαα·ααΆβαα αα α»ααααααβαα βα ααα»α βαα½αβαααα»αβα’ααΈαααΆαβα
Cageserver ααΊαααα αα 3100 αααααΆααααααΌαα
ααΆαααΎαααααΎαααΆααααααα·ααΈαααΆαααΈαααα―αααΆα Cageserver
αα
αααα
αΆααααααΎα αααα»ααααα’ααα’αααααααΌααααααα
- α
αααααααΆαααααααΆααααΆαα’αα»ααααΆα;
- α
ααα½αα
ααααααααΆααααααΆααααααΌαααααα·ααααα·ααΆαααΆαα½αα’αα·αα·αααααααΆαααΆαα’αα»ααααΆα (α
αΆααααΈααα 1 α¬α
αααΎαααΆαααα ααααα»ααααααα
αΆααααααΎαααΈαα½ααα
ααΆααααΉααααα
αααααααΆαα)α
ααΆαααααΎααααΆααααααΆαα Cage
ααααΆαα αααα»αααααα»α( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file="" )
ααααα»βααααΌαβααΆαβαααααΎαβα‘αΎαβααΈβααααΆααβαααβαααβααΆαβα’ααααααααβααΆαα½αβαααΆαααΈαβαααααΎβα―αααΆα αα·αβααΆαβα’αααβα αα αΆαβααα·ααααααα’αΆααααα
αααΆαααΆαααααα
- cage_name(str) - αααααααΆαααααααααααααααααα» αααααααΌαααΆαααααΎααΎααααΈαααααα’ααααααααΆαα’αα·αα·αααα αααααααΆααααΆαααΈααα
- ααα αααααα(int) - ααα ααα½ααααααααααα·ααααααα’αΆαααα (αα·αααΆαα)
- ααα(int) - α ααα½ααααααααα·ααααααα’αΆαααα
- maxstrlen(int) - ααααααα’αα·ααααΆααααααα’αααααααααα»αααααα·ααααα·ααΆαααααα αα·αα’αΆα
- server_ip(ααααΆα αααΆα) - αα ααΆαα»αααααααααΆαα’αΆααααααΆααααααααΆαααΈααααααααΆαααααΎ αααααααΊααΆαααααααΆααααααααααααααααΆαααΈααα (ααααααααΆαααααΆαααΈααααα ααΆααααα»ααααααα·ααΈ) α αΎααααααααΊααΆααααα’αααααααααΆαα’αΆααααααΆαα βα’αΆααααααΆα ip: α αααβ α¬ β DNSα α αααβ (ααΆαααααααααααααα αα·αα’αΆααααααΆααα·αααΊααααααα’αΆαααα ααΆα’αΆα ααααΆααααααΌαααΆα)
- αααα αΆα(int) β αααβααααΆβαααα αΆαβαααααΆααβααΆαβααααΎαβααβααΈβαααΆαααΈαβαααααΎβαααβααα½αβα ααα (αα·αβααΆβαα·ααΆααΈ)
- ααααΆαα(αααΌααΈα) - ααααααααααααααααα»ααααΌαααΆααααααΎα (αα·ααα·α - ααααα·αααΎααααα»ααααΈααααΌαααΆααααααΎα ααΆααΆααα·α - ααααα·αααΎααααα»αα½αααααΌαααΆααααααΎαααΈ "αα½αααα" ααΈαα»α - αααααααΎααααα·ααααα·ααΆα "hibernation" αα·ααα·αααΆαααααΆαααΎα)
- cache_file(str) - αααααα―αααΆααααααΆαα hibernation
αα·ααΈααΆαααααα
αααα»ααfile_create( αααΆαααΈααα, ααααΌα ) - αααααΎαα―αααΆαααααΈα
αααα»ααfile_rename( server, path, new_name ) - ααααΌααααααα―αααΆα
αααα»ααfile_remove( αααΆαααΈααα, ααααΌα) - αα»αα―αααΆα
αααα»ααααΆαααΎαα αα α( server, ααααΌα, mod ) - ααΎαβα―αααΆα
αααα‘αα fchannel αααααΆαααα αααΆαααΆαααααα Mod - αααααΊααΆααααααΎαα―αααΆαα "wm" - ααααΆα ααα»α (α’αΆα/ααααα) "rs" - ααΆαααα’αΆα αα·αα ααααααααααααΆααααα’αΆααααα’αα·αα·αααααααααα "ws" - α’αΆα/ααααα αα·αα ααααααααααααΆααααα’αΆαααα α’αα·αα·ααααααααααα
αααα»ααααΆααα·ααααα·ααα (fchannel) - αα·αα―αααΆα
αααα»ααααααα (fchannel, α αΆααααααΎα, αα·αααααα ) - αααααααααα’αααααααα α―αααΆα
αααα»ααα’αΆα (fchannel, α αΆααααααΎα, len_data ) - α’αΆαααααα’ααααααααΈα―αααΆα
αααα»ααput_pages ( fchannel ) - "αα»α" ααΈααα·ααααααα’αΆαααααα ααΆαααααΆαααΈααα αααααααΆααα’ααααααΆααααααααΆααααααΆαααααααααΌαααΆαααααααα ααΆβααααΌαβααΆαβααααΎβαα βα ααα»α βααΆααβαααβαααα»αβαααα½αβαααααααΆα αααβα’αααβααααΌαβααααΆααβααΆβααααα·ααααα·ααΆαβααΆααα’ααβαα βααΎβααΆαααβααααΌαβααΆαβαααααΆβαα»αβαααα»αβα―αααΆαβαα βααΎβαααΆαααΈαβααα
αααα»ααpush_all () β βαα»αβ ααΈααα·ααααααα’αΆαααααα ααΆαααααΆαααΈααα αααααααΆααα’αααααααααΆαααΆααα’αααααααΆααα§ααΆα αααααααααΆαα Cage αααααααΌαααΆαααααααα ααααΎαα ααααααα’αααααααΌαααααΆααααΆααααα·ααααα·ααΆαααΆααα’αααα ααΎαααααΆαααΆααα’ααααααΌαααΆααααααΆαα»ααα ααΎαααΆαααΈαααα
ααααα: www.habr.com