MysqlFacebook

Facebook có một trong những cụm cơ sở dữ liệu MySQL lớn nhất thế giới, bao gồm hàng nghìn máy chủ trên nhiều trung tâm dữ liệu. Vận hành một cụm có kích thước này yêu cầu tự động hóa hầu hết những gì mà Quản trị viên cơ sở dữ liệu MySQL [DBA] thông thường có thể làm, để cụm gần như có thể tự chạy. Tìm hiểu về thiết kế và kiến ​​trúc của các hệ thống tự động hóa của chúng tôi và nghe một vài câu chuyện chiến tranh

Shlomo đã tham gia nhóm Cơ sở hạ tầng MySQL tại Facebook từ năm 2011, quản lý một trong những cụm MySQL lớn nhất trên thế giới—chủ yếu là do lười biếng và để tự động hóa quản lý nó thay vì anh ấy. Trước khi chuyển sang quản lý hàng nghìn máy chủ MySQL, Shlomo khá hài lòng với hàng trăm máy chủ trong số đó tại các công ty như Sears và Wix, nơi anh ấy là một DBA và một nhà phát triển

Trước khi thâm nhập vào thế giới MySQL vào năm 2006, Shlomo từng là DBA SQL Server tại Quân đoàn Tình báo Israel, nhưng anh ấy không thể cho bạn biết anh ấy đã quản lý bao nhiêu máy chủ ở đó

Shlomo Priymak, Facebook

Phương tiện truy cập mở

USENIX cam kết Truy cập Mở tới nghiên cứu được trình bày tại các sự kiện của chúng tôi. Giấy tờ và thủ tục tố tụng được cung cấp miễn phí cho mọi người sau khi sự kiện bắt đầu. Bất kỳ video, âm thanh và/hoặc slide nào được đăng sau sự kiện cũng đều miễn phí và dành cho tất cả mọi người. Hỗ trợ USENIX và cam kết của chúng tôi đối với Truy cập Mở

MySQL là cơ sở dữ liệu chính được Facebook sử dụng để lưu trữ tất cả dữ liệu xã hội. Họ bắt đầu với công cụ cơ sở dữ liệu MySQL của InnoDB và sau đó viết MyRocksDB, công cụ này cuối cùng được sử dụng làm công cụ Cơ sở dữ liệu MySQL

Memcache nằm trước MySQL dưới dạng bộ đệm

Để quản lý BigData, Facebook tận dụng Apache Hadoop, HBase, Hive, Apache Thrift và PrestoDB. Tất cả những thứ này được sử dụng để nhập dữ liệu , lưu kho và chạy phân tích.

Apache Cassandra được sử dụng cho tìm kiếm hộp thư đến

Beringei và Gorilla, các công cụ lưu trữ chuỗi thời gian hiệu suất cao được sử dụng để giám sát cơ sở hạ tầng.  

LogDevice, kho lưu trữ dữ liệu phân tán được sử dụng để lưu trữ nhật ký.  

Bây giờ hãy đi sâu vào chi tiết cụ thể


1. 1 Kiến trúc bền vững PolyGlot

Facebook, ngày nay, không phải là kiến trúc nguyên khối . Có thể tại một thời điểm như LinkedIn là  và Uber là but definitely not today.

Toàn bộ mạng xã hội bao gồm một số thành phần được liên kết lỏng lẻo khác nhau được cắm vào nhau giống như các khối Lego. Ví dụ: chia sẻ ảnh, trình nhắn tin, biểu đồ xã hội, bài đăng của người dùng, v.v. tất cả các dịch vụ siêu nhỏ được ghép nối lỏng lẻo khác nhau đang chạy cùng với nhau. Và mỗi microservice đều có một lớp kiên trì riêng biệt để giúp mọi thứ dễ quản lý

Kiến trúc kiên trì Polyglot có một số ưu điểm. Các cơ sở dữ liệu khác nhau với các mô hình dữ liệu khác nhau có thể được tận dụng để triển khai các trường hợp sử dụng khác nhau. Hệ thống có tính khả dụng cao hơn và dễ dàng mở rộng quy mô


1. 2 Hệ thống kiên trì đa ngôn ngữ là gì?

Nói một cách đơn giản, tính bền bỉ của polyglot có nghĩa là sử dụng các cơ sở dữ liệu khác nhau có các tính năng và mô hình dữ liệu độc đáo để triển khai các trường hợp sử dụng khác nhau của hệ thống

Chẳng hạn, Cassandra và Memcache sẽ phục vụ các yêu cầu về độ bền khác nhau trái ngược với MySQL DB truyền thống

Nếu chúng tôi có các yêu cầu về ACID như đối với giao dịch tài chính, thì MySQL sẽ phù hợp nhất. Mặt khác, khi chúng tôi cần truy cập dữ liệu nhanh, chúng tôi sẽ chọn Memcache hoặc khi chúng tôi ổn với việc không chuẩn hóa dữ liệu và cuối cùng nó nhất quán nhưng cần một cơ sở dữ liệu có tính sẵn sàng cao nhanh, thì giải pháp NoQuery sẽ phù hợp nhất

Nếu bạn muốn nắm vững cơ sở dữ liệu bao gồm các khái niệm như cơ sở dữ liệu quan hệ và phi quan hệ, khi nào nên chọn cái nào, tính nhất quán cuối cùng, tính nhất quán mạnh mẽ, các loại cơ sở dữ liệu khác nhau [quan hệ, hướng tài liệu, khóa-giá trị, cột rộng . ], những trường hợp sử dụng nào phù hợp với chúng, cách ứng dụng và cơ sở dữ liệu xử lý lưu lượng truy cập đồng thời, cách chúng tôi quản lý sự phát triển của cơ sở dữ liệu khi xử lý hàng petabyte dữ liệu, cách chúng quản lý tính nhất quán của dữ liệu khi được triển khai ở các vùng đám mây và vùng khả dụng khác nhau trên toàn cầu, v.v., hãy xem . Tôi ước tôi có một cái gì đó tương tự để học hỏi trong những năm đầu tiên của sự nghiệp. Zero to Software Architect learning track that I’ve written comprising three courses. I wish I had something similar to learn from in the initial years of my career.

Do mọi công nghệ đều có trường hợp sử dụng, Facebook tận dụng các công nghệ bền bỉ khác nhau để đáp ứng các yêu cầu khác nhau về độ bền bỉ của mình


1. 3 Facebook có sử dụng hệ thống cơ sở dữ liệu quan hệ không?

mysql

Đây là cơ sở dữ liệu chính mà Facebook sử dụng  với các công cụ khác nhau. Động cơ khác nhau? .

Facebook tận dụng biểu đồ xã hội để theo dõi và quản lý tất cả các sự kiện của người dùng trên cổng thông tin, chẳng hạn như ai thích bài đăng của ai. Bạn chung. Những người bạn của bạn đã ăn ở nhà hàng bạn đang ghé thăm, v.v. Và biểu đồ xã hội này được cung cấp bởi MySQL

Ban đầu, nhóm kỹ thuật của Facebook bắt đầu với công cụ MySQL InnoDB để duy trì dữ liệu xã hội. Dữ liệu chiếm quá nhiều dung lượng lưu trữ mặc dù đã được nén. Sử dụng nhiều dung lượng hơn có nghĩa là nhiều yêu cầu phần cứng hơn, điều này làm tăng chi phí lưu trữ dữ liệu một cách tự nhiên

nguồn hình ảnh. Facebook

 

Công cụ lưu trữ InnoDB MySQL

InnoDB là công cụ lưu trữ MySQL mặc định cung cấp hiệu suất và độ tin cậy cao.

Kiến trúc InnoDB

nguồn hình ảnh. InnoDB

Công cụ lưu trữ MyRocks MySQL được viết bởi Facebook

Để xử lý các vấn đề về dung lượng. Nhóm kỹ sư tại Facebook đã viết một công cụ cơ sở dữ liệu MySQL MyRocks mới giúp giảm 50% mức sử dụng dung lượng và cũng giúp cải thiện hiệu quả ghi.

Theo thời gian, Facebook đã di chuyển công cụ cơ sở dữ liệu hướng tới người dùng của mình từ InnoDB sang MyRocks. Quá trình di chuyển không gặp nhiều khó khăn vì chỉ có công cụ DB thay đổi và MySQL công nghệ cốt lõi là như nhau

nguồn hình ảnh. Facebook

Sau quá trình di chuyển, trong một thời gian dài, nhóm kỹ thuật đã tiến hành kiểm tra xác minh tính nhất quán của dữ liệu để xem mọi thứ có suôn sẻ không

Một số quy trình điểm chuẩn đã được chạy để đánh giá hiệu suất DB và kết quả cho biết kích thước phiên bản MyRocks hóa ra là 3. Nhỏ hơn 5 lần so với phiên bản InnoDB không nén và nhỏ hơn 2 lần so với phiên bản InnoDB đã nén

WebScale SQL

MySQL là công nghệ bền bỉ phổ biến nhất từ ​​trước đến nay và được các ông lớn triển khai một cách tự nhiên

WebScale SQL là sự cộng tác giữa các kỹ sư từ một số công ty khác nhau như Google, Twitter, LinkedIn, Alibaba chạy MySQL trong quy mô sản xuất để xây dựng và nâng cao các tính năng MySQL cần thiết để chạy trong môi trường sản xuất quy mô lớn

Facebook có một trong những triển khai MySQL lớn nhất trên thế giới. Và nó chia sẻ một cơ sở mã phát triển SQL WebScale chung với các công ty khác

Nhóm kỹ thuật đang  Facebook đang chuẩn bị chuyển các phiên bản thử nghiệm sản xuất của thống kê bảng, người dùng và nén sang WebScaleSQL.


2. ĐáDB. Kho lưu trữ khóa-giá trị liên tục để lưu trữ Flash và RAM

Ban đầu, Facebook đã viết một kho lưu trữ khóa-giá trị liên tục có thể nhúng để lưu trữ nhanh có tên  RocksDB . Kho lưu trữ khóa-giá trị nào có một số lợi thế so với MySQL. RocksDB được lấy cảm hứng từ LevelDB, một kho lưu trữ dữ liệu do Google viết.

Nó chắc chắn là nhanh nhưng không hỗ trợ sao chép hoặc lớp SQL và nhóm kỹ thuật của Facebook muốn các tính năng MySQL đó trong RocksDB. Cuối cùng, họ đã xây dựng MyRocks, một dự án nguồn mở có RocksDB làm công cụ lưu trữ MySQL

RocksDB phù hợp nhất khi chúng ta cần lưu trữ nhiều terabyte dữ liệu trong một cơ sở dữ liệu duy nhất .

Một số trường hợp sử dụng điển hình cho RocksDB

1. Triển khai hàng đợi tin nhắn hỗ trợ một số lượng lớn các thao tác chèn và xóa.
2. Phát hiện thư rác khi bạn yêu cầu quyền truy cập nhanh vào tập dữ liệu của mình.
3. Truy vấn tìm kiếm biểu đồ cần quét tập dữ liệu trong thời gian thực.


3. Memcache – Một hệ thống bộ nhớ đệm phân tán

Memcache đang được Facebook sử dụng ngay từ đầu. Nó nằm phía trước cơ sở dữ liệu, hoạt động như một bộ đệm và chặn tất cả các yêu cầu dữ liệu đang hướng tới cơ sở dữ liệu

Memcache giúp giảm độ trễ yêu cầu ở mức độ lớn cuối cùng mang lại trải nghiệm người dùng mượt mà. Nó cũng cung cấp năng lượng cho biểu đồ xã hội Facebook có hàng nghìn tỷ đối tượng và kết nối, phát triển mọi lúc

Memcache là hệ thống bộ nhớ đệm phân tán được các ông lớn trong ngành như Google Cloud sử dụng.

Mô hình bộ nhớ đệm Facebook

Khi người dùng cập nhật giá trị của một đối tượng, giá trị mới sẽ được ghi vào cơ sở dữ liệu và giá trị cũ sẽ bị xóa khỏi Memcache. Lần tiếp theo người dùng yêu cầu đối tượng đó, giá trị cập nhật được lấy từ cơ sở dữ liệu và ghi vào Memcache. Bây giờ sau điều này cho mọi yêu cầu, giá trị được cung cấp từ Memcache cho đến khi nó được sửa đổi

Luồng này có vẻ khá ổn định cho đến khi cơ sở dữ liệu và bộ đệm được triển khai trong môi trường phân tán . Giờ đây, tính nhất quán cuối cùng sẽ có hiệu lực.

Các phiên bản của ứng dụng được phân phối theo địa lý. Khi một phiên bản của cơ sở dữ liệu phân tán được cập nhật, chẳng hạn như ở Châu Á, phải mất một lúc để các thay đổi được xếp tầng cho tất cả các phiên bản của cơ sở dữ liệu đang chạy trên toàn cầu.

Bây giờ ngay tại thời điểm giá trị của một đối tượng được cập nhật ở Châu Á, một người yêu cầu đối tượng đó ở Châu Mỹ sẽ nhận được giá trị cũ từ bộ đệm

Đây thường là sự đánh đổi giữa tính sẵn sàng cao và tính nhất quán của dữ liệu


4. Facebook quản lý BigData như thế nào?

4. 1 Apache Hadoop

Chà, điều này không có gì đáng ngạc nhiên, Facebook có một lượng dữ liệu khổng lồ tăng lên mọi lúc. Và họ có sẵn cơ sở hạ tầng để quản lý một đại dương dữ liệu như vậy

Đọc bài viết này về cách nhập dữ liệu  để hiểu lý do tại sao việc quản lý và hiểu lượng lớn dữ liệu lại cực kỳ quan trọng đối với doanh nghiệp.

Apache Hadoop là tiện ích nguồn mở lý tưởng để quản lý dữ liệu lớn và Facebook sử dụng nó để chạy phân tích, lưu trữ phân tán và lưu trữ các bản sao lưu cơ sở dữ liệu MySQL

Ngoài Hadoop, còn có các công cụ khác như Apache Hive, HBase và Apache Thrift được sử dụng để xử lý dữ liệu

Facebook đã mã nguồn mở các phiên bản chính xác của Hadoop mà họ chạy trong sản xuất. Họ có thể triển khai cụm Hadoop lớn nhất trên thế giới. xử lý khoảng. 2 petabyte dữ liệu mỗi ngày trong nhiều cụm tại các trung tâm dữ liệu khác nhau

Nếu bạn muốn hiểu cách các hệ thống phân tán được triển khai và mở rộng quy mô trên toàn cầu trong đám mây, cách các nút hoạt động cùng nhau trong một cụm, quy trình triển khai, cơ sở hạ tầng triển khai, các công nghệ liên quan, v.v., hãy xem

Chủ Đề