Groupcache: cara meniru waktu kedaluwarsa

Dibuat pada 29 Jul 2013  ·  3Komentar  ·  Sumber: golang/groupcache

Saya perhatikan dalam keputusan desain Setting and expiration time telah ditinggalkan. Saya membayangkan bahwa ini karena Anda memiliki ide tentang cara meniru fitur ini.

Kasus penggunaan yang ada dalam pikiran saya adalah membangun proxy terbalik yang di-cache di depan aplikasi web. Saya tahu bahwa halaman harus di-cache selama X menit.

Bisakah Anda menjelaskan sedikit tentang bagaimana Anda akan mendekati ini?

(Tidak yakin ini adalah tempat yang tepat untuk mengajukan pertanyaan.)

Komentar yang paling membantu

Sejauh yang saya mengerti desain groupcache, Anda tidak dapat membatalkan atau memperbarui item cache.Fitur ini telah ditinggalkan karena sangat sulit dalam sistem terdistribusi dan akan memerlukan algoritma konsensus yang mahal (misalnya paxos).

Namun Anda dapat membuat kunci cache unik setiap X menit dengan menyandikan informasi waktu di kunci cache itu sendiri. Misalnya "foo-12:30" mungkin secara unik menggambarkan item "foo" pada waktu 12:30. Aplikasi Anda kemudian dapat mengakses item ini hingga katakanlah 12:40. Pada saat ini, item baru, "foo-12:40" mungkin dibuat dan item lama ("foo-12:30") pada akhirnya akan kedaluwarsa setelah klien berhenti mengaksesnya.

Jika aplikasi terdistribusi Anda dapat memperbarui dan mengambil nomor revisi dengan cara yang konsisten (Anda dapat melakukannya misalnya dengan doozerd, zookeeper atau solusi database pilihan Anda), Anda juga dapat menyandikan nomor revisi ini sebagai bagian dari kunci cache. Atau, Anda mungkin juga dapat menggunakan tajuk HTTP "Terakhir Dimodifikasi" atau "ETag" sebagai semacam nomor revisi di proksi web Anda.

Semua 3 komentar

Sejauh yang saya mengerti desain groupcache, Anda tidak dapat membatalkan atau memperbarui item cache.Fitur ini telah ditinggalkan karena sangat sulit dalam sistem terdistribusi dan akan memerlukan algoritma konsensus yang mahal (misalnya paxos).

Namun Anda dapat membuat kunci cache unik setiap X menit dengan menyandikan informasi waktu di kunci cache itu sendiri. Misalnya "foo-12:30" mungkin secara unik menggambarkan item "foo" pada waktu 12:30. Aplikasi Anda kemudian dapat mengakses item ini hingga katakanlah 12:40. Pada saat ini, item baru, "foo-12:40" mungkin dibuat dan item lama ("foo-12:30") pada akhirnya akan kedaluwarsa setelah klien berhenti mengaksesnya.

Jika aplikasi terdistribusi Anda dapat memperbarui dan mengambil nomor revisi dengan cara yang konsisten (Anda dapat melakukannya misalnya dengan doozerd, zookeeper atau solusi database pilihan Anda), Anda juga dapat menyandikan nomor revisi ini sebagai bagian dari kunci cache. Atau, Anda mungkin juga dapat menggunakan tajuk HTTP "Terakhir Dimodifikasi" atau "ETag" sebagai semacam nomor revisi di proksi web Anda.

Ya, apa yang tux21b katakan. (sengaja ditinggalkan, setidaknya untuk saat ini).

Terima kasih @tux21b atas saran mengenai revisi!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

abennett picture abennett  ·  3Komentar

orcaman picture orcaman  ·  9Komentar

AlexanderChen1989 picture AlexanderChen1989  ·  6Komentar

cowboyrushforth picture cowboyrushforth  ·  5Komentar

singingwolfboy picture singingwolfboy  ·  4Komentar