Π― Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Setting and expiration time
Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ. Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΠ°ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ - ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° X ΠΌΠΈΠ½.
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅?
(ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ.)
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ» ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ groupcache, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ»Π° ΡΠΏΡΡΠ΅Π½Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π° Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, paxos).
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΊΠ΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΡΠ΅ X ΠΌΠΈΠ½ΡΡ, ΠΊΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠ»ΡΡΠ΅ ΠΊΠ΅ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«foo-12: 30Β» ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«fooΒ» Π²ΠΎ Π²ΡΠ΅ΠΌΡ 12:30. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π΄ΠΎ 12:40. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«foo-12: 40Β», Π° ΡΡΠ°ΡΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (Β«foo-12: 30Β») Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΡΠ΅ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΌΡ.
ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π²ΠΈΠ·ΠΈΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ doozerd, zookeeper ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ), Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΊΠ»ΡΡΠ° ΠΊΠ΅ΡΠ°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Β«Last-ModifiedΒ» ΠΈΠ»ΠΈ Β«ETagΒ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΈ Π² Π²Π°ΡΠ΅ΠΌ Π²Π΅Π±-ΠΏΡΠΎΠΊΡΠΈ.
ΠΠ°, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π» tux21b. (Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ ΠΎΠΏΡΡΠ΅Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ).
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @ tux21b Π·Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΡΠ» ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ groupcache, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ»Π° ΡΠΏΡΡΠ΅Π½Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½Π° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π° Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, paxos).
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΊΠ΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΡΠ΅ X ΠΌΠΈΠ½ΡΡ, ΠΊΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠ»ΡΡΠ΅ ΠΊΠ΅ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«foo-12: 30Β» ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«fooΒ» Π²ΠΎ Π²ΡΠ΅ΠΌΡ 12:30. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π΄ΠΎ 12:40. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Β«foo-12: 40Β», Π° ΡΡΠ°ΡΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (Β«foo-12: 30Β») Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΡΠ΅ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΌΡ.
ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π²ΠΈΠ·ΠΈΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ doozerd, zookeeper ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ), Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΊΠ»ΡΡΠ° ΠΊΠ΅ΡΠ°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Β«Last-ModifiedΒ» ΠΈΠ»ΠΈ Β«ETagΒ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΈ Π² Π²Π°ΡΠ΅ΠΌ Π²Π΅Π±-ΠΏΡΠΎΠΊΡΠΈ.