Coding Gun

การสร้าง Distributed Cached ด้วย Redis

Caching คือเทคนิคที่เราจะนำ data ไปจัดเก็บไว้ใน Memory เพื่อให้เรียกใช้ได้เร็วกว่า แทนที่จะต้องไปอ่านจาก database ตรงๆ ซึ่งจะช้ากว่ามาก

ประเภทของ Caching

การทำ Caching มีอยู่ 2 ประเภทคือ

  1. Local Cache คือ Cache ที่เก็บข้อมูลไว้ใน Machine เดียว หรือ Application เดียว ซึ่งจะเหมาะกับระบบที่มีปริมาณ data ไม่มาก หรือมีข้อจำกัดว่าต้องดึงข้อมูลจากเครื่อง หรือ IP Address นี้เท่านั้น

  2. Distributed Cache คือ Cache ที่แชร์ให้กับ applications หรือ services ใช้ร่วมกัน ใช้ใน application ที่ host บน cloud services หรือ server farm

Distributed Cache

การทำ Distributed Cache จะเหมาะสำหรับการออกแบบระบบประมวลผลแบบกระจาย(Distributed System) โดยเฉพาะการออกแบบที่ได้รับความนิยมมากๆในปัจจุบันอย่าง Microservices จะมีความจำเป็นที่ต้องมี Distributed Cache มากๆ

Distributed Cached ใน Microservices

ใน microservices เราจะออกแบบให้ services ต่างๆใช้ cache ร่วมกัน เพื่อให้ได้ประโยชน์ต่างๆเหล่านี้

ทางเลือกในการสร้าง Distributed Cache

เราสามารถใช้ In-Memory Database ต่างๆ เข้ามาเป็น Distributed Cache ได้โดยจะมีทางเลือกหลักๆ ดังนี้

  1. Redis ถือได้ว่าเป็นทางเลือกอันดับ 1 ในกดารเป็น Distributed Cache เพราะความรวดเร็วในการอ่านเขียนข้อมูลและการสร้าง Cluster ที่ไม่ได้มีความซับซ้อน รวมไปถึงการ Backup ข้อมูลลง Disk ก็ทำได้ง่าย นั่นจึงเป็นสาเหตุว่าทำไมคนส่วนใหญ่เลือก Redis

  2. Memcache เป็นอีกหนึ่งในทางเลือกของการเป็น Distributed Cache ซึ่ง Memcache จะเป็น Key-Value Store เหมือนกับ Redis แต่จะแตกต่างกันตรงที่ Features ของ Memcache จะไม่ได้มีเยอะมากเพราะ Memcached ถูกออกแบบมาสำหรับการเป็น Caching เพียงอย่างเดียว แต่ Redis จะสามารถเป็น Database Server ได้ด้วย

  3. SQL Server ก็เป็นอีกทางเลือกนึงในการสร้าง Distributed Cache เพราะเราสามารถสร้าง In-Memory Database ขึ้นมาแล้วทำหน้าที่เป็น Distributed Cache ได้ ซึ่ง Solution นี้จะเหมาะกับทีมทืี่พัฒนาระบบโดยใช้ SQL Server เป็นฐานข้อมูลอยู่แล้ว

  4. Hazelcast คือ in-memory data grid ที่สามารถทำ distributed caching, messaging และ computing มี features สำหรับการทำ data replication, data partitioning และ native memory storage ซึ่ง Hazelcast ถูกออกแบบมาสำหรับ cloud-native architectures และง่ายในการเชื่อมต่อกับ Cloud Service Provider ต่างๆ

  5. Apache Ignite คือ in-memory computing platform ที่สามารถทำ distributed caching, data processing, และ จัดการกับ transactions เหมือนกับ relational database(ACID) ได้

ขั้นตอนการสร้าง Distributed Cache

  1. Install และ Config Redis Server
  2. สร้าง Redis Cluster
  3. จัดทำ Sharding หรือ Data Replication เพื่อเพิ่มประสิทธิภาพในการเข้าถึงข้อมูล
  4. นำ Cache ไป Implement ใน Application ดูตัวอย่างได้ที่นี่
  5. Monitor การใช้งาน Cache(เราต้องแน่ใจว่ามีการอ่านหรือเขียนข้อมูลใน Cache อย่างเหมาะสม)

อ่านบทความเกี่ยวกับ Distributed Cache ต่อได้ที่

Phanupong Permpimol
Follow me