เอิร์ลแลง(Erlang) ตอนที่ 3

posted on 04 Dec 2009 14:14 by roofimon in Erlang
Erlang and Multicore
ปัจจุบันเราหลีกเลี่ยงไม่ได้ที่จะต้องใช้งานซีพียูที่มีหลายคอร์ ซึ่งสำหรับภาษา C และ Java การสร้างแอพพลิเคชั่นให้รองรับการทำงานแบบหลายคอร์นั้นเป็นเรื่องยากมากเพราะมันไม่ได้ถูกออกแบบมาให้มีคุณลักษณะแบบนี้เช่นการทำการดีบั๊กโปรแกรมที่ทำงานแบบขนานใน C และ Javaเป็นเรื่องยากมาก และแน่นอนเอิร์ลแลงทำได้ดีในเรื่องนี้มากๆ เพราะเอิร์ลแลงแตกโพรเซสออกมาโดยไม่มีการใช้เมมโมรี่ร่วมกันและสื่อสารกันผ่านการส่งเมสเสจทำให้มันเหมาะสมกับการทำงานบนซีพียูแบบหลายคอร์และทำให้มันทำงานบนซีฑียูแบบหลายคอร์ได้โดยไม่ต้องออกแบบมันใหม่ทั้งหมด

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

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

Case Studies
หลังจากเราได้เห็นความสามารถต่างๆของอิร์ลแลงไปบ้างแล้วต่อไปเรามาดูว่า มีกรณีศึกษาใดบ้างที่น่าสนใจในการนำเอิร์ลแลงไปใช้ เราควรจะเริ่มจากอิริคสันก่อนโดยเป็นโปรดักที่ชื่อ AXD301ATM Switch และตามมาด้วยโปรเจคโอเพนซอร์สอีกตัวที่น่าสนใจที่นำเอิร์ลแลงไปใช้งานนั่นคือ CouchDB 
 
The AXD301 ATM Switch
AXD301 เป็น telephony-class 10–160 Gbps เอทีเอ็มสวิทซ์ที่ถูกออกแบบและสร้างจากศูนย์ โดยที่ระยะเวลาการสร้างทั้งหมดใช้เวลาสามปี หัวใจหลักของสวิทซ์ตัวนี้คือซอฟท์แวร์ที่ถูกเขียนด้วยเอิร์ลแลงที่มีความยาวมากว่า 1.5 ล้านบรรทัดที่ทำงานร่วมกับโค้ดที่ทำหน้างานในระดับต่ำและเป็นไดร์เวอร์ที่ถูกเขียนซีและซีพลัสพลัสอีกห้าแสนบรรทัด หน้าที่หลักของเอิร์ลแลงก็คือการควบคุมลอจิกที่ซับซ้อน การจัดการและบริหารพร้อมทั้งการดูแลรักษาเอทีเอ็มสวิทซ์นี้
สวิทซ์ตัวนี้ถูกติดตั้งอย่างแพร่หลายไปทั่วโลกแต่งานที่ทำให้อุปกรณ์ชิ้นนี้มีชื่อเสียงโด่งดังมากคืองานที่บริติชเทเลคอม โดยโปรเจคนั้นรู้กันอย่างกว้างขวางว่าเป็นระบบ "Voice over ATM" ที่ใหญ่ที่สุดในโลกและผลการทำงานหลังจากการทำงานวันแรกของโหนดนี่ในปี 2002 พบว่าระบบมีความน่าเชื่อถือสูงมากระดับ 99.999999% 

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

จากความสำเร็จของโปรเจคนี้ทำให้อิริกสันนำเอิร์ลแลงไปใช้ในโปรเจคอื่นๆอีกหลายโปรเจคไม่ว่าจะเป็น SIP telephony stack, ซอฟท์แวร์ที่ใช้ในการควบคุมสถานีแบบไร้สาย, telephony gateway,media gateways, broadband solutions, and in GPRS and 3G data transmission.

CouchDB
เมื่อนายเดเมี่ยน แคทซ์ตัดสินใจที่จะสร้างเคาช์ดีบีเค้าต้องการที่จะพัฒนาอะไรที่มัน "แจ๋ว" เค้าเองต้องการที่จะพิสูจน์ตัวเองว่าตัวเองมีความสามารถมากพอที่จะพัฒนาอะไรสักอย่างจากศูนย์หรือไม่สิ่งที่เค้าต้องการทำคือฐานข้อมูลที่ถูกสร้างบนพื้นฐานของ schema-less replicated document store, และเก็บออบเจคในรูปแบบของ JSON, ข้อมูลเหล่านั้นจะถูกใช้งานป่าน RESTful 

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

เอิร์ลแลงมีคุณสมบัติครบตามที่เดเมียนต้องการเพื่อสร้างฟังก์ชั่นการทำงานพิเศษให้เคาช์ดีบีทุกข้อ เขาจึงเริ่มย้ายโค้ดเปลี่ยนไปเป็นเอิร์ลเลงสำหรับส่วนของการทำงานแบบพร้อมกันหลายโพรเซสแทนที่โค้ดเดิมที่เป็นซีพลัสพลัส แต่สุดท้ายแล้วโค้ดทั้งหมดของเคาช์ดีบีถูกเขียนใหม่ทั้งหมดเป็นเอิร์ลแลง!!!! เนื่องจากเอิร์ลแลงมีสิ่งที่เขาต้องการในการสร้างระบบฐานข้อมูลเช่น ระบบจัดการไอโอที่แข็งแรงมาก มีความน่าเชื่อถือสูง กระบวนการจัดการกับเออร์เร่อร์ที่ดี และหลังจากทำการทดสอบเปรียบเทียบสมรรถนะแอพพลิเคชั่นตัวใหม่(ยังไม่ได้ปรับแต่งโค้ด) พบว่ามันสามารถรับโหลดได้ประมาณ
20,000 คอนเน็กชั่นพร้อมกัน ซึ่งเมื่อเทียบกับแอพพลิเคชั่นตัวเดิมที่เป็นซีพลัสพลัสซึ่งรับได้เพียง 500 คอนเน็กชั่นเท่านั้น !!! ตอนนี้เคาช์บีดีถือเป็นโปรเจคที่มีชื่อเสียงมากที่ถูกเขียนด้วยเอิร์ลแลงและโค้ดของโปรเจคนนี้เป็นแหล่ง
ที่ใช้ศึกษาเกี่ยวกับเอิร์ลแลงที่ดีมาก

Comment

Comment:

Tweet

This information is rather interesting! Thank you, I'm gonna use it in my work!

#7 By alt-tshirts.com (103.7.57.18|46.98.192.24) on 2013-01-30 04:01

Pics are great! I watched them with great delight, thank you купить чехол для iPhone 4

#6 By купить чехол для iPhone 4 (103.7.57.18|46.98.195.67) on 2013-01-05 00:19

#5 By outstanding essays for sale (103.7.57.18|46.98.192.233) on 2012-12-11 04:44

Thank you, I learned a lot from your article. It is really interesting and informative. Hope, you will give us more information concerning this issue.

#4 By homework fox (103.7.57.18|46.98.200.250) on 2012-12-02 19:50

I guess, paper writing services make the best news or dissertation cover about this good post, thence, men can have custom dissertation and, probably, it’s practicable to get the online thesis writing service or already written essays.

#3 By thesis writing (91.212.226.143) on 2011-11-20 05:52

Do not money to buy a house? Do not worry, just because that's achievable to get the <a href="http://goodfinance-blog.com/topics/personal-loans">personal loans</a> to work out such problems. Therefore take a short term loan to buy all you want.

#2 By JEFFERSONCaitlin (91.212.226.143) on 2011-11-04 18:34

ติดตามครับ รอตอนหน้า

#1 By somkiat on 2009-12-04 18:37