ค้นหาเว็บไซต์

เครื่องมือแคชโอเพ่นซอร์สที่ดีที่สุดสำหรับ Linux ในปี 2023


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

ในฐานะนักพัฒนาและผู้ดูแลระบบของระบบและแอปพลิเคชันเหล่านี้ คุณได้รับการคาดหวังให้จัดหาโซลูชันเทคโนโลยีสารสนเทศ (IT) ทุกประเภทที่จะช่วยให้แน่ใจว่าคุณมีระบบที่มีประสิทธิภาพสูงสุดที่มีอยู่

ซึ่งรวมถึงงานต่างๆ เช่น การออกแบบ การทดสอบ และการใช้กลยุทธ์สำหรับประสิทธิภาพของระบบ/แอปพลิเคชัน ความน่าเชื่อถือ ความพร้อมใช้งาน และความสามารถในการปรับขนาด เพื่อให้ผู้ใช้ได้รับบริการในระดับที่น่าพอใจ

การแคชเป็นหนึ่งในเทคนิคการจัดส่งแอปพลิเคชันขั้นพื้นฐานแต่มีประสิทธิภาพมากมายที่คุณวางใจได้ ก่อนที่เราจะไปไกลกว่านั้น เรามาดูรายละเอียดคร่าวๆ กันดีกว่าว่าแคชคืออะไร สามารถนำไปใช้ที่ไหนและ/หรืออย่างไร และคุณประโยชน์ของแคชได้อย่างไร

การแคชหรือการแคชเนื้อหาคืออะไร?

การแคช (หรือ การแคชเนื้อหา) เป็นเทคนิคที่ใช้กันอย่างแพร่หลายในการจัดเก็บสำเนาข้อมูลในตำแหน่งที่เก็บข้อมูลชั่วคราว (หรือที่เรียกว่า แคช) เพื่อให้สามารถเข้าถึงข้อมูลได้ง่ายและรวดเร็วเมื่อดึงมาจากที่เก็บข้อมูลเดิม

ข้อมูลที่จัดเก็บไว้ในแคชอาจรวมถึงไฟล์หรือส่วนของไฟล์ (เช่น ไฟล์ HTML, สคริปต์, รูปภาพ, เอกสาร ฯลฯ) การดำเนินการหรือบันทึกฐานข้อมูล การเรียก API บันทึก DNS ฯลฯ ขึ้นอยู่กับประเภทและวัตถุประสงค์ของการแคช

แคชอาจอยู่ในรูปแบบของฮาร์ดแวร์หรือซอฟต์แวร์ แคชที่ใช้ซอฟต์แวร์ (ซึ่งเป็นจุดเน้นของบทความนี้) อาจถูกนำไปใช้ในเลเยอร์ต่างๆ ของสแต็กแอปพลิเคชัน

การแคชสามารถใช้ได้ในฝั่งไคลเอ็นต์ (หรือที่เลเยอร์การนำเสนอแอปพลิเคชัน) เช่น การแคชของเบราว์เซอร์หรือการแคชของแอป (หรือโหมดออฟไลน์) เบราว์เซอร์สมัยใหม่ส่วนใหญ่หากไม่ใช่ทั้งหมดมาพร้อมกับการใช้งานแคช HTTP

คุณอาจเคยได้ยินวลียอดนิยม “ล้างแคชของคุณ ” เมื่อเข้าถึงแอปพลิเคชันเว็บเพื่อให้คุณสามารถดูข้อมูลหรือเนื้อหาล่าสุดบนเว็บไซต์หรือแอปพลิเคชัน แทนที่จะใช้เบราว์เซอร์ที่ใช้สำเนาเก่าของ เนื้อหาที่จัดเก็บไว้ในเครื่อง

อีกตัวอย่างหนึ่งของการแคชฝั่งไคลเอ็นต์คือ การแคช DNS ซึ่งเกิดขึ้นที่ระดับระบบปฏิบัติการ (OS) เป็นการจัดเก็บข้อมูลชั่วคราวเกี่ยวกับการค้นหา DNS ก่อนหน้านี้โดยระบบปฏิบัติการหรือเว็บเบราว์เซอร์

การแคชยังสามารถใช้งานได้ในระดับเครือข่าย ทั้งใน LAN หรือ WAN ผ่านทางพรอกซี ตัวอย่างทั่วไปของการแคชประเภทนี้อยู่ใน CDNs (เครือข่ายการจัดส่งเนื้อหา) ซึ่งเป็นเครือข่ายที่กระจายทั่วโลกของเว็บพร็อกซีเซิร์ฟเวอร์

ประการที่สาม คุณยังสามารถใช้การแคชที่เซิร์ฟเวอร์ต้นทางหรือแบ็กเอนด์ได้ การแคชระดับเซิร์ฟเวอร์มีรูปแบบที่แตกต่างกัน ได้แก่:

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

โปรดทราบว่าข้อมูลแคชสามารถจัดเก็บไว้ในระบบจัดเก็บข้อมูลใดก็ได้ รวมถึงฐานข้อมูล ไฟล์ หน่วยความจำระบบ และอื่นๆ แต่ควรเป็นสื่อที่เร็วกว่าแหล่งข้อมูลหลัก ในเรื่องนี้ การแคชในหน่วยความจำเป็นรูปแบบการแคชที่มีประสิทธิภาพและใช้กันทั่วไปมากที่สุด

เหตุใดจึงต้องใช้แคช?

การแคชมีประโยชน์มากมายดังต่อไปนี้:

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

ในบทความนี้ เราจะตรวจสอบเครื่องมือโอเพ่นซอร์สอันดับต้นๆ (การแคชแอปพลิเคชัน/ฐานข้อมูล และ พร็อกซีเซิร์ฟเวอร์แคช) สำหรับการใช้งานฝั่งเซิร์ฟเวอร์ การแคชใน Linux

1. เรดิส

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

เป็นที่จัดเก็บโครงสร้างข้อมูลในหน่วยความจำที่ทำงานเป็นกลไกการแคช ฐานข้อมูลบนดิสก์ถาวรในหน่วยความจำ และนายหน้าข้อความ แม้ว่า Redis จะได้รับการพัฒนาและทดสอบบน Linux (แพลตฟอร์มที่แนะนำสำหรับการปรับใช้) และ OS X แต่ Redis ยังใช้งานได้ในระบบ POSIX อื่นๆ เช่น *BSD โดยไม่มีการพึ่งพาภายนอกใดๆ

Redis รองรับโครงสร้างข้อมูลมากมาย เช่น สตริง แฮช รายการ เซ็ต ชุดที่เรียงลำดับ บิตแมป สตรีม และอื่นๆ สิ่งนี้ทำให้โปรแกรมเมอร์สามารถใช้โครงสร้างข้อมูลเฉพาะเพื่อแก้ไขปัญหาเฉพาะได้ รองรับการดำเนินการอัตโนมัติในโครงสร้างข้อมูล เช่น การต่อท้ายสตริง การพุชองค์ประกอบไปยังรายการ การเพิ่มค่าของแฮช การแยกชุดการคำนวณ และอื่นๆ

คุณสมบัติหลัก ได้แก่ การจำลองแบบ Master-Slave Redis (ซึ่งเป็นแบบอะซิงโครนัสตามค่าเริ่มต้น) ความพร้อมใช้งานสูงและเฟลโอเวอร์อัตโนมัติที่นำเสนอโดยใช้ Redis Sentinel, คลัสเตอร์ Redis (คุณสามารถปรับขนาดในแนวนอนได้โดยการเพิ่มโหนดคลัสเตอร์เพิ่มเติม) และการแบ่งพาร์ติชันข้อมูล (กระจายข้อมูลไปยัง Redis หลายตัว ตัวอย่าง). นอกจากนี้ยังมีการรองรับธุรกรรม การเขียนสคริปต์ Lua ตัวเลือกการคงอยู่ที่หลากหลาย และการเข้ารหัสการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์

Redis เป็นฐานข้อมูลในหน่วยความจำแต่คงอยู่ถาวร จึงมอบประสิทธิภาพที่ดีที่สุดเมื่อทำงานได้ดีที่สุดกับชุดข้อมูลในหน่วยความจำ อย่างไรก็ตาม คุณสามารถใช้กับฐานข้อมูลบนดิสก์ เช่น MySQL, PostgreSQL และอื่นๆ อีกมากมาย ตัวอย่างเช่น คุณสามารถรับข้อมูลขนาดเล็กที่เขียนจำนวนมากใน Redis และทิ้งข้อมูลส่วนอื่นๆ ไว้ในฐานข้อมูลบนดิสก์

Redis รองรับการรักษาความปลอดภัยในหลายๆ ด้าน: วิธีหนึ่งโดยใช้คุณสมบัติ “โหมดที่ได้รับการป้องกัน ” เพื่อรักษาความปลอดภัยไม่ให้อินสแตนซ์ Redis เข้าถึงจากเครือข่ายภายนอก นอกจากนี้ยังรองรับการตรวจสอบสิทธิ์ไคลเอนต์-เซิร์ฟเวอร์ (โดยที่รหัสผ่านได้รับการกำหนดค่าในเซิร์ฟเวอร์และระบุไว้ในไคลเอนต์) และ TLS บนช่องทางการสื่อสารทั้งหมด เช่น การเชื่อมต่อไคลเอนต์ ลิงก์การจำลอง โปรโตคอลบัส Redis Cluster และอีกมากมาย

Redis มีกรณีการใช้งานมากมายซึ่งรวมถึงการแคชฐานข้อมูล การแคชแบบเต็มหน้า การจัดการข้อมูลเซสชันผู้ใช้ พื้นที่จัดเก็บการตอบสนอง API ระบบส่งข้อความเผยแพร่/สมัครสมาชิก คิวข้อความ และอื่นๆ อีกมากมาย สิ่งเหล่านี้สามารถนำไปใช้ในเกม แอปพลิเคชันโซเชียลเน็ตเวิร์ก ฟีด RSS การวิเคราะห์ข้อมูลแบบเรียลไทม์ คำแนะนำผู้ใช้ และอื่นๆ

2. เมมแคช

Memcached เป็นระบบแคชออบเจ็กต์หน่วยความจำแบบกระจายแบบโอเพ่นซอร์สที่ใช้งานง่ายและทรงพลัง เป็นที่จัดเก็บคีย์-ค่าในหน่วยความจำสำหรับข้อมูลขนาดเล็ก เช่น ผลลัพธ์ของการเรียกฐานข้อมูล การเรียก API หรือการแสดงผลเพจ มันทำงานบนระบบปฏิบัติการที่เหมือน Unix รวมถึง Linux และ OS X และบน Microsoft Windows

ในฐานะเครื่องมือสำหรับนักพัฒนา มีวัตถุประสงค์เพื่อใช้ในการเพิ่มความเร็วของแอปพลิเคชันเว็บไดนามิกโดยการแคชเนื้อหา (โดยค่าเริ่มต้น แคช ใช้ล่าสุดน้อยที่สุด (LRU)) ซึ่งจะช่วยลด โหลดฐานข้อมูลบนดิสก์ - ทำหน้าที่เป็นหน่วยความจำระยะสั้นสำหรับแอปพลิเคชัน มี API สำหรับภาษาการเขียนโปรแกรมยอดนิยม

Memcached รองรับสตริงเป็นประเภทข้อมูลเดียว มีสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์ โดยครึ่งหนึ่งของตรรกะเกิดขึ้นบนฝั่งไคลเอ็นต์และอีกครึ่งหนึ่งบนฝั่งเซิร์ฟเวอร์ ที่สำคัญ ลูกค้าเข้าใจวิธีการเลือกเซิร์ฟเวอร์ที่จะเขียนหรืออ่านสำหรับรายการหนึ่งๆ นอกจากนี้ไคลเอนต์รู้ดีว่าต้องทำอย่างไรในกรณีที่ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้

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

รองรับการตรวจสอบสิทธิ์และการเข้ารหัสผ่าน TLS ตั้งแต่ Memcached 1.5.13 แต่ฟีเจอร์นี้ยังอยู่ในช่วงทดลอง

3. อาปาเช่จุดชนวน

Apache Ignite ยังเป็นระบบจัดเก็บคีย์-ค่าในหน่วยความจำ แคช และระบบฐานข้อมูลหลายโมเดลแบบโอเพ่นซอร์สฟรีที่ปรับขนาดตามแนวนอนได้ ซึ่งมอบ API การประมวลผลอันทรงพลังสำหรับการคำนวณข้อมูลที่กระจาย นอกจากนี้ยังเป็นตารางข้อมูลในหน่วยความจำที่สามารถใช้ได้ทั้งในหน่วยความจำหรือแบบ Ignite Native Peristence มันทำงานบนระบบที่คล้ายกับ UNIX เช่น Linux และ Windows

โดยนำเสนอพื้นที่จัดเก็บข้อมูลหลายชั้น การรองรับ SQL ที่สมบูรณ์ และธุรกรรม ACID (อะตอมมิกซิตี ความสม่ำเสมอ การแยกตัว ความทนทาน) (รองรับเฉพาะที่ระดับคีย์-ค่า API) ข้ามโหนดคลัสเตอร์หลายโหนด การประมวลผลที่อยู่ร่วม และการเรียนรู้ของเครื่อง รองรับการผสานรวมอัตโนมัติกับฐานข้อมูลบุคคลที่สาม รวมถึง RDBMS ใดๆ (เช่น MySQL, PostgreSQL, Oracle Database และอื่นๆ) หรือร้านค้า NoSQL

สิ่งสำคัญที่ควรทราบก็คือ แม้ว่า Ignite จะทำงานเป็นที่เก็บข้อมูล SQL แต่ก็ไม่ใช่ฐานข้อมูล SQL ที่สมบูรณ์ สามารถจัดการกับข้อจำกัดและดัชนีได้อย่างชัดเจนเมื่อเปรียบเทียบกับฐานข้อมูลแบบดั้งเดิม รองรับดัชนีหลักและรอง แต่จะใช้เฉพาะดัชนีหลักเท่านั้นเพื่อบังคับใช้เอกลักษณ์ นอกจากนี้ยังไม่รองรับข้อจำกัดของคีย์ต่างประเทศอีกด้วย

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

Ignite มีกรณีการใช้งานมากมาย ซึ่งรวมถึงระบบแคช การเร่งปริมาณงานของระบบ การประมวลผลข้อมูลแบบเรียลไทม์ และการวิเคราะห์ นอกจากนี้ยังสามารถใช้เป็นแพลตฟอร์มที่เน้นกราฟเป็นศูนย์กลางอีกด้วย

4. เซิร์ฟเวอร์โซฟาเบส

Couchbase Server ยังเป็นฐานข้อมูลการมีส่วนร่วมเชิงเอกสาร NoSQL แบบโอเพ่นซอร์สแบบกระจาย ซึ่งจัดเก็บข้อมูลเป็นรายการในรูปแบบคีย์-ค่า ทำงานบน Linux และระบบปฏิบัติการอื่นๆ เช่น Windows และ Mac OS X โดยใช้ภาษาคิวรีเชิงเอกสารที่มีคุณสมบัติหลากหลายที่เรียกว่า N1QL ซึ่งให้บริการคิวรีและจัดทำดัชนีที่มีประสิทธิภาพเพื่อรองรับการดำเนินการกับข้อมูลในระดับต่ำกว่ามิลลิวินาที

คุณสมบัติที่โดดเด่นของมันคือการจัดเก็บคีย์-ค่าที่รวดเร็วพร้อมแคชที่ได้รับการจัดการ ตัวสร้างดัชนีที่สร้างขึ้นตามวัตถุประสงค์ กลไกการสืบค้นที่ทรงพลัง สถาปัตยกรรมแบบขยายขนาด (การขยายขนาดหลายมิติ) ข้อมูลขนาดใหญ่และการรวม SQL การรักษาความปลอดภัยแบบฟูลสแตก และความพร้อมใช้งานสูง

Couchbase Server มาพร้อมกับการสนับสนุนคลัสเตอร์อินสแตนซ์หลายตัว โดยที่เครื่องมือตัวจัดการคลัสเตอร์ประสานกิจกรรมของโหนดทั้งหมด และมอบอินเทอร์เฟซทั่วทั้งคลัสเตอร์ให้กับไคลเอนต์ ที่สำคัญคุณสามารถเพิ่ม ลบ หรือเปลี่ยนโหนดได้ตามต้องการ โดยไม่ต้องหยุดทำงาน นอกจากนี้ยังรองรับการจำลองข้อมูลข้ามโหนดของคลัสเตอร์ และการจำลองข้อมูลแบบเลือกข้ามศูนย์ข้อมูล

ใช้การรักษาความปลอดภัยผ่าน TLS โดยใช้พอร์ตเซิร์ฟเวอร์ Couchbase เฉพาะ กลไกการตรวจสอบสิทธิ์ที่แตกต่างกัน (โดยใช้ข้อมูลประจำตัวหรือใบรับรอง) การควบคุมการเข้าถึงตามบทบาท (เพื่อตรวจสอบผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์แต่ละรายสำหรับบทบาทที่ระบบกำหนดที่พวกเขาได้รับมอบหมาย) การตรวจสอบ บันทึก และเซสชัน .

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

5. เฮเซลคาสต์ IMDG

Hazelcast IMDG (In-Memory Data Grid) เป็นมิดเดิลแวร์กริดข้อมูลในหน่วยความจำแบบโอเพ่นซอร์ส น้ำหนักเบา รวดเร็ว และขยายได้ ซึ่งมอบการประมวลผลในหน่วยความจำแบบกระจายที่ปรับขนาดได้อย่างยืดหยุ่น Hazelcast IMDG ยังทำงานบน Linux, Windows, Mac OS X และแพลตฟอร์มอื่นๆ ที่ติดตั้ง Java อีกด้วย รองรับโครงสร้างข้อมูลที่ยืดหยุ่นและเป็นภาษาพื้นเมืองที่หลากหลาย เช่น Map, Set, List, MultiMap, RingBuffer และ HyperLogLog

Hazelcast เป็นระบบเพียร์ทูเพียร์และรองรับความสามารถในการปรับขนาดที่เรียบง่าย การตั้งค่าคลัสเตอร์ (พร้อมตัวเลือกในการรวบรวมสถิติ ตรวจสอบผ่านโปรโตคอล JMX และจัดการคลัสเตอร์ด้วยยูทิลิตี้ที่มีประโยชน์) โครงสร้างข้อมูลแบบกระจายและเหตุการณ์ การแบ่งส่วนข้อมูล และการทำธุรกรรม นอกจากนี้ยังซ้ำซ้อนเนื่องจากจะเก็บข้อมูลสำรองของการป้อนข้อมูลแต่ละรายการไว้ในสมาชิกหลายคน หากต้องการปรับขนาดคลัสเตอร์ของคุณ เพียงเริ่มต้นอินสแตนซ์อื่น ข้อมูลและการสำรองข้อมูลจะได้รับความสมดุลโดยอัตโนมัติและเท่าเทียมกัน

โดยให้คอลเลกชัน API ที่มีประโยชน์เพื่อเข้าถึง CPU ในคลัสเตอร์ของคุณเพื่อความเร็วการประมวลผลสูงสุด นอกจากนี้ยังมีการใช้งานแบบกระจายของอินเทอร์เฟซที่เป็นมิตรต่อนักพัฒนาจำนวนมากจาก Java เช่น Map, Queue, ExecutorService, Lock และ JCache

คุณลักษณะด้านความปลอดภัยประกอบด้วยสมาชิกคลัสเตอร์และการรับรองความถูกต้องไคลเอ็นต์และการตรวจสอบการควบคุมการเข้าถึงการทำงานของไคลเอ็นต์ผ่านคุณลักษณะความปลอดภัยที่ใช้ JAAS นอกจากนี้ยังช่วยให้สามารถสกัดกั้นการเชื่อมต่อซ็อกเก็ตและการดำเนินการระยะไกลที่ดำเนินการโดยไคลเอนต์ การเข้ารหัสการสื่อสารระดับซ็อกเก็ตระหว่างสมาชิกคลัสเตอร์ และเปิดใช้งานการสื่อสารซ็อกเก็ต SSL/TLS แต่ตามเอกสารอย่างเป็นทางการ ฟีเจอร์ความปลอดภัยเหล่านี้ส่วนใหญ่มีให้ในเวอร์ชัน Enterprise

กรณีการใช้งานที่ได้รับความนิยมมากที่สุดคือการกระจายแคชในหน่วยความจำและการจัดเก็บข้อมูล แต่ยังสามารถนำมาใช้สำหรับการทำคลัสเตอร์เซสชันเว็บ การแทนที่ NoSQL การประมวลผลแบบขนาน การส่งข้อความอย่างง่าย และอื่นๆ อีกมากมาย

6. ไมโครเตอร์

Mcrouter เป็นเราเตอร์โปรโตคอล Memcached แบบโอเพ่นซอร์สฟรีสำหรับปรับขนาดการใช้งาน Memcached ซึ่งพัฒนาและดูแลโดย Facebook โดยมีฟีเจอร์โปรโตคอล Memcached ASCII, การกำหนดเส้นทางที่ยืดหยุ่น, การสนับสนุนหลายคลัสเตอร์, แคชหลายระดับ, การรวมการเชื่อมต่อ, รูปแบบแฮชหลายรายการ, การกำหนดเส้นทางคำนำหน้า, พูลที่จำลองแบบ, การแชโดว์การรับส่งข้อมูลที่ใช้งานจริง, การกำหนดค่าใหม่ออนไลน์ และการตรวจสอบสถานภาพปลายทาง/เฟลโอเวอร์อัตโนมัติ

นอกจากนี้ ยังสนับสนุนการอุ่นเครื่องแคชเย็น สถิติที่สมบูรณ์และคำสั่งการแก้ไขข้อบกพร่อง คุณภาพบริการลบสตรีมที่เชื่อถือได้ ค่าขนาดใหญ่ และการออกอากาศ และมาพร้อมกับการสนับสนุน IPv6 และ SSL

มีการใช้งานบน Facebook และ Instagram เป็นองค์ประกอบหลักของโครงสร้างพื้นฐานแคช เพื่อรองรับคำขอเกือบ 5 พันล้านคำขอต่อวินาทีที่จุดสูงสุด

7. แคชวานิช

Varnish Cache เป็นตัวเร่งเว็บแอปพลิเคชันแบบโอเพ่นซอร์สที่ยืดหยุ่น ทันสมัย และอเนกประสงค์ ซึ่งอยู่ระหว่างเว็บไคลเอนต์และเซิร์ฟเวอร์ต้นทาง มันทำงานบนแพลตฟอร์ม Linux, FreeBSD และ Solaris (x86 เท่านั้น) ที่ทันสมัยทั้งหมด มันเป็นกลไกแคชที่ยอดเยี่ยมและตัวเร่งเนื้อหาที่คุณสามารถปรับใช้ต่อหน้าเว็บเซิร์ฟเวอร์ เช่น NGINX, Apache และอื่นๆ อีกมากมาย เพื่อฟังบนพอร์ต HTTP เริ่มต้นเพื่อรับและส่งต่อคำขอของไคลเอ็นต์ไปยังเว็บเซิร์ฟเวอร์และส่งมอบเว็บ เซิร์ฟเวอร์ตอบสนองต่อไคลเอนต์

ในขณะที่ทำหน้าที่เป็นตัวกลางระหว่างไคลเอนต์และเซิร์ฟเวอร์ต้นทาง Varnish Cache ให้ประโยชน์หลายประการ โดยองค์ประกอบคือการแคชเนื้อหาเว็บในหน่วยความจำ เพื่อลดภาระเว็บเซิร์ฟเวอร์ของคุณ และปรับปรุงความเร็วในการจัดส่งไปยังไคลเอนต์

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

คุณสมบัติ วานิช VCL (ภาษาการกำหนดค่าวานิช – ภาษาเฉพาะโดเมนที่ยืดหยุ่น) ใช้เพื่อกำหนดค่าวิธีจัดการคำขอและอื่น ๆ วานิช โมดูล (VMODS) ซึ่งเป็นส่วนขยายสำหรับ Varnish Cache

ในด้านความปลอดภัย Varnish Cache รองรับการบันทึก การตรวจสอบคำขอ การควบคุมปริมาณ การตรวจสอบสิทธิ์ และการอนุญาตผ่าน VMODS แต่ขาดการสนับสนุนดั้งเดิมสำหรับ SSL/TLS คุณสามารถเปิดใช้งาน HTTPS สำหรับ Varnish Cache ได้โดยใช้พร็อกซี SSL/TLS เช่น Hitch หรือ NGINX

คุณยังสามารถใช้ Varnish Cache เป็นไฟร์วอลล์ของเว็บแอปพลิเคชัน, ตัวป้องกันการโจมตี DDoS, ตัวป้องกันฮอตลิงค์, โหลดบาลานเซอร์, จุดรวม, เกตเวย์การลงชื่อเข้าใช้ครั้งเดียว, กลไกนโยบายการรับรองความถูกต้องและการอนุญาต, การแก้ไขด่วนสำหรับแบ็กเอนด์ที่ไม่เสถียร และเราเตอร์คำขอ HTTP

8. พร็อกซีแคชปลาหมึก

พร็อกซีและแคชแคชฟรีและโอเพ่นซอร์ส โดดเด่นและใช้กันอย่างแพร่หลายอีกตัวหนึ่งสำหรับ Linux คือ Squid เป็นซอฟต์แวร์เซิร์ฟเวอร์แคชเว็บพร็อกซีที่มีคุณสมบัติหลากหลาย ซึ่งให้บริการพร็อกซีและแคชสำหรับโปรโตคอลเครือข่ายยอดนิยม รวมถึง HTTP, HTTPS และ FTP นอกจากนี้ยังทำงานบนแพลตฟอร์ม UNIX และ Windows อื่นๆ อีกด้วย

เช่นเดียวกับ Varnish Cache มันรับคำขอจากไคลเอนต์และส่งต่อไปยังเซิร์ฟเวอร์แบ็กเอนด์ที่ระบุ เมื่อเซิร์ฟเวอร์แบ็กเอนด์ตอบสนอง เซิร์ฟเวอร์จะเก็บสำเนาของเนื้อหาไว้ในแคชและส่งต่อไปยังไคลเอ็นต์ คำขอในอนาคตสำหรับเนื้อหาเดียวกันจะให้บริการจากแคช ส่งผลให้สามารถจัดส่งเนื้อหาไปยังไคลเอนต์ได้เร็วขึ้น ดังนั้นจึงปรับการไหลของข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ให้เหมาะสมเพื่อปรับปรุงประสิทธิภาพและแคชเนื้อหาที่ใช้บ่อยเพื่อลดการรับส่งข้อมูลเครือข่ายและประหยัดแบนด์วิธ

Squid มาพร้อมกับคุณสมบัติต่างๆ เช่น การกระจายโหลดเหนือลำดับชั้นการสื่อสารระหว่างกันของพร็อกซีเซิร์ฟเวอร์ การสร้างข้อมูลเกี่ยวกับรูปแบบการใช้งานเว็บ (เช่น สถิติเกี่ยวกับไซต์ที่มีผู้เข้าชมมากที่สุด) ช่วยให้คุณสามารถวิเคราะห์ จับภาพ บล็อก แทนที่ หรือแก้ไขข้อความที่ถูกพร็อกซีได้

นอกจากนี้ยังรองรับคุณสมบัติความปลอดภัย เช่น การควบคุมการเข้าถึงที่หลากหลาย การอนุญาต และการตรวจสอบสิทธิ์ การสนับสนุน SSL/TLS และการบันทึกกิจกรรม

9. NGINX

NGINX (อ่านว่า Engine-X) เป็นโซลูชันรวมแบบโอเพ่นซอร์ส ประสิทธิภาพสูง มีคุณลักษณะครบถ้วน และได้รับความนิยมอย่างมากสำหรับการตั้งค่าโครงสร้างพื้นฐานของเว็บ เป็นเซิร์ฟเวอร์ HTTP, พร็อกซีเซิร์ฟเวอร์ย้อนกลับ, พร็อกซีเซิร์ฟเวอร์เมล และพร็อกซีเซิร์ฟเวอร์ TCP/UDP ทั่วไป

NGINX มีความสามารถในการแคชพื้นฐาน โดยที่เนื้อหาที่แคชจะถูกจัดเก็บไว้ในแคชถาวรบนดิสก์ ส่วนที่น่าสนใจเกี่ยวกับการแคชเนื้อหาใน NGINX คือสามารถกำหนดค่าให้ส่งเนื้อหาเก่าจากแคชได้ เมื่อไม่สามารถดึงเนื้อหาใหม่จากเซิร์ฟเวอร์ต้นทางได้

NGINX นำเสนอคุณสมบัติความปลอดภัยมากมายเพื่อรักษาความปลอดภัยให้กับระบบเว็บของคุณ ซึ่งรวมถึงการยกเลิก SSL, การจำกัดการเข้าถึงด้วยการตรวจสอบสิทธิ์ขั้นพื้นฐานของ HTTP, การตรวจสอบสิทธิ์ตามผลลัพธ์ของคำขอย่อย, การตรวจสอบสิทธิ์ JWT, การจำกัดการเข้าถึงทรัพยากร HTTP พร็อกซี, การจำกัดการเข้าถึงตามตำแหน่งทางภูมิศาสตร์ และอีกมากมาย

โดยทั่วไปจะมีการปรับใช้เป็นพร็อกซีย้อนกลับ, โหลดบาลานเซอร์, ตัวยุติ SSL/เกตเวย์ความปลอดภัย, ตัวเร่งแอปพลิเคชัน/แคชเนื้อหา และเกตเวย์ API ในสแต็กแอปพลิเคชัน นอกจากนี้ยังใช้สำหรับการสตรีมสื่ออีกด้วย

10. เซิร์ฟเวอร์การรับส่งข้อมูล Apache

สุดท้ายแต่ไม่ท้ายสุด เรามี Apache Traffic Server ซึ่งเป็นพร็อกซีเซิร์ฟเวอร์แคชแบบโอเพ่นซอร์ส รวดเร็ว ปรับขนาดได้ และขยายได้ พร้อมรองรับ HTTP/1.1 และ HTTP/2.0 ได้รับการออกแบบมาเพื่อปรับปรุงประสิทธิภาพและประสิทธิภาพของเครือข่ายโดยการแคชเนื้อหาที่เข้าถึงบ่อยที่ขอบของเครือข่าย สำหรับองค์กร, ISP (ผู้ให้บริการเซิร์ฟเวอร์อินเทอร์เน็ต), ผู้ให้บริการแกนหลัก และอื่นๆ

รองรับทั้งการส่งต่อและย้อนกลับของการรับส่งข้อมูล HTTP/HTTPS นอกจากนี้ยังอาจกำหนดค่าให้ทำงานในโหมดใดโหมดหนึ่งหรือทั้งสองโหมดพร้อมกันก็ได้ มันมีการแคชแบบถาวร, ปลั๊กอิน API; รองรับ ICP (Internet Cache Protocol), ESI (รวม Edge Side); Keep-ALive และอีกมากมาย

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

เซิร์ฟเวอร์การรับส่งข้อมูลสามารถใช้เป็นแคชของเว็บพร็อกซี, พร็อกซีการส่งต่อ, พร็อกซีย้อนกลับ, พร็อกซีแบบโปร่งใส, ตัวโหลดบาลานซ์ หรือในลำดับชั้นของแคช

สรุปข้อสังเกต

การแคชเป็นหนึ่งในเทคโนโลยีการนำส่งเนื้อหาเว็บที่มีประโยชน์มากที่สุดและมีมายาวนาน ซึ่งได้รับการออกแบบมาเพื่อเพิ่มความเร็วของเว็บไซต์หรือแอปพลิเคชันเป็นหลัก ช่วยลดภาระเซิร์ฟเวอร์ เวลาแฝง และแบนด์วิธเครือข่าย เนื่องจากข้อมูลที่แคชไว้จะถูกส่งไปยังไคลเอนต์ ซึ่งจะช่วยปรับปรุงเวลาตอบสนองของแอปพลิเคชันและความเร็วในการจัดส่งไปยังไคลเอนต์

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