Google sử dụng python như thế nào

Một trong những bài học quan trọng nhất trong việc phát triển các hệ thống ở quy mô lớn là hầu hết mọi ngôn ngữ lập trình đều có tiềm năng sử dụng trong một hệ thống phân tán, mở rộng.

Kiến trúc web của YouTube và nhiều phần còn lại của Google dựa trên nhiều dịch vụ. Nói cách khác, YouTube và Google không được phục vụ bởi một phần mềm duy nhất mà bởi hàng nghìn chương trình chạy trên hàng triệu máy chủ của Google theo kiểu phân tán. Mỗi dịch vụ nói chuyện với nhiều dịch vụ khác để nhận kết quả

Bây giờ, tại sao một kiến ​​trúc của phong cách này lại hữu ích? . Nó cho phép bạn thực hiện các chức năng hoàn toàn khác nhau, phân phối và mở rộng chúng một cách độc lập, đồng thời cung cấp cho mỗi chức năng một yêu cầu khác nhau

Một nhóm có thể chăm sóc từng dịch vụ (hoặc một số dịch vụ) và do đó đạt được năng suất tốt hơn nhiều. Điều này có nghĩa là nếu một dịch vụ không cần phải cực kỳ nhanh hoặc hiệu quả, thì bạn có thể viết dịch vụ đó bằng ngôn ngữ dễ viết và/hoặc bảo trì hơn, chẳng hạn như Python (mặc dù một số người không đồng ý với tôi về khả năng bảo trì)

Tương tự như vậy, các dịch vụ cần tốc độ nhanh có thể được viết bằng ngôn ngữ cho phép bạn sử dụng tài nguyên của mình hiệu quả hơn, phản hồi nhanh hơn hoặc có nhiều quyền kiểm soát hơn, chẳng hạn như C++ hoặc Rust

Vậy điều này có liên quan gì đến YouTube hay Google? . Thay vào đó, một phần đáng kể các dịch vụ của Google được viết bằng C++ hoặc, trong những năm gần đây, Go

Phần còn lại là sự kết hợp của nhiều ngôn ngữ, với Python là một trong những ngôn ngữ lớn nhất, tùy thuộc vào khu vực làm việc. Theo như tôi hiểu, nhiều máy chủ web được viết bằng C++

Đơn giản, điều này là do Google, ngay từ đầu, đã coi đây là ngôn ngữ phù hợp cho các dịch vụ có kế hoạch mở rộng quy mô nhanh chóng. Do đó, việc triển khai “Xếp hạng trang” hiện tại vẫn được viết bằng C++

Bây giờ, hãy chuyển sang YouTube. Đối với các máy chủ “web” (máy chủ phục vụ giao diện người dùng và API), họ đã chọn Python. Tại sao? . Nếu bạn có nhiều tiền như Google và một ngôn ngữ như Python đủ tốt để hiển thị trang web của bạn, bạn có thể khắc phục sự kém hiệu quả của ngôn ngữ bằng cách ném tiền vào vấn đề

Nhờ có GIL, một trong những vấn đề lớn nhất của Python là nó không có khả năng chạy nhiều luồng một cách hiệu quả. Thật không may, điều này có nghĩa là bạn cần nhiều quy trình hơn, không chỉ nhiều luồng hơn, để sử dụng hiệu quả tài nguyên của máy chủ

Những thứ này tốn nhiều tài nguyên hơn trên máy tính (bộ nhớ nổi tiếng hơn) và do đó không hiệu quả. Điều đó nói rằng, việc sử dụng Python của YouTube rất có thể sẽ đủ nhanh (hoặc, nếu bạn thích, không đủ chậm) để tiếp tục sử dụng nó, đặc biệt là khi bạn cho rằng việc thay đổi ngôn ngữ yêu cầu viết lại mã tích lũy trong hơn một thập kỷ

Họ có thể trả tiền cho nhiều máy chủ hơn, có lẽ rẻ hơn so với các kỹ sư phải viết lại YouTube

Chắc chắn rồi, đây chỉ là giao diện người dùng và API của YouTube. Đầu tiên, tại thời điểm này, chủ yếu là các tệp tĩnh. Python không có nhiều việc phải làm (nếu điều này vẫn còn trong Python ngày nay) và có một bộ đệm khổng lồ phía trước nó, điều đó có nghĩa là máy chủ hầu như không được chạm vào

Mặt khác, mặc dù bản thân API được viết bằng Python, nhưng rất có thể nó nói chuyện với vô số dịch vụ khác đằng sau hậu trường ngày nay. Ví dụ: bạn phải xác thực người dùng bằng dịch vụ người dùng của Google

Tương tự như vậy, trình tạo và nhà cung cấp quảng cáo và đề xuất rất có thể là các dịch vụ riêng biệt được viết bằng C++. Hệ thống bảo mật và toàn vẹn cũng là những hệ thống khác

Tất nhiên, cơ sở dữ liệu và Memcache mà họ sẽ có trước mặt họ không được viết bằng C++. Cuối cùng, đây có lẽ là một API rất nhẹ và chỉ tổng hợp và logic cơ bản trên kết quả của các dịch vụ khác. Nó không đòi hỏi hiệu quả cao

Điều này có nghĩa là dịch vụ được viết bằng Python không gây ra bất kỳ sự cố nào? . Họ sẽ tốn nhiều chi phí hơn để duy trì các máy chủ bổ sung cần thiết do dịch vụ được viết bằng ngôn ngữ kém hiệu quả hơn

Ngoài ra, trước đây tôi đã thấy các dịch vụ gặp sự cố với trình thu gom rác của Python vì khi quyết định dọn dẹp mọi thứ, nó có thể làm chậm đáng kể chương trình của bạn (giống như các sự cố của Java)

Thông thường, Instagram đã gặp sự cố như thế này và họ quyết định vô hiệu hóa hoàn toàn trình thu thập, ưu tiên khởi động lại máy chủ thường xuyên hơn là sửa đổi trình thu thập một cách ồ ạt

Điều này yêu cầu nhiều máy chủ hơn để có đủ khi một số máy chủ được khởi động lại do thiếu bộ nhớ. Trong trường hợp của Google, tôi đã gặp sự cố chính xác với sự kém hiệu quả của các luồng bị thiếu trong Python. Họ đã thử nhiều cách, kể cả cải thiện CPython 2. 7 (họ đã sử dụng vào năm 2017), nhưng kể từ đó, họ đã có một dự án cho bộ chuyển mã và thời gian chạy từ Python sang Go

Có nhiều lý do khiến Python đủ phù hợp với một trang web như YouTube, nhưng tóm lại, nó không phải là ngôn ngữ duy nhất họ sử dụng, cũng như không phải là một trải nghiệm không có vấn đề

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Kiểm tra Sự bất hòa trong cộng đồng của chúng tôi và tham gia Tập thể tài năng của chúng tôi

Python đang được sử dụng tại Google như thế nào?

Sử dụng Python tại Google . Do tính linh hoạt và khả năng mở rộng cao, nó cũng được sử dụng với các công cụ lập trình khác để tạo một số hệ thống giám sát hoặc công cụ quản trị .

Google có chạy trên Python không?

Python chạy trên nhiều hệ thống nội bộ của Google và xuất hiện trong nhiều API của Google. Nó hoàn toàn phù hợp với quy trình kỹ thuật tại Google. “Python đã là một phần quan trọng của Google ngay từ đầu và vẫn như vậy khi hệ thống phát triển và phát triển.

Youtube có được viết bằng Python không?

Lập trình Youtube bao gồm hỗn hợp Python, C, C ++, Java, Go, JavaScript và MariaDB. Và nhà phát triển tiếp tục bổ sung các công nghệ mới trong công cụ cốt lõi của họ theo yêu cầu. Bạn sẽ thêm gì vào Python để làm cho nó trở thành một ngôn ngữ lập trình tốt hơn?