Memcache (d) เทียบกับวานิชเพื่อเร่งสถาปัตยกรรมเว็บ 3 ชั้น


111

ฉันกำลังพยายามเร่งเกณฑ์มาตรฐานของฉัน (สถาปัตยกรรมเว็บ 3 ชั้น) และฉันมีคำถามทั่วไปเกี่ยวกับ Memcache (d) และวานิช

  • อะไรคือความแตกต่าง?
    สำหรับฉันแล้วดูเหมือนว่าวานิชอยู่หลังเว็บเซิร์ฟเวอร์แคชหน้าเว็บและไม่ต้องการการเปลี่ยนแปลงโค้ดเพียงแค่กำหนดค่า
    ในอีกด้านหนึ่งMemcachedเป็นระบบแคชสำหรับวัตถุประสงค์ทั่วไปและส่วนใหญ่ใช้ในการแคชผลลัพธ์จากฐานข้อมูลและต้องมีการเปลี่ยนแปลงgetวิธีการ (การค้นหาแคชครั้งแรก)

  • ฉันสามารถใช้ทั้งสองอย่างได้หรือไม่? เคลือบเงาหน้าเว็บเซิร์ฟเวอร์และ Memcached สำหรับการแคชฐานข้อมูล?

  • ตัวเลือกที่ดีกว่าคืออะไร?

    (สถานการณ์ที่ 1 - ส่วนใหญ่เขียน
    สถานการณ์ที่ 2 - ส่วนใหญ่อ่าน
    สถานการณ์ที่ 3 - อ่านและเขียนจะคล้ายกัน)

คำตอบ:


269
  • วานิชอยู่หน้าเว็บเซิร์ฟเวอร์ มันทำงานเป็นพร็อกซี http ย้อนกลับที่แคช
  • คุณสามารถใช้ได้ทั้งสองอย่าง
  • ส่วนใหญ่เขียน - วานิชจะต้องมีการล้างหน้าที่ได้รับผลกระทบ ซึ่งจะส่งผลให้เกิดค่าใช้จ่ายและประโยชน์เพียงเล็กน้อยสำหรับหน้าที่แก้ไข
  • ส่วนใหญ่อ่าน - วานิชอาจจะครอบคลุมเกือบทั้งหมด
  • การอ่านและเขียนที่คล้ายกัน - วานิชจะให้บริการหน้าเว็บจำนวนมากสำหรับคุณ Memcache จะให้ข้อมูลสำหรับหน้าที่มีการผสมผสานระหว่างข้อมูลที่รู้จักและข้อมูลใหม่ช่วยให้คุณสร้างหน้าได้เร็วขึ้น

ตัวอย่างที่สามารถใช้กับ stackoverflow.com: การเพิ่มความคิดเห็นนี้ทำให้แคชของหน้าเป็นโมฆะดังนั้นหน้านี้จะต้องถูกล้างออกจาก Varnish (และหน้าโปรไฟล์ของฉันด้วยซึ่งอาจไม่คุ้มค่าที่จะเริ่มต้นด้วยการแคชการจำไว้ว่าจะทำให้ทั้งหมดเป็นโมฆะ หน้าที่ได้รับผลกระทบอาจเป็นปัญหาเล็กน้อย) อย่างไรก็ตามความคิดเห็นทั้งหมดยังคงอยู่ใน Memcache ดังนั้นฐานข้อมูลจึงต้องเขียนความคิดเห็นนี้เท่านั้น ฐานข้อมูลไม่จำเป็นต้องทำอะไรอีกเพื่อสร้างเพจ ความคิดเห็นทั้งหมดถูกดึงโดย Memcache และหน้านี้จะถูกเรียกใหม่จนกว่าจะมีคนส่งผลกระทบอีกครั้ง (อาจจะโดยการโหวตคำตอบของฉัน) อีกครั้งฐานข้อมูลเขียนการโหวตข้อมูลอื่น ๆ ทั้งหมดถูกดึงมาจาก Memcache และชีวิตก็รวดเร็ว

Memcache ช่วยประหยัดฐานข้อมูลของคุณจากการทำงานอ่านจำนวนมาก Varnish ช่วยประหยัดเว็บเซิร์ฟเวอร์แบบไดนามิกของคุณจากการโหลด CPU โดยทำให้คุณสร้างหน้าเว็บน้อยลง (และลดการโหลดฐานข้อมูลลงเล็กน้อยเช่นกันหากไม่ใช่สำหรับ Memcache)


3
สิ่งนี้: "(อาจจะโดยการโหวตคำตอบของฉัน)" ทำให้ฉันโหวตคำตอบของคุณ
Cesc

ดังนั้นจึงไม่แนะนำให้ไซต์เช่น stackoverflow (หรือไซต์เช่น facebook ที่มีหน้าฟีดกิจกรรม) ใช้วานิช ใช่ไหม?
Mohammad Reza Esmaeilzadeh

@jbferland คำถามของฉันในตัวอย่างของคุณคือด้านบนของหน้านี้มีรูปถ่ายของฉันพร้อมจำนวนคะแนนที่ฉันได้รับเราจะแคชด้วยวานิชได้อย่างไร แต่แสดงไดนามิกของพื้นที่นั้น
Hossj

@Hossj ใช้แท็ก ESI
Johny Pie

วานิชอาจอยู่หน้าเว็บเซิร์ฟเวอร์ แต่อยู่หลังเว็บเซิร์ฟเวอร์ด้วย นอกจากนี้ยังสามารถอยู่ด้านหน้าและด้านหลังเว็บเซิร์ฟเวอร์เดียวกันได้ในเวลาเดียวกัน ;-) ตัวอย่างเช่น Varnish ไม่รองรับ SSL ดังนั้นจึงไม่ใช่เรื่องแปลกที่จะมีเว็บเซิร์ฟเวอร์อยู่หน้า Varnish เพื่อจัดการ HTTPS จากนั้นทราฟฟิกจะถูกพร็อกซีไปยังวานิชซึ่งจะสื่อสารกับแอปพลิเคชันเว็บเซิร์ฟเวอร์ซึ่งอาจเป็นเซิร์ฟเวอร์เดียวกับเซิร์ฟเวอร์ที่จัดการทราฟฟิก HTTPS
แมตต์

32

ประสบการณ์ของฉันมาจากการใช้วานิชกับ Drupal ในแง่ที่ง่ายที่สุดนี่คือวิธีที่ฉันจะตอบ:

โดยทั่วไปแล้ววานิชจะทำงานกับทราฟฟิกที่ไม่ได้รับการพิสูจน์ตัวตน (ผ่านคุกกี้) และ memcached จะแคชทราฟฟิกที่ผ่านการพิสูจน์ตัวตน

ดังนั้นใช้ทั้งสองอย่าง


5
คุณตอกมันโดยวิธีที่ฉันคิดว่าวานิชทำงานได้ดีกว่าในการแคชผู้ใช้ที่ไม่ระบุชื่อ ...
Allan Jikamu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.