ในฐานะวิศวกรเว็บไซต์ ฉันมุ่งเน้นไปที่ประสิทธิภาพและสถาปัตยกรรมเป็นส่วนใหญ่ โชคดีที่ฉันเข้าร่วมการประชุม sd2.0 ในครั้งนี้ และสามารถสื่อสารกับเพื่อนๆ ได้อย่างกว้างขวาง ในสองแง่มุมนี้ ฉันไม่กล้าที่จะเก็บบางส่วนไว้ ประสบการณ์การออกแบบสถาปัตยกรรมกับตัวเอง แบ่งปันโดยเพื่อน ๆ บทความนี้เป็นประสบการณ์ในการเข้าร่วมการประชุมและการสื่อสารกับผู้อื่น
ความคิดบางประการเกี่ยวกับการออกแบบสถาปัตยกรรม:
1. ไม่โอเวอร์ดีไซน์: อย่าโอเวอร์ดีไซน์
นี่เป็นหัวข้อที่มักถูกกล่าวถึง แต่ตราบใดที่คุณคิดว่ามีกี่ฟังก์ชันในสถาปัตยกรรมของคุณที่ไม่ได้ใช้งานเลย หรือถูกละทิ้งไปในที่สุด คุณก็สามารถเข้าใจถึงความสำคัญของมันได้ เมื่อคุณมีส่วนร่วมในการออกแบบสถาปัตยกรรมเป็นครั้งแรก คุณมักจะเข้าใจได้ มีแนวโน้มที่จะออกแบบการออกแบบขนาดใหญ่ สำหรับสถาปัตยกรรมของ Huayi เราหวังว่าจะออกแบบสถาปัตยกรรมแบบเพิ่มหน่วยที่สามารถปรับขนาดได้อย่างมากและสามารถปรับให้เข้ากับทุกความต้องการได้ การพัฒนาเว็บไซต์เป็นกระบวนการที่มีการเปลี่ยนแปลงตลอดเวลา การเปลี่ยนแปลงในสัปดาห์หน้าและเราจะต้องตอบสนองต่อการเปลี่ยนแปลงโดยเร็วที่สุด
วิศวกรของ eBay กล่าวว่าการออกแบบสถาปัตยกรรมของพวกเขาไม่สามารถตอบสนองการเติบโตของระบบได้ ดังนั้นระบบของพวกเขาจึงถูกพลิกคว่ำและทำใหม่อยู่เสมอ โปรดทราบว่าไม่มีปัญหากับความสามารถของสถาปนิก eBay สถาปัตยกรรมที่พวกเขาออกแบบสร้างขึ้นบนคอขวดของเวอร์ชันเก่าเสมอ โดยหวังว่าสถาปัตยกรรมใหม่จะนำมาซึ่งความก้าวหน้าครั้งใหม่ ในระยะเวลาอันสั้น ความต้องการใหม่ล้นหลาม พวกเขาจึงต้องใช้สถาปัตยกรรมใหม่
การพัฒนาเว็บเป็นกระบวนการที่คล่องตัวมาก การเปลี่ยนแปลงเกิดขึ้นได้ตลอดเวลา ในหลาย ๆ ด้าน ภาวะฉุกเฉินนั้นสูงมากเมื่อเทียบกับการพัฒนาซอฟต์แวร์
2. วงจรชีวิตของสถาปัตยกรรมเว็บ: วงจรชีวิตของสถาปัตยกรรมเว็บ
เนื่องจากเราจำเป็นต้องกำจัดการออกแบบที่มากเกินไปและต้องมีการมองการณ์ไกลในระดับหนึ่ง เราจะหาจุดสมดุลได้อย่างไร ฉันหวังว่าวงจรชีวิตสถาปัตยกรรมเว็บต่อไปนี้จะช่วยคุณได้
สถาปัตยกรรมที่ออกแบบจะต้องสามารถรองรับการเติบโต 1-10 เท่าโดยเพียงแค่เพิ่มความจุของฮาร์ดแวร์ ในช่วงระยะเวลาการเติบโต 5-10 เท่า โปรดเริ่มออกแบบสถาปัตยกรรมเวอร์ชันถัดไปเพื่อให้สามารถทนต่อ 10 เท่าถัดไป การเติบโตสองเท่า
เหตุผลที่ Google สามารถครอบงำไม่ได้ทั้งหมดเนื่องจากเทคโนโลยีการค้นหาและเทคโนโลยีการเรียงลำดับขั้นสูง ที่จริงแล้ว รวมถึง Baidu และ Yahoo เทคโนโลยีที่ใช้อยู่ในขณะนี้มีความคล้ายคลึงกัน อย่างไรก็ตาม Google สามารถบรรลุเป้าหมายนี้ได้ด้วยการเพิ่มเซิร์ฟเวอร์นับหมื่นภายใน ต่อเดือน ความสามารถของระบบที่เพียงพอนั้นยากต่อการทำซ้ำ
3. แคช: แคช
พื้นที่มีการแลกเปลี่ยนกับเวลา แคชมีความสำคัญสูงสุดในการออกแบบคอมพิวเตอร์เสมอ ตั้งแต่ CPU ไปจนถึง IO ผู้ก่อตั้งของสถาปัตยกรรมเว็บมีความสำคัญ jbosscache ผู้ก่อตั้ง Taobao กล่าวว่า ในความเป็นจริงแล้ว การออกแบบแคชของเว็บและแคชระดับองค์กรนั้นแตกต่างกันมาก แคชระดับองค์กรมุ่งเน้นไปที่ตรรกะ ในขณะที่แคชของเว็บนั้นง่ายและรวดเร็ว -
ปัญหาที่เกิดจากแคชคืออะไร ความซับซ้อนของโปรแกรมจะเพิ่มขึ้นอีก เนื่องจากข้อมูลถูกกระจายไปทั่วกระบวนการต่างๆ การซิงโครไนซ์จึงเป็นปัญหาที่ยุ่งยาก ถูกนำมาใช้หรือไม่ กลยุทธ์มักต้องผูกพันกับธุรกิจ
Laoqian ออกแบบลิงค์ลิสต์แคชสำหรับโพสต์ที่ออกแบบโดย Sohu ซึ่งไม่เพียงแต่สามารถตอบสนองความต้องการในการแทรกที่ยืดหยุ่นเท่านั้น แต่ยังช่วยให้สามารถอ่านได้อย่างรวดเร็วอีกด้วย เครื่องมือ
ลิงก์: วิดีโอเกี่ยวกับการออกแบบสถาปัตยกรรมของ Qian Hongwu http://211.100.26.82/CSDN_Live/140/qhw.flv
กลยุทธ์ทั่วไปของแคชคือการเก็บข้อมูลไว้ในหน่วยความจำแทนที่จะเก็บไว้ในดิสก์ที่ใช้เวลานานกว่า จากมุมมองนี้ ฮีปเอ็นจิ้น (วิธีการจัดเก็บ) ที่จัดทำโดย MySQL ก็เป็นวิธีการที่น่าพิจารณาเช่นกัน วิธีการจัดเก็บข้อมูลนี้สามารถจัดเก็บข้อมูลในหน่วยความจำและรักษาความสามารถในการสืบค้นอันทรงพลังของ SQL ได้ มันฆ่านกสองตัวด้วยหินก้อนเดียวหรือไม่
เราพูดถึงเฉพาะการอ่านแคชที่นี่ จริงๆ แล้วยังมีแคชการเขียนซึ่งไม่ค่อยได้ใช้ในชุมชนที่เน้นเนื้อหา เพราะปัญหาหลักที่ชุมชนดังกล่าวจำเป็นต้องแก้ไขคือปัญหาการอ่าน แต่เมื่อความสามารถในการประมวลผลลดลง กว่าความจุคำขอ เมื่อหรือเมื่อมีการแคชคำขอเดียวเพื่อสร้างบล็อกแล้วประมวลผลเป็นชุด การเขียนแคชจะปรากฏขึ้น เราสามารถค้นหาแคชดังกล่าวได้อย่างง่ายดายในการออกแบบชุมชนที่มีการโต้ตอบสูง
ประการที่สี่ โมดูลหลักต้องได้รับการพัฒนาด้วยตัวเอง: DIY โมดูลหลักของคุณ
เราตระหนักดีถึงเรื่องนี้ Qian Hongwu และ Yunfeng ยังกล่าวอีกว่าเรามักจะใช้โมดูลโอเพ่นซอร์สบางตัวหากไม่เกี่ยวข้องก็เป็นไปได้จริง ๆ ถ้าเป็นเช่นนั้นเราต้องระวังเพราะเมื่อใด จำนวนการเข้าชมถึงระดับหนึ่ง โมดูลเหล่านี้มักจะมีปัญหาไม่ทางใดก็ทางหนึ่ง แน่นอนว่าเราสามารถระบุปัญหาได้ว่าเป็นความไม่คุ้นเคยกับโมดูลโอเพ่นซอร์ส แต่ไม่ว่าอะไรก็ตาม เมื่อมีปัญหากับแกนกลาง น่ากลัวมากที่จะไม่เข้าใจโค้ดของมันจนหมด
5. การจัดเก็บข้อมูลที่เหมาะสม: การจัดเก็บข้อมูลที่เหมาะสม
เราจำเป็นต้องใช้ฐานข้อมูลหรือไม่ Lei Ming บอกเราว่าการค้นหาไม่จำเป็นต้องมีฐานข้อมูล Yunfeng บอกเราว่าเกมไม่จำเป็นต้องใช้ฐานข้อมูล แทนที่มันเหรอ?
ก่อนอื่นเราต้องยอมรับว่าฐานข้อมูลยังทำงานกับไฟล์ด้วย เราต้องการฐานข้อมูล เพื่อใช้ฟังก์ชันต่อไปนี้เป็นหลัก ฟังก์ชันหนึ่งคือการจัดเก็บข้อมูล และอีกฟังก์ชันหนึ่งคือการดึงข้อมูล ในฐานข้อมูลเชิงสัมพันธ์ จริงๆ แล้วเราให้ความสำคัญกับความสามารถในการค้นหาที่ซับซ้อนของฐานข้อมูลเป็นอย่างมาก ไม่ต้องอ่านให้ละเอียด แค่มองดู)
เลือก c.Class_name,d.Class_name_2,a.Creativity_Title,b.User_name,(เลือกจำนวน (Id) จากการทบทวนโดยที่ Reviewid=a.Id) เป็น countNum จากความคิดสร้างสรรค์เป็น a, User_info เป็น b, คลาสเป็น c, class2 เป็น d โดยที่ a.user_id=b.id และ a.Creativity_Class=c.Id และ a.Creativity_Class_2=d.Id
เลือก a.Id,max(c.Class_name),(max(d.Class_name_2),max(a.Creativity_Title),max(b.User_name),count(e.Id) เป็น countNum จาก Creativity เป็น a,User_info เป็น b ,คลาสเป็น c,class2 เป็น d,รีวิวเป็น e โดยที่ a.user_id=b.id และ a.Creativity_Class=c.Id และ a.Creativity_Class_2=d.Id และ a.Id=e.Reviewid จัดกลุ่มโดย a.Id … ……………………………….