TAO: The power of the graphBy Mark Marchukov on Wednesday, June 26, 20 การแปล - TAO: The power of the graphBy Mark Marchukov on Wednesday, June 26, 20 ไทย วิธีการพูด

TAO: The power of the graphBy Mark

TAO: The power of the graph
By Mark Marchukov on Wednesday, June 26, 2013 at 12:00am
Facebook puts an extremely demanding workload on its data backend. Every time any one of over a billion active users visits Facebook through a desktop browser or on a mobile device, they are presented with hundreds of pieces of information from the social graph. Users see News Feed stories; comments, likes, and shares for those stories; photos and check-ins from their friends -- the list goes on. The high degree of output customization, combined with a high update rate of a typical user’s News Feed, makes it impossible to generate the views presented to users ahead of time. Thus, the data set must be retrieved and rendered on the fly in a few hundred milliseconds.
This challenge is made more difficult because the data set is not easily partitionable, and by the tendency of some items, such as photos of celebrities, to have request rates that can spike significantly. Multiply this by the millions of times per second this kind of highly customized data set must be delivered to users, and you have a constantly changing, read-dominated workload that is incredibly challenging to serve efficiently.
Memcache and MySQL
Facebook has always realized that even the best relational database technology available is a poor match for this challenge unless it is supplemented by a large distributed cache that offloads the persistent store. Memcache has played that role since Mark Zuckerberg installed it on Facebook’s Apache web servers back in 2005. As efficient as MySQL is at managing data on disk, the assumptions built into the InnoDB buffer pool algorithms don’t match the request pattern of serving the social graph. The spatial locality on ordered data sets that a block cache attempts to exploit is not common in Facebook workloads. Instead, what we call creation time locality dominates the workload -- a data item is likely to be accessed if it has been recently created. Another source of mismatch between our workload and the design assumptions of a block cache is the fact that a relatively large percentage of requests are for relations that do not exist -- e.g., “Does this user like that story?” is false for most of the stories in a user’s News Feed. Given the overall lack of spatial locality, pulling several kilobytes of data into a block cache to answer such queries just pollutes the cache and contributes to the lower overall hit rate in the block cache of a persistent store.

The use of memcache vastly improved the memory efficiency of caching the social graph and allowed us to scale in a cost-effective way. However, the code that product engineers had to write for storing and retrieving their data became quite complex. Even though memcache has “cache” in its name, it’s really a general-purpose networked in-memory data store with a key-value data model. It will not automatically fill itself on a cache miss or maintain cache consistency. Product engineers had to work with two data stores and very different data models: a large cluster of MySQL servers for storing data persistently in relational tables, and an equally large collection of memcache servers for storing and serving flat key-value pairs derived (some indirectly) from the results of SQL queries. Even with most of the common chores encapsulated in a data access library, using the memcache-MySQL combination efficiently as a data store required quite a bit of knowledge of system internals on the part of product engineers. Inevitably, some made mistakes that led to bugs, user-visible inconsistencies, and site performance issues. In addition, changing table schemas as products evolved required coordination between engineers and MySQL cluster operators. This slowed down the change-debug-release cycle and didn’t fit well with Facebook's “move fast” development philosophy.
Objects and associations
In 2007, a few Facebook engineers set out to define new data storage abstractions that would fit the needs of all but the most demanding features of the site while hiding most of the complexity of the underlying distributed data store from product engineers. The Objects and Associations API that they created was based on the graph data model and was initially implemented in PHP and ran on Facebook's web servers. It represented data items as nodes (objects), and relationships between them as edges (associations). The API was an immediate success, with several high-profile features, such as likes, pages, and events implemented entirely on objects and associations, with no direct memcache or MySQL calls.
As adoption of the new API grew, several limitations of the client-side implementation became apparent. First, small incremental updates to a list of edges required invalidation of the entire item that stored the list in cache, reducing hit rate. Second, requests operating on a list of edges had to always transfer the entire list from memcache servers over to the web servers, even if the final result contained only a few edges or was empty. This wasted network bandwidth and CPU cycles. Third, cache consistency was difficult to maintain. Finally, avoiding thundering herds in a purely client-side implementation required a form of distributed coordination that was not available for memcache-backed data at the time.
All those problems could be solved directly by writing a custom distributed service designed around objects and associations. In early 2009, a team of Facebook infrastructure engineers started to work on TAO (“The Associations and Objects”). TAO has now been in production for several years. It runs on a large collection of geographically distributed server clusters. TAO serves thousands of data types and handles over a billion read requests and millions of write requests every second. Before we take a look at its design, let’s quickly go over the graph data model and the API that TAO implements.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
เต่า: พลังงานของกราฟโดยทำเครื่องหมาย Marchukov ในวันพุธ 26 มิถุนายน 2556 เวลา 12:00เฟสบุ๊คทำให้มีปริมาณความต้องการมากใน backend ของข้อมูล ทุกครั้งที่หนึ่งผ่านพันล้านผู้ใช้งานเข้าชม Facebook ผ่าน ทางเบราว์เซอร์บนเดสก์ท็อป หรือ บนอุปกรณ์มือถือ พวกเขาจะนำเสนอ มีหลายร้อยชิ้นของข้อมูลจากกราฟสังคม ผู้ใช้เห็นข่าวฟีดเรื่องราว ความคิดเห็น ชอบ และแบ่งปันในเรื่องราวเหล่านั้น ภาพถ่ายและการเช็คอินจากเพื่อน - รายการไปใน ผลผลิตเอง รวมกับอัตราสูงการปรับปรุงของผู้ใช้ทั่วไปข่าวสารอาหาร ในระดับสูงทำให้ไม่สามารถสร้างมุมมองที่แสดงต่อผู้ใช้ล่วงหน้า ชุดข้อมูลต้องถูกเรียก และแสดงในการบินในหลายร้อยมิลลิวินาทีความท้าทายนี้จะยากเนื่องจากชุดข้อมูลไม่ได้ partitionable และแนวโน้มของสินค้าบางอย่าง เช่นภาพถ่ายของดารา มีอัตราการร้องขอที่สามารถขัดขวางอย่างมาก นี้คูณล้านครั้งต่อวินาทีของชุดข้อมูลที่กำหนดเองสูงต้องส่งให้กับผู้ใช้ และคุณมีการเปลี่ยนแปลงตลอดเวลา ปริมาณงานที่ครอบงำอ่านที่ท้าทายอย่างเหลือเชื่อในการให้บริการอย่างมีประสิทธิภาพMemcache และ MySQLFacebook มักจะได้รับรู้แม้สุดฐานข้อมูลเชิงสัมพันธ์เทคโนโลยีว่าตรงดีสำหรับความท้าทายนี้เว้นแต่เป็นเสริม ด้วยแคกระจายขนาดใหญ่ที่ offloads เก็บแบบถาวร Memcache ได้เล่นบทบาทที่ตั้งแต่ซักเคอร์เบิร์กติดตั้งบน Facebook ของอะแพชีเว็บเซิร์ฟเวอร์ในปี 2005 ที่มีประสิทธิภาพเป็น MySQL ในการบริหารข้อมูลบนดิสก์ สมมติฐานในพูบัฟเฟอร์ InnoDB อัลกอริทึมไม่ตรงกับคำขอรูปแบบของการให้บริการกราฟทางสังคม ท้องถิ่นพื้นที่บนชุดข้อมูลสั่งที่แคบล็อกพยายามกดขี่ขูดรีดในเวิร์ก Facebook ไม่ได้ แทน สิ่งที่เราเรียกท้องถิ่นเวลาสร้างกุมอำนาจปริมาณงาน - ข้อมูลสินค้ามีแนวโน้มที่จะเข้าถึงถ้ามันเพิ่งสร้าง ตรงปริมาณของเราและสมมติฐานการออกแบบของแคบล็อกแหล่งอื่นคือ ความจริงที่มีเปอร์เซ็นต์ค่อนข้างมากของการร้องขอสำหรับความสัมพันธ์ที่มีอยู่ - เช่น "ไม่ผู้ใช้เช่นนั้น" เป็นเท็จสำหรับส่วนใหญ่ของเรื่องราวในตัวดึงข้อมูลข่าวสารของผู้ใช้ ให้ขาดโดยรวมของพื้นที่ท้องถิ่น ดึงหลายกิโลไบต์ของข้อมูลเป็นบล็อกแคชของการตอบแบบสอบถามดังกล่าวเพียง pollutes แค และการจัดสรรต่ำกว่าอัตราตีทั้งหมดในแคบล็อกของร้านค้าแบบใช้ memcache ปรับปรุงประสิทธิภาพหน่วยความจำแคกราฟสังคมสำคัญ ๆ และอนุญาตให้เราปรับขนาดในวิธีที่มีประสิทธิภาพ อย่างไรก็ตาม รหัสผลิตภัณฑ์วิศวกรได้เขียนสำหรับจัดเก็บ และเรียกดูข้อมูลของพวกเขากลายเป็นค่อนข้างซับซ้อน แม้ memcache ได้ "แคช" ในชื่อ ได้จริง ๆ เก็บข้อมูลในหน่วยความจำเครือข่ายวัตถุ มีค่าคีย์ข้อมูลแบบจำลอง มันไม่โดยอัตโนมัติจะเติมเองในมิสแค หรือรักษาความสอดคล้องของแคช ผลิตภัณฑ์วิศวกรได้ทำงานกับข้อมูลร้านค้าและรูปแบบข้อมูลที่แตกต่างกันมาก: คลัสเตอร์ของเซิร์ฟเวอร์ MySQL ในการเก็บข้อมูลในตารางที่สัมพันธ์กันสามารถ และเซิร์ฟเวอร์ memcache จำนวนมากที่เท่า ๆ กันสำหรับการจัดเก็บ และให้บริการคู่ค่าคีย์แบนขนาดใหญ่ (บางทางอ้อม) ได้รับมาจากผลลัพธ์ของแบบสอบถาม SQL แม้จะ มีทั้งงานทั่วไปที่นึ้ในไลบรารีการเข้าถึงข้อมูล ใช้ชุด memcache MySQL ได้อย่างมีประสิทธิภาพเป็นการจัดเก็บข้อมูลต้องของความรู้ของระบบ internals ในส่วนผลิตภัณฑ์วิศวกร ย่อม บางคนทำผิดที่นำไปสู่ข้อบกพร่อง ไม่สอดคล้องกันที่ผู้ใช้มองเห็นได้ และปัญหาประสิทธิภาพการทำงานของเว็บไซต์ เปลี่ยนเค้าร่างของตาราง ตามที่ต้องการประสานงานระหว่างวิศวกรและ MySQL คลัสเตอร์ดำเนินพัฒนาผลิตภัณฑ์ นี้ชะลอรอบออกเปลี่ยนตรวจแก้จุดบกพร่อง และไม่เหมาะกับ Facebook ของปรัชญาการพัฒนา "ย้ายอย่างรวดเร็ว" วัตถุและความสัมพันธ์ของในปี 2007 กี่วิศวกรของ Facebook ที่กำหนดการกำหนด abstractions เก็บข้อมูลใหม่ที่จะพอดีกับความต้องการของแต่คุณสมบัติต้องของเว็บไซต์ในขณะที่ซ่อนของความซับซ้อนของตัวกระจายข้อมูล เก็บจากวิศวกรผลิตภัณฑ์ วัตถุและ API ของสมาคมที่จะสร้างขึ้นในแบบจำลองข้อมูลกราฟ และได้เริ่มดำเนินการใน PHP และวิ่งบน Facebook ของเว็บเซิร์ฟเวอร์ จะแสดงรายการข้อมูลเป็นโหนด (วัตถุ), และความสัมพันธ์ระหว่างพวกเขาที่เป็นขอบ (สมาคม) API เป็นความสำเร็จทันที มีหลายทรงสูงคุณลักษณะ ความชอบ หน้า และกิจกรรมดำเนินการวัตถุและความสัมพันธ์ กับ memcache ตรงหรือ MySQL ไม่เรียกเป็นของ API ใหม่เพิ่มขึ้น ข้อจำกัดต่าง ๆ ของไคลเอ็นต์กลายเป็นชัดเจน แรก เล็กอัพเดตรายการขอบต้อง invalidation ของสินค้าทั้งหมดที่เก็บรายชื่อในแคชของ ลดตีราคา ที่สอง คำขอปฏิบัติกับรายการขอบมีการเสมอถ่ายโอนรายการทั้งหมดจากเซิร์ฟเวอร์ memcache ผ่านเซิร์ฟเวอร์เว็บ แม้ว่าผลสุดท้ายประกอบด้วยเพียงสองสามขอบ หรือเปล่า สิ้นเปลืองแบนด์วิธของเครือข่ายและวงจร CPU สาม แคสอดคล้องไม่ยากที่จะรักษา สุดท้าย หลีกเลี่ยงสนั่นฝูงในการดำเนินการด้านไคลเอ็นต์หมดจดจำเป็นแบบกระจายการประสานงานที่ไม่มีข้อมูลสำรอง memcache เวลา สามารถแก้ไขปัญหาเหล่านั้นโดยตรง โดยเขียนบริการกระจายแบบกำหนดเองออกแบบวัตถุและความสัมพันธ์ของ ในช่วงต้นปี 2009 ทีมวิศวกรโครงสร้าง Facebook เริ่มต้นทำงานบนเต่า ("ที่สมาคมและวัตถุ") ตอนนี้มีเต่าในการผลิตหลายปี มันทำงานบนคลัสเตอร์เซิร์ฟเวอร์กระจายกันทางภูมิศาสตร์จำนวนมาก เต่าทำหน้าที่พันชนิดข้อมูล และจัดการผ่านพันล้านอ่านล้านเขียนคำขอและคำขอทุกวินาที ก่อนที่เราจะดูที่การออกแบบ ลองอย่างรวดเร็วไปกว่าโมเดลกราฟข้อมูลและ API ที่เต่า
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
TAO:
พลังของกราฟโดยมาร์คMarchukov ในพุธ 26 มิถุนายน, 2013 at 12:00 am
Facebook ทำให้ภาระงานเรียกร้องอย่างมากในส่วนหลังของข้อมูล ทุกครั้งที่คนใดคนหนึ่งมากกว่าหนึ่งพันล้านผู้ใช้งาน Facebook เข้าชมผ่านทางเบราว์เซอร์สก์ท็อปหรือบนโทรศัพท์มือถือของพวกเขาจะมีหลายร้อยชิ้นส่วนของข้อมูลจากกราฟทางสังคม ผู้ใช้จะเห็นเรื่องราวฟีดข่าว; ความเห็นชอบและหุ้นเรื่องราวเหล่านั้น ภาพถ่ายและเช็คอินจากเพื่อนของพวกเขา - รายการไปที่ ระดับสูงของการปรับแต่งการแสดงผลรวมกับอัตราการปรับปรุงสูงของผู้ใช้ทั่วไปของฟีดข่าว, ทำให้มันเป็นไปไม่ได้ที่จะสร้างมุมมองที่นำเสนอกับผู้ใช้งานก่อนเวลา ดังนั้นชุดข้อมูลจะต้องเรียกคืนและแสดงผลได้ทันทีในไม่กี่ร้อยมิลลิวินาที.
ความท้าทายนี้ทำยากมากขึ้นเพราะชุดข้อมูลที่ไม่สามารถแบ่งแยกและแนวโน้มของบางรายการเช่นภาพถ่ายของดาราที่จะมี อัตราการร้องขอที่สามารถขัดขวางอย่างมีนัยสำคัญ คูณนี้โดยล้านครั้งต่อวินาทีชนิดของข้อมูลชุดที่กำหนดเองสูงนี้จะต้องส่งมอบให้กับผู้ใช้และคุณมีการเปลี่ยนแปลงอย่างต่อเนื่องอ่านครอบงำภาระงานที่เป็นสิ่งที่ท้าทายอย่างไม่น่าเชื่อที่จะให้บริการได้อย่างมีประสิทธิภาพ.
Memcache และ MySQL
Facebook ได้เสมอตระหนักว่าแม้ เทคโนโลยีที่มีฐานข้อมูลเชิงสัมพันธ์ที่ดีที่สุดคือการแข่งขันที่ดีสำหรับความท้าทายนี้จนกว่าจะมีการเสริมด้วยแคชกระจายขนาดใหญ่ที่ offloads เก็บถาวร Memcache มีบทบาทว่าตั้งแต่ Mark Zuckerberg ติดตั้งบนเว็บเซิร์ฟเวอร์ Apache ของ Facebook กลับไปในปี 2005 ในฐานะที่เป็นที่มีประสิทธิภาพ MySQL เป็นที่การจัดการข้อมูลบนดิสก์สมมติฐานที่สร้างขึ้นในขั้นตอนวิธีการบัฟเฟอร์ InnoDB ไม่ตรงกับรูปแบบการร้องขอของการให้บริการทางสังคม กราฟ ท้องที่กับข้อมูลเชิงพื้นที่ที่สั่งซื้อชุดว่าแคชบล็อกความพยายามที่จะใช้ประโยชน์จากความไม่ธรรมดาในปริมาณที่ Facebook แต่สิ่งที่เราเรียกสถานที่เวลาการสร้างครอบงำภาระงาน - รายการข้อมูลที่มีโอกาสที่จะเข้าถึงได้ถ้ามันได้ถูกสร้างขึ้นเมื่อเร็ว ๆ นี้ แหล่งที่มาของภาระงานที่ไม่ตรงกันระหว่างและข้อสมมติฐานการออกแบบของแคชบล็อกของเราก็คือความจริงที่ว่าร้อยละที่ค่อนข้างใหญ่ของการร้องขอการมีความสัมพันธ์ที่ไม่อยู่ - เช่น "ไม่ใช้เรื่องที่เช่นนี้?" เป็นเท็จสำหรับส่วนมากของ เรื่องราวในฟีดข่าวของผู้ใช้ ได้รับการขาดโดยรวมของสถานที่เชิงพื้นที่ดึงกิโลไบต์หลายข้อมูลลงในแคชบล็อกเพื่อตอบแบบสอบถามดังกล่าวเพียงมลพิษแคชและก่อให้เกิดอัตราการตีโดยรวมลดลงในแคชบล็อกของการเก็บถาวร. การใช้ memcache อย่างมากมายการปรับปรุงหน่วยความจำ ประสิทธิภาพของแคชของกราฟทางสังคมและช่วยให้เราสามารถปรับขนาดในวิธีที่มีประสิทธิภาพ แต่รหัสที่วิศวกรของสินค้าที่มีการเขียนสำหรับการจัดเก็บและเรียกข้อมูลของพวกเขากลายเป็นที่ค่อนข้างซับซ้อน แม้ว่า memcache มี "แคช" ในชื่อของมันจริงๆวัตถุประสงค์ทั่วไปเครือข่ายในหน่วยความจำเก็บข้อมูลที่มีรูปแบบข้อมูลที่สำคัญที่มีมูลค่า มันจะไม่โดยอัตโนมัติกรอกตัวเองในแคชพลาดหรือรักษาความมั่นคงแคช วิศวกรสินค้ามีการทำงานร่วมกับสองร้านข้อมูลและรูปแบบข้อมูลที่แตกต่างกันมาก: เป็นกลุ่มที่มีขนาดใหญ่ของเซิร์ฟเวอร์ MySQL สำหรับการจัดเก็บข้อมูลที่เสมอต้นเสมอปลายในตารางสัมพันธ์และคอลเลกชันขนาดใหญ่อย่างเท่าเทียมกันของเซิร์ฟเวอร์ memcache สำหรับการจัดเก็บและการให้บริการคู่ค่าคีย์แบนมา (บางส่วนทางอ้อม ) จากผลของคำสั่งของ SQL ถึงแม้จะมีมากที่สุดของการทำงานร่วมกันห่อหุ้มในห้องสมุดการเข้าถึงข้อมูลโดยใช้ memcache-MySQL รวมกันได้อย่างมีประสิทธิภาพในขณะที่การจัดเก็บข้อมูลที่จำเป็นไม่น้อยของความรู้เกี่ยวกับ internals ระบบในส่วนของวิศวกรผลิตภัณฑ์ อย่างหลีกเลี่ยงไม่ทำผิดพลาดบางอย่างที่นำไปสู่ข้อผิดพลาดที่ไม่สอดคล้องกันผู้ใช้มองเห็นและปัญหาประสิทธิภาพของเว็บไซต์ นอกจากนี้การเปลี่ยนแปลงแบบแผนตารางเป็นผลิตภัณฑ์การพัฒนาที่จำเป็นต้องใช้การประสานงานระหว่างวิศวกรและ MySQL ผู้ประกอบการกลุ่ม นี้ชะลอตัวลงรอบการเปลี่ยนแปลงการแก้ปัญหาปล่อยและไม่ได้พอดีกับของ Facebook "ย้ายได้อย่างรวดเร็ว" ปรัชญาการพัฒนา. วัตถุและสมาคมในปี 2007 ไม่กี่วิศวกรของ Facebook ที่กำหนดไว้ในการกำหนดแนวคิดการจัดเก็บข้อมูลใหม่ที่จะตอบสนองความต้องการของทุกคน แต่คุณสมบัติที่ต้องการมากที่สุดของเว็บไซต์ในขณะที่ซ่อนที่สุดของความซับซ้อนของการจัดเก็บข้อมูลการกระจายพื้นฐานจากวิศวกรสินค้า วัตถุและสมาคม API ที่พวกเขาสร้างขึ้นอยู่บนพื้นฐานของกราฟรูปแบบข้อมูลและได้รับการดำเนินการครั้งแรกใน PHP และวิ่งบน Facebook ของเว็บเซิร์ฟเวอร์ มันเป็นตัวแทนของรายการข้อมูลเป็นโหนด (วัตถุ) และความสัมพันธ์ระหว่างพวกเขาเป็นขอบ (สมาคม) API จะเป็นความสำเร็จในทันทีที่มีคุณสมบัติสูงโปรไฟล์หลายอย่างเช่นชอบหน้าและเหตุการณ์ที่ดำเนินการทั้งหมดในวัตถุและสมาคมที่ไม่มี memcache ตรงหรือเรียก MySQL. ในฐานะที่เป็นยอมรับของ API ใหม่เพิ่มขึ้นหลายข้อ จำกัด ของลูกค้า การดำเนินการ -side ก็เห็นได้ชัด ประการแรกการปรับปรุงเพิ่มขึ้นเล็ก ๆ ในรายการของขอบที่ต้องใช้ในการทำให้ของรายการทั้งหมดที่เก็บไว้ในแคชรายการลดอัตราการตี ประการที่สองการร้องขอการดำเนินงานในรายชื่อของขอบต้องเสมอโอนรายชื่อทั้งหมดจากเซิร์ฟเวอร์ memcache ไปยังเว็บเซิร์ฟเวอร์แม้ว่าผลสุดท้ายที่มีอยู่เพียงไม่กี่ขอบหรือเป็นที่ว่างเปล่า นี้แบนด์วิธเครือข่ายที่สูญเสียไปและรอบการทำงาน ประการที่สามความสอดคล้องแคชเป็นเรื่องยากที่จะรักษา สุดท้ายหลีกเลี่ยงฝูงฟ้าร้องในการดำเนินงานด้านลูกค้าอย่างหมดจดจำเป็นรูปแบบหนึ่งของการประสานงานการกระจายที่ไม่สามารถใช้ได้สำหรับข้อมูล memcache ได้รับการสนับสนุนในเวลา. ปัญหาทั้งหมดที่สามารถแก้ไขได้โดยตรงโดยการเขียนการกระจายบริการที่กำหนดเองการออกแบบรอบวัตถุและสมาคม ในช่วงต้นปี 2009 ทีมวิศวกรโครงสร้างพื้นฐาน Facebook เริ่มที่จะทำงานในอบต ("สมาคมและวัตถุ") TAO ได้รับตอนนี้ในการผลิตเป็นเวลาหลายปี มันทำงานบนคอลเลกชันขนาดใหญ่ของกลุ่มเซิร์ฟเวอร์กระจายทางภูมิศาสตร์ TAO ให้บริการหลายพันของชนิดข้อมูลและจัดการกว่าพันล้านร้องขออ่านและล้านของการร้องขอการเขียนทุกวินาที ก่อนที่เราจะดูที่การออกแบบให้ได้อย่างรวดเร็วไปกว่าข้อมูลแบบกราฟและ API ที่ดำเนินการอบ






การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
เต๋า : พลังของกราฟ
โดยมาร์ค marchukov ในวันพุธที่ 26 มิถุนายน 2013 ที่ 12:00am
Facebook เป็นการเรียกร้องมากภาระงานบนแบ็กเอนด์ของข้อมูลของ ทุกครั้งที่มีคนมากกว่าพันล้านใช้งานผู้ใช้เยี่ยมชม Facebook ผ่านเดสก์ทอปเบราว์เซอร์หรือบนโทรศัพท์มือถือ , พวกเขาจะถูกนำเสนอกับหลายร้อยชิ้นของข้อมูลจากกราฟสังคม ผู้ใช้สามารถดูเรื่องราวฟีดข่าว ความเห็นชอบและหุ้นสำหรับเรื่องราวเหล่านั้น ; ภาพถ่ายและตรวจสอบเอกสารจากเพื่อนของพวกเขา -- รายการไปที่ ระดับสูงของการปรับแต่งผลผลิตรวมกับการปรับปรุงอัตราที่สูงของฟีดข่าวของผู้ใช้ทั่วไป ทำให้มันเป็นไปไม่ได้ที่จะสร้างมุมมองที่นำเสนอให้กับผู้ใช้ก่อนเวลา ดังนั้น ข้อมูล ต้องดึงข้อมูล และแสดงผลในการบินในไม่กี่ร้อยมิลลิวินาที .
ความท้าทายนี้ทำยากมาก เพราะข้อมูลไม่ partitionable ได้อย่างง่ายดาย และด้วยแนวโน้มของสินค้าบางอย่าง เช่น ภาพถ่ายของคนดัง มีอัตราการร้องขอที่สามารถขัดขวางอย่างมีนัยสำคัญ คูณนี้โดยหลายล้านครั้งต่อวินาที นี้ ชนิดของการปรับแต่งสูงชุดข้อมูลจะต้องถูกส่งไปยังผู้ใช้และคุณมีการเปลี่ยนแปลงตลอดเวลาอ่านครอบงำภาระงานที่ท้าทายมาก ๆ ให้มีประสิทธิภาพ
Memcache และ MySQL
Facebook มักจะตระหนักว่าแม้แต่ที่ดีที่สุดฐานข้อมูลเทคโนโลยีพร้อมสำหรับความท้าทายนี้เป็นคู่ที่ไม่ดีนอกจากจะเสริมด้วยขนาดใหญ่กระจายแคช offloads เก็บถาวรMemcache มีเล่นบทบาทตั้งแต่ มาร์ค ซัคเคอร์เบิร์ก ติดตั้งบน Facebook ของ Apache เว็บเซิร์ฟเวอร์กลับในปี 2005 ประสิทธิภาพเป็น MySQL ในการจัดการข้อมูลบนดิสก์ สมมติฐานที่สร้างเป็น InnoDB ทิศตะวันออกเฉียงเหนือขั้นตอนวิธีที่ไม่ตรงกับรูปแบบของการร้องขอบริการกราฟสังคมส่วนพื้นที่ที่สั่งชุดข้อมูลที่บล็อกแคชพยายามขูดรีดไม่ได้ทั่วไปใน Facebook เวิร์กโหลด แต่สิ่งที่เราเรียกการสร้างเวลาที่ dominates งาน -- รายการข้อมูลมีแนวโน้มที่จะเข้าถึงได้ ถ้ามันเพิ่งสร้างขึ้นแหล่งไม่ตรงกันระหว่างภาระงาน และการออกแบบเบื้องต้น ของบล็อกแคชอื่นเป็นข้อเท็จจริงที่เป็นเปอร์เซ็นต์ที่ค่อนข้างมากของการร้องขอสำหรับความสัมพันธ์ที่ไม่มี -- เช่น " ไม่นี้ผู้ใช้ต้องการเรื่องนั้น ? " เป็นเท็จสำหรับส่วนใหญ่ของเรื่องราวในฟีดข่าวของผู้ใช้ ให้ขาดโดยรวมของพื้นที่ท้องถิ่นดึงข้อมูลในบล็อกหลายกิโลไบต์ของแคชตอบแบบสอบถามดังกล่าวก็แปดเปื้อนแคชและมีส่วนช่วยในการลดอัตราโดยรวมตีในบล็อกแคชของการจัดเก็บถาวร

ใช้ memcache เป็นอย่างมากปรับปรุงประสิทธิภาพของแคชหน่วยความจำกราฟทางสังคมและอนุญาตให้เราปรับในวิธีที่มีประสิทธิภาพ อย่างไรก็ตามรหัสสินค้าที่วิศวกรต้องเขียนสำหรับการจัดเก็บและสืบค้นข้อมูลของพวกเขากลายเป็นที่ค่อนข้างซับซ้อน แม้ว่า Memcache มี " แคช " ในชื่อของมัน มันเป็นเครื่องที่เครือข่ายในร้านหน่วยความจำข้อมูลกับแบบจำลองข้อมูลค่าคีย์จริงๆ มันไม่ได้โดยอัตโนมัติกรอกข้อมูลตัวเองในแคชมิสหรือรักษาแคชความสอดคล้องวิศวกรผลิตภัณฑ์ที่ต้องทำงานกับข้อมูลสองร้าน และรูปแบบข้อมูลที่แตกต่างกันมาก : ขนาดใหญ่กลุ่มของเซิร์ฟเวอร์ MySQL สำหรับการจัดเก็บข้อมูลโดยตารางเชิงสัมพันธ์ และคอลเลกชันที่มีขนาดใหญ่เท่าของ memcache เซิร์ฟเวอร์สำหรับการจัดเก็บและให้บริการกุญแจคู่ค่าแบนได้ ( ทางอ้อม ) จากผลของแบบสอบถาม SQL แม้ว่าส่วนใหญ่ของทั่วไปงานห่อหุ้มในการเข้าถึงห้องสมุดข้อมูลใช้ memcache MySQL มีประสิทธิภาพเป็น จัดเก็บข้อมูล รวมกันต้องไม่น้อยของความรู้ของ internals ของระบบในส่วนของวิศวกรผลิตภัณฑ์ ย่อมมีผิดพลาดจนทำให้แมลง ไม่สอดคล้องกัน มองเห็นปัญหา และผู้ใช้งานเว็บไซต์ นอกจากนี้การเปลี่ยนแปลงสคีตารางเป็นผลิตภัณฑ์ที่พัฒนาต้องประสานงานระหว่างวิศวกรและ MySQL ผู้ประกอบการคลัสเตอร์นี้ชะลอตัวลงเปลี่ยนแก้ปัญหาปล่อยรอบและไม่เหมาะกับ Facebook " ย้ายปรัชญาการพัฒนาอย่างรวดเร็ว " วัตถุและสมาคม

ใน 2007Facebook วิศวกรน้อยชุดใหม่ออกมา เพื่อกำหนดจัดเก็บข้อมูลนามธรรมที่จะพอดีกับความต้องการของทุกคน แต่ความต้องการมากที่สุดคุณลักษณะของเว็บไซต์ในขณะที่ซ่อนอยู่มากที่สุดของความซับซ้อนของต้นแบบการกระจายการเก็บข้อมูลจากวิศวกรผลิตภัณฑ์วัตถุและสมาคม API ที่พวกเขาสร้างบนพื้นฐานของข้อมูลและกราฟแบบแรกที่ใช้ใน PHP และรันบนเซิร์ฟเวอร์เว็บ Facebook . มันแสดงรายการข้อมูลที่โหนด ( วัตถุ ) , และความสัมพันธ์ระหว่างพวกเขาเป็นขอบ ( สมาคม ) API ที่เป็นความสำเร็จทันที ด้วยคุณลักษณะโด่งมากมาย เช่น ชอบ หน้าและเหตุการณ์ที่ใช้ทั้งหมดในสมาคมวัตถุ และ ไม่มี memcache โดยตรง หรือเรียก MySQL .
เป็นยอมรับของ API ใหม่เติบโตขึ้นหลายข้อ จำกัด ของการเป็นลูกค้าชัดเจน แรก ๆที่เพิ่มขึ้นการปรับปรุงรายการของขอบต้องเรียงพี่เรียงน้องของรายการทั้งหมดที่จัดเก็บรายการในแคช , การลดอัตราการเข้าชม ประการที่สองขอให้ผ่าตัดรายชื่อขอบต้องคอยย้ายรายการทั้งหมดจาก Memcache เซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์เว็บ แม้ว่าผลสุดท้ายที่มีอยู่เพียงไม่กี่ขอบหรือว่างเปล่า นี้เสียเครือข่ายแบนด์วิดธ์และวงจรซีพียู 3 แคชสอดคล้องเป็นเรื่องยากที่จะรักษา ในที่สุดฟ้าร้องฝูงในการใช้งานหลีกเลี่ยงหมดจดทีมที่ต้องการรูปแบบของการกระจายที่ไม่พร้อมใช้งานสำหรับ memcache การสนับสนุนข้อมูลในเวลา
พวกปัญหาอาจจะโดยตรงโดยเขียนเองแจกบริการออกแบบรอบสมาคมวัตถุและแก้ไข ในช่วงต้นปี 2009ทีมวิศวกรของ Facebook ระบบก็เริ่มทำงาน เต่า ( " สมาคมและวัตถุ " ) เต๋าได้ในการผลิตเป็นเวลาหลายปี มันวิ่งในการเก็บขนาดใหญ่ของการกระจายทางภูมิศาสตร์ของเซิร์ฟเวอร์คลัสเตอร์ เต๋าให้บริการหลายพันชนิดข้อมูลและจัดการกว่าพันล้านอ่านการร้องขอและล้านเขียนคำขอทุกวินาที ก่อนที่เราจะดูที่การออกแบบรีบ ๆ ไปกว่าข้อมูลแบบกราฟและ API ที่ใช้เต๋า .
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: