Scalable architecture by

26
May
0

from Barcamp Bangkok 3

ยุคของโครงสร้าง Webserver ได้แบ่งไว้คร่าวๆดังนี้

  1. Genaration #1- เริ่มต้น ยุคประหยัด
    • [ WEB +DB] ในเครื่องเดียว
    • รูปแบบมาตราฐาน ที่ทุกๆคนต้องเคยใช้กันอย่างแน่นอน แต่เมื่อเวปมีคนใช้งานถึงระดับนึง ก็มีความจำเป็นที่ต้องขยับขยายสู่ยุคที่ 2
  2. Generation #2 – เริ่มขยายตัว
    • [WEB] + [DB] แยกเครื่อง
    • จาก 1 เครื่องสู่สองเครื่อง โดยเป็น Webserver เครื่องนึงกับ Database server แยกกัน process ทำงาน
    • เกิดคอขวดการส่งข้อมูลระหว่าง server 2 เครื่อง
  3. Generation #3
    • [WEB] [WEB]… [WEB] + [DB] หลาย web server
    • พลังเงินตรา!  ซื้อเครื่องขยายไปเรื่อยๆ แบ่ง load ไปที่ตัว server
    • ปัญหาคือแยก DB ไม่ได้ เนื่องจากระบบการทำงานจะเปลี่ยนแปลง
  4. Generation #4
    • Replication DB = ทำ Mirror ของ Database เพื่อใช้ในการ SELECT
    • [DB] => [Replication of DB : Read Only]
    • เริ่มมี Database หลายตัว โดยมี Master แล้ว Replication โดย
      • หากจะ READ (SELECT) ให้ไปที่ Replication
      • หากต้อง WRITE (UPDATE,INSERT,DELETE) ไปที่ Master
      • Feature Replication มีอยู่แล้วใน Mysql
  5. Generation #?
    • Memcache => Save ข้อมูลต่างๆลง Memory
    • เนื่องจากการทำงานของ HDD ช้ากว่า RAM มากกว่าหลายร้อยเท่า
      • เก็บข้อมูลที่ใช้บ่อยๆไว้ใน RAM
      • ทำ Farm server Memcache แทน Replication DB
  6. Horizontal Scaling
    • http://farm4.static.flickr.com/3161/2459859342_69ed6b6785.jpg
    • แบบที่เวปใหญ่ๆใช้กัน
    • มี Master DB ไว้ดูว่าข้อมูลอยู่ที่ DB ไหน
    • ข้อเสียคือ Database จะ Join ไม่ได้ ต้องออกแบบเวปใหม่แต่แรก

Note

  • 80 % ของ end-user response time อยู่ที่ส่วน Front-end
    • แต่ถ้าเพิ่มความเร็วส่วน back-end ได้ก็เป็นเรื่องดี
  • เปิด Keep alive ในทุกๆ Hop
    • ข้อมูลจะถูก Cache ไว้ไม่ต้องเรียกใช้หมดทุกรอบ
  • แยก Static ไฟล์ กับ Dynamic
    • ช่วยลด Cookie ที่ต้องส่งไปที่ static ไฟล์ได้
  • Mysql
    • ใช้ Memory table of unimportant data
  • Fulltext search – search แบบ Fulltext
    • Recommend : Sphinx
  • Reverse Proxy
    • Squid – Design สำหรับ Forward Proxy
    • Recommend : Vanish* ( ได้เฉพาะ UTF-8)
  • Big table – Database สำหรับการ Scalable
    • Hadoop ( yahoo พัฒนา opensource )

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน