อ่าน 2 นาที
เกียร์แมน
Gearman คือ เฟรมเวิร์กแอปพลิเคชัน ที่ออกแบบมาเพื่อกระจายงานคอมพิวเตอร์ที่เหมาะสมไปยังคอมพิวเตอร์หลายเครื่อง เพื่อให้สามารถทำงานขนาดใหญ่ได้เร็วขึ้น หรือทำการ ปรับสมดุลภาระงาน...
เกียร์แมน
| เกียร์แมน | |
|---|---|
| ผู้เขียนต้นฉบับ | แบรด ฟิตซ์แพทริก |
| นักพัฒนา | ไบรอัน เอเคอร์ , เอริค เดย์ |
| ปล่อย | 8 มกราคม 2552 |
| เวอร์ชันเสถียร | 1.1.21 / 6 พฤศจิกายน 2023 |
| เขียนเป็น | C , C++ , m4 , สคริปต์เชลล์ต้นฉบับ: Perl |
| ระบบปฏิบัติการ | ลินุกซ์ , วินโดวส์ (ไม่มีเซิร์ฟเวอร์), โอเพนวีเอ็มเอส |
| แพลตฟอร์ม | x86-64 |
| มีจำหน่ายใน | ภาษาอังกฤษ |
| พิมพ์ | กรอบงานแอปพลิเคชัน |
| ใบอนุญาต | บีเอสดี |
| เว็บไซต์ | gearman.org |
| ที่เก็บข้อมูล | github.com/gearman/ |
Gearmanคือเฟรมเวิร์กแอปพลิเคชันที่ออกแบบมาเพื่อกระจายงานคอมพิวเตอร์ที่เหมาะสมไปยังคอมพิวเตอร์หลายเครื่อง เพื่อให้สามารถทำงานขนาดใหญ่ได้เร็วขึ้น หรือทำการปรับสมดุลภาระงานหรือทำทั้งสองอย่างผสมผสานกัน ตัวอย่างเช่น เว็บเซิร์ฟเวอร์สามารถใช้ Gearman เพื่อส่งงานที่ไม่เหมาะสมไปยังคอมพิวเตอร์เครื่องอื่น (ซึ่งอาจทำงานบนสถาปัตยกรรมคอมพิวเตอร์ ที่แตกต่างกัน ใช้ระบบปฏิบัติการ ที่แตกต่างกัน หรือใช้ภาษาคอมพิวเตอร์ที่เหมาะสมกับการทำงานนั้นๆ มากกว่า) Gearman เป็นซอฟต์แวร์ โอเพนซอร์สฟรีที่เผยแพร่ภายใต้ใบอนุญาต BSD
เดิมทีโปรแกรมนี้เขียนขึ้นโดยBrad Fitzpatrickด้วยภาษา Perlจากนั้นBrian Akerและ Eric Day ได้เขียนใหม่ด้วยภาษา C
วิธีการทำงานของ Gearman

Gearman กำหนดบทบาทให้กับคอมพิวเตอร์แต่ละเครื่องที่เกี่ยวข้อง ไม่ว่าจะเป็นไคลเอ็นต์เซิร์ฟเวอร์งานหรือเวิร์กเกอร์ เครื่องเวิร์กเกอร์สามารถได้รับมอบหมายบทบาทเวิร์กเกอร์ได้หลายครั้ง ซึ่งช่วยให้คอมพิวเตอร์ที่มีประสิทธิภาพสูงกว่าสามารถทำงานส่วนต่างๆ ของงานที่กำหนดได้มากขึ้น งานจะเริ่มต้นจากไคลเอ็นต์ ส่งต่อจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์งาน และดำเนินการบนเวิร์กเกอร์หนึ่งตัวหรือมากกว่านั้น ผลลัพธ์ของงานที่เสร็จสมบูรณ์จะถูกส่งกลับไปยังไคลเอ็นต์ที่งานนั้นเริ่มต้นขึ้นอีกครั้งผ่านทางเซิร์ฟเวอร์งาน Gearman มีความสัมพันธ์เชิงแนวคิดกับMapReduceโดย Gearman จัดการ MapReduce โดยอนุญาตให้โหนดเวิร์กเกอร์แมปงานไปยังเวิร์กเกอร์อื่นๆ โดยเวิร์กเกอร์ดั้งเดิมทำหน้าที่เป็นตัวลด (reducer)
Gearman จะทำการรวมงานที่ส่งมาจากไคลเอ็นต์ หากไคลเอ็นต์สองรายขึ้นไปขอให้ดำเนินการงานเดียวกันให้เสร็จสมบูรณ์ ไม่ว่าจะโดยการเห็นว่ามีการส่งบล็อกเดียวกันหรือโดยการใช้ค่าที่ไม่ซ้ำกันที่ไคลเอ็นต์ส่งมา Gearman จะรวมงานเพื่อให้ใช้เวิร์กเกอร์เพียงรายเดียวเท่านั้น การทำเช่นนี้มีจุดประสงค์เฉพาะเพื่อหลีกเลี่ยงปัญหาการรุมโจมตี (thundering herd)ซึ่งเป็นปัญหาที่พบบ่อยในความล้มเหลวของการเข้าถึงแคช (cache hit failures)
เพื่อลดความเสียหายที่อาจเกิดขึ้นหากเซิร์ฟเวอร์งาน (หรือการเชื่อมต่อเครือข่าย) ล้มเหลว ลูกค้าสามารถกำหนดค่าให้มีเซิร์ฟเวอร์งานที่กำหนดไว้มากกว่าหนึ่งเครื่องได้ หากเซิร์ฟเวอร์งานที่กำหนดไว้เครื่องแรกเกิดล้มเหลว ระบบจะทำการแทนที่ด้วยเซิร์ฟเวอร์อื่นโดยอัตโนมัติ
Gearman ใช้โปรโตคอลที่ประกอบด้วยแพ็กเก็ตไบนารีซึ่งมีคำขอและคำตอบ โปรโตคอลนี้กำหนดโครงสร้างของข้อความที่ส่งผ่านระหว่างสามส่วนของการใช้งาน Gearman โดยค่าเริ่มต้น โปรโตคอล Gearman ใช้ พอร์ต TCP 4730 ก่อนหน้านี้ใช้พอร์ต 7003 แต่ขัดแย้งกับ ช่วงพอร์ต AFS และ IANAจึงกำหนดพอร์ตใหม่ (4730) ให้
ชื่อ "Gearman" ถูกเลือกให้เป็นคำสลับอักษรของ "Manager" "เนื่องจากมันส่งงานไปให้คนอื่นทำ แต่ตัวมันเองไม่ได้ทำอะไรที่เป็นประโยชน์เลย" [ 1 ]
คุณสมบัติ
- การลองงานซ้ำ
- การจัดตารางแบบหมุนเวียน
- การรวมตัวกัน
- การจัดเก็บข้อมูลถาวรผ่านทาง:
- libmemcached
- ลิบดริซเซิล
- ฐานข้อมูล SQLite
- MySQL
- โพสต์เกรส
- ตู้โตเกียว
- Redis (ยังไม่เปิดตัว อยู่ระหว่างการพัฒนา)
- MongoDB (ยังไม่เปิดตัว อยู่ระหว่างการพัฒนา)
การนำไปใช้
- Gearmand จนถึงเวอร์ชัน 1.1.12
- Gearmand ตั้งแต่เวอร์ชัน 1.1.13
- บริการ Java Gearman
- เกียร์แมน::เซิร์ฟเวอร์
- ทีซีแอลเกียร์แมน
ลูกค้า
ณ ปี 2025 มีไลบรารีไคลเอ็นต์สำหรับ C, Perl, Node.js , Python , PHP , Ruby , Java , .NET , JMS, MySQL , PostgreSQLและDrizzle [ 2 ]
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- GearmanบนGitHub
- http://danga.com/words/2007_06_usenix/usenix.pdf
- http://gearman.org/documentation/
- http://gearman.org/download/
- http://lists.danga.com/pipermail/gearman/2008-April/000076.html
- https://web.archive.org/web/20081209012837/http://krow.livejournal.com/628025.html
- GearmanBundle สำหรับโครงการ Symfony2
การอ้างอิง
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เกียร์แมน
Gearman คือ เฟรมเวิร์กแอปพลิเคชัน ที่ออกแบบมาเพื่อกระจายงานคอมพิวเตอร์ที่เหมาะสมไปยังคอมพิวเตอร์หลายเครื่อง เพื่อให้สามารถทำงานขนาดใหญ่ได้เร็วขึ้น หรือทำการ ปรับสมดุลภาระงาน...
วิธีการทำงานของ Gearman
Gearman กำหนดบทบาทให้กับคอมพิวเตอร์แต่ละเครื่องที่เกี่ยวข้อง ไม่ว่าจะเป็น ไคลเอ็นต์ เซิร์ฟเวอร์ งานหรือเวิร์กเกอร์ เครื่องเวิร์กเกอร์สามารถได้รับมอบหมายบทบาทเวิร์กเกอร์ได้หลายครั้ง ซึ่งช่วยให้คอมพิวเตอร์ที่มีประสิทธิภาพสูงกว่าสามารถทำงานส่วนต่างๆ...
คุณสมบัติ
การลองงานซ้ำ การจัดตารางแบบหมุนเวียน การรวมตัวกัน การจัดเก็บข้อมูลถาวรผ่านทาง: libmemcached ลิบดริซเซิล ฐานข้อมูล SQLite MySQL โพสต์เกรส ตู้โตเกียว Redis (ยังไม่เปิดตัว อยู่ระหว่างการพัฒนา) MongoDB (ยังไม่เปิดตัว อยู่ระหว่างการพัฒนา)
การนำไปใช้
Gearmand จนถึงเวอร์ชัน 1.1.12 Gearmand ตั้งแต่เวอร์ชัน 1.1.13 บริการ Java Gearman เกียร์แมน::เซิร์ฟเวอร์ ทีซีแอลเกียร์แมน