CDN (Mạng phân phối nội dung) hoạt động như thế nào?


37

Lấy Akamai làm CDN. Theo những gì tôi hiểu, khi khách hàng yêu cầu một trang, yêu cầu sẽ đến máy chủ trung tâm của Akamai, sau đó tùy thuộc vào vị trí của máy khách, chọn một máy chủ cạnh Akamai và các yêu cầu tiếp theo từ máy khách sẽ chuyển trực tiếp đến máy chủ biên này. Câu hỏi của tôi là:

Khi khách hàng yêu cầu một trang web (theo tên), khi DNS phân giải tên thành địa chỉ IP của máy chủ trung tâm Akamai và chuyển nó đến máy khách, khách hàng sẽ giữ địa chỉ IP này, sau đó các yêu cầu tiếp theo có thể như thế nào để đi trực tiếp đến địa chỉ IP của máy chủ cạnh Akamai?

Hoặc có phải là khi CDN đang được sử dụng thì máy chủ CDN phải được thực hiện không?

Các ông lớn như Google, Amazon, Facebook có máy chủ CDN của riêng họ hay họ phụ thuộc vào các nhà cung cấp CDN bên thứ 3 như Akamai? Nói Google và Yahoo! cả hai đều sử dụng Akamai CDN, sau đó thực hiện nội dung của Yahoo! và Google cư trú trên cùng một máy chủ? Nó không đặt ra một vấn đề bảo mật tiềm năng?

Câu trả lời:


27

Bạn không chỉ đơn giản là lưu trữ toàn bộ trang web với CDN, chỉ nội dung của bạn .

Tôi mới nhận ra mình đã trả lời một câu hỏi tương tự một lúc trước: akamaihd.net làm gì?

Luồng yêu cầu dữ liệuHình ảnh bởi WikiMedia

Vì vậy, trang web của bạn tham khảo http://akamai/myfile.ext. Điều này sẽ yêu cầu myfile.exttừ akamai. akamaisau đó có thể gửi chuyển hướng HTTP đến máy chủ nội dung thực tế.

Bây giờ, khi bước cuối cùng được lưu trữ, thật tuyệt, tất cả các yêu cầu trong tương lai sẽ chuyển đến máy chủ nội dung gần nhất.

Làm thế nào mà làm việc?

Hãy giả sử trang web này:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Tôi yêu cầu trang web này từ máy chủ web của riêng tôi. Các .htmltập tin không được lưu trữ với cdn. DNS của máy chủ web của tôi cũng không.

Yêu cầu ban đầu

Vì vậy, trình duyệt của tôi có tệp HTML đó và bây giờ phân tích cú pháp. Nó tìm thấy hình ảnh được tham chiếu và ghi chú rằng nó được đặt tại http://cdn/oliver.png. Nó yêu cầu tập tin đó.

Để làm điều đó, nó cần tìm địa chỉ IP của cdn. Trong ví dụ của chúng tôi, địa chỉ IP đó là 10.10.10.10.

Với địa chỉ IP đó, nó có thể kết nối với cdnmáy chủ và yêu cầu /oliver.png.

Vị trí địa lý

Bây giờ cdnnhận ra, " anh chàng đó đến từ Đức! ". Vì vậy, thay vì gửi cho tôi bức ảnh tuyệt vời mà tôi muốn, nó sẽ gửi cho tôi một chuyển hướng HTTP có nội dung:

/oliver.png không có ở đây. Nó ở10.10.33.33/oliver.png

Vì vậy, trình duyệt của tôi sẽ yêu cầu 10.10.33.33(hy vọng là gần tôi hơn) cho hình ảnh.

Nghiêm túc?

Tôi không nói đây là cách TẤT CẢ CDN hoạt động, nhưng nó sẽ là một cách tiếp cận.

Bạn cũng có thể triển khai một trình nền DNS trả về các kết quả khác nhau cho việc tra cứu tên tùy thuộc vào vị trí của bất kỳ ai đã gửi truy vấn.
Nhưng tôi nghi ngờ rằng điều này được thực hiện trong thực tế. Nhưng có lẽ tôi không thể tưởng tượng làm thế nào để thiết lập đúng. Xem câu trả lời của fluffy để biết làm thế nào có thể làm việc.

Ai điều hành CDN?

Hầu hết người chơi toàn cầu có mạng phân phối nội dung của riêng họ theo cách (hoặc vì vậy tôi sẽ giả sử). Một số nhà cung cấp chỉ giảm tải một số dịch vụ cho các CDN lớn hơn (như Microsoft thực hiện với tải xuống MSDN). Và điều này bằng cách nào đó có thể chạm vào chủ đề thứ hai của bạn.

Hãy xem xét điều này, trong MSDN Microsoft cung cấp tải xuống sản phẩm. Những bản tải xuống này sau đó được cung cấp bởi Akamai. Nếu bạn có thể xác định URL của bản tải xuống đó, bạn chỉ có thể tải xuống sản phẩm mà không cần liên lạc với Microsoft.

Đó có phải là một vấn đề bảo mật? Không thực sự, bởi vì những gì đang được tải xuống vẫn được bảo vệ (bằng khóa sản phẩm).

Nhưng làm thế nào về dữ liệu khác?

Nếu dữ liệu của bạn có liên quan đến bảo mật, thì đó không phải là tài liệu CDN. Nếu bạn không muốn một cái gì đó có sẵn rộng rãi nhất có thể, đừng đặt nó vào CDN.


Nói rằng trang web là một cái gì đó / file.txt . Nói Akamai DNS đang được sử dụng. Sau đó, chính yêu cầu đầu tiên từ khách hàng đến một nơi nào đó hay chính yêu cầu đầu tiên sẽ đến Akamai (vì bằng cách nào đó, DNS được sử dụng bởi khách hàng biết rằng Akamai CDN đang được sử dụng)?
p2pnode

Và có lẽ tôi không hiểu chuyển hướng HTTP và những gì họ có thể đạt được, vì vậy câu hỏi của tôi vẫn là khách hàng biết cách sử dụng địa chỉ IP của các máy chủ cạnh Akamai để các máy chủ trung tâm của Akamai không phải hình dung tại tất cả ..
p2pnode

@ p2pnode: Tôi mở rộng câu trả lời một chút. Hy vọng nó bao gồm những gì bạn đang tự hỏi về.
Der Hochstapler

1
Không có một hiệu suất đáng kể từ điều này? Thay vì tất cả việc truyền dữ liệu xảy ra trên một luồng TCP, nhiều luồng đang được sử dụng, nhiều chi phí hơn từ việc bắt tay, v.v.
Akash

@Akash: Thông thường, bạn sẽ không sử dụng CDN cho mọi thứ , mà chỉ sử dụng các tệp lớn, riêng lẻ. Vì vậy, trong thực tế, đây không phải là một vấn đề.
Der Hochstapler

11

Một cách tiếp cận khá phổ biến đối với CDN là sử dụng cái gọi là " anycast ". Cách thức hoạt động này là các máy chủ phân tán của bạn được kết hợp với các DNS phản hồi với máy chủ đó làm đích; ví dụ: bạn có thể có ba máy chủ trong các cơ sở lưu trữ khác nhau và các DNS tương ứng của chúng đều khẳng định địa chỉ IP của chúng là địa chỉ chính cho máy chủ của bạn (gọi nó là, giả sử, content.example.com). Các DNS được cấu hình để có cùng một địa chỉ IP toàn cầu và sau đó mỗi cơ sở của máy chủ sử dụng các bản cập nhật BGP để làm cho tuyến đến máy chủ gần nhất sẽ thắng - vì vậy khi bạn thực hiện tra cứu tên content.example.com, nhanh nhất / gần nhất / hầu hết DNS có sẵn đáp ứng yêu cầu với máy chủ HTTP của nó.

Theo cách này, không cần thủ thuật GeoIP nào và bạn luôn được phục vụ nội dung bởi bất kỳ máy chủ nào là nhanh nhất đối với bạn - điều này có thể có hoặc không liên quan gì đến vị trí thực tế của nó, do tính chất không đồng nhất của Internet.

Theo hiểu biết của tôi thì Akamai ít nhất hoạt động một phần theo cách này.


5

Cũng có sẵn là CDN loại Origin Pull.

Amazon Cloudfront có thể sử dụng kỹ thuật này.

Bạn thiết lập một CNAME như media.example.com trỏ đến tên máy chủ được chỉ định của họ và để lại tất cả nội dung của bạn trên máy chủ của bạn. Đối với hình ảnh và nội dung bạn muốn phân phối qua CDN, bạn sử dụng media.example.com trong URL. Yêu cầu đến mạng máy chủ của họ và nếu nội dung không có sẵn, máy chủ của họ sẽ lấy nội dung từ máy chủ của bạn. Khi ở trong hệ thống, nội dung được phân phối đến các trang trại máy chủ gần nhất với nơi có nhu cầu và vẫn ở đó cho TTL được chỉ định. Máy chủ của bạn không còn thấy bất kỳ lưu lượng truy cập nào trên nội dung được lưu trong bộ nhớ cache cho đến khi hết hạn và Cloudfront phải làm mới nó.


1

Akamai không hoạt động theo cách này. Các CDN khác nhau hoạt động khác nhau, nhưng Akamai đặc biệt không thực hiện bất kỳ chương trình truyền hình nào cho máy chủ web của họ.

Khi người dùng ở NY muốn www.acme.com, máy chủ tên của acme.com sẽ chuyển hướng ("đại biểu") đến máy chủ tên Akamai. Máy chủ tên Akamai nhìn thấy nơi máy đang đặt câu hỏi (dựa trên địa chỉ IP của nó) và trả về địa chỉ IP của máy chủ Akamai gần nhất / tốt nhất để phục vụ www.acme.com.


Làm thế nào nó hoạt động? Máy chủ tên Akamai nhận được yêu cầu từ người dùng trực tiếp hoặc từ máy chủ DNS của người dùng được ủy quyền cho máy chủ tên Akamai? Vì vậy, nó sẽ được định vị địa lý theo vị trí máy chủ DNS, không phải của người dùng?
odiszapc

0

Một bản tóm tắt tuyệt vời về cách thức hoạt động của CDN của Akamai tại đây

Nói ngắn gọn:

  • Máy chủ CDN có bản ghi CNAME trỏ đến máy chủ DNS của Akamai.
  • Vì vậy, yêu cầu đầu tiên mà trình duyệt máy khách đưa ra cho máy chủ CDN là DNS đã tra cứu máy chủ DNS của Akamai, đáp ứng với địa chỉ IP của máy chủ Akamai gần với người dùng (được gọi là "Máy chủ cạnh")
  • Các máy chủ Edge này có thể phục vụ các thành phần tĩnh từ bộ đệm cục bộ, nếu nó đã được một người dùng khác yêu cầu gần đây và thậm chí không phải quay lại máy chủ của bạn để lấy bản sao của tài sản.
  • Các phần tử bị thiếu hoặc các trang không lưu trong bộ nhớ cache được định tuyến qua mạng Akamai đến một máy chủ cạnh khác gần máy chủ. Máy chủ biên đó thực hiện các yêu cầu thực tế đến trang chủ và chuyển chúng qua mạng đến máy chủ biên ban đầu và từ đó chúng được trả về cho người dùng cuối.
  • Vì các máy chủ biên đang liên lạc nội bộ bằng các giao thức độc quyền của Akamai và định tuyến xung quanh các nút thắt cổ chai, lưu lượng truy cập có thể lưu chuyển nhanh hơn nhiều so với internet công cộng.

và như đã đề cập trong bài đăng trên blog được liệt kê ở trên, một số tập đoàn lớn giải quyết DNS bằng cách sử dụng máy chủ của riêng họ, điều này có thể phủ nhận một số lợi ích của việc sử dụng CDN.


-2

CDN hoạt động trên DNS Anycast. Anycast dns hoạt động trên ip Anycast. Anycast ip: Một ip gán trên nhiều máy chủ. Khi người dùng yêu cầu trình giải quyết dns, truy vấn đó sẽ được xử lý bởi máy chủ gần nhất và cung cấp dữ liệu từ máy chủ có độ trễ ít nhất.


Bằng cách nào điều này cải thiện dựa trên các câu trả lời hiện có, đầy đủ hơn nhiều?
Chenmunka
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.