Trong Windows Azure: Vai trò web, vai trò công nhân và vai trò máy ảo là gì?


115

Ứng dụng tôi đang làm việc chứa một vai trò web: đó là một ứng dụng web đơn giản. Tôi cần lưu trữ ứng dụng trong Windows Azure, vì vậy tôi đã tạo một vai trò web. Tôi thực sự muốn biết những vai trò này để làm gì. Ý nghĩa của chúng là mã hóa khôn ngoan hay lưu trữ khôn ngoan?

Câu trả lời:


101

EDIT 3/3/2013 - được cập nhật để tham chiếu điểm cuối UDP, Máy ảo và các ngôn ngữ khác

EDIT 6/6/2013 - được cập nhật để phản ánh việc ngừng cung cấp VM Role và cập nhật hình ảnh hệ điều hành cơ sở vai trò web / công nhân lên Windows Server 2012

Liên kết tốt của @Vladimir. Làm rõ hơn một chút: Tất cả các vai trò (web, công nhân) về cơ bản là Windows Server. Vai trò của Web và Worker gần như giống hệt nhau:

  • Vai trò web là máy ảo Windows Server có bật IIS
  • Vai trò công nhân là máy ảo Windows Server bị tắt IIS (và bạn có thể bật nó theo cách thủ công)
  • Vai trò máy ảo là các hình ảnh Windows Server 2008 bạn tạo cục bộ thông qua Hyper-V và tải lên Azure (và hiện đã ngừng hoạt động và không còn khả dụng kể từ ngày 31 tháng 5 năm 2013
  • Máy ảo là hình ảnh Windows hoặc Linux được tạo trong Azure, được lưu trữ dưới dạng vhd trong bộ nhớ của riêng bạn và có một số cải tiến đối với vai trò VM. Ví dụ: vì vhd nằm trong tài khoản lưu trữ của riêng bạn, bạn có thể dễ dàng tạo một mẫu hình ảnh từ vhd của mình, sao chép nó vào một vhd mới hoặc thậm chí tải nó lên VM Depot (chỉ dành cho Linux).

Để trả lời câu hỏi của bạn về việc phải làm gì với những vai trò này: Bộ công cụ Đào tạo nền tảng (được đề cập bên dưới) sẽ cung cấp cho bạn rất nhiều ý tưởng và mẫu hay, nhưng đây là một số trường hợp sử dụng đơn giản:

  • Bạn có thể chạy bất kỳ mã nào hiển thị điểm cuối tcp, http, https hoặc udp (ứng dụng web, dịch vụ SOAP / REST, v.v.). Tuy nhiên, bạn cần phải suy nghĩ về cách làm việc không trạng thái - nếu bạn có nhiều phiên bản VM đang chạy, lưu lượng người dùng sẽ được phân phối trên các phiên bản đó. Bộ công cụ đào tạo nền tảng sẽ chỉ cho bạn cách sử dụng bộ nhớ hoặc bộ đệm để giải quyết vấn đề này.
  • Bạn có thể chạy mã ngoài hàng đợi hoặc bộ đếm thời gian. Có thể bạn có các tác vụ theo yêu cầu, chẳng hạn như tạo ảnh thu nhỏ hoặc tính toán dựa trên thông tin người dùng nhập. Chúng không cần các điểm cuối có sẵn bên ngoài. Bạn có thể đẩy các yêu cầu của mình vào một hàng đợi và sau đó có một tác vụ đang chạy mà chỉ đơn giản là cấp nguồn cho hàng đợi này (và bạn có thể mở rộng quy trình này qua nhiều trường hợp, với các thông báo hàng đợi được tất cả các trường hợp sử dụng).
  • Bạn có thể chạy .NET, Java, php, python, node, ruby, v.v. Bạn chỉ cần phân phối mã thời gian chạy thích hợp cùng với mã dự án của mình. Tất cả các ngôn ngữ đều có thể thực hiện lệnh gọi REST tới Azure API và một số ngôn ngữ (bao gồm cả những ngôn ngữ đã đề cập ở trên) có SDK đảm nhận việc này cho bạn. Tất cả các SDK ngôn ngữ đều có ở đây , với mã nguồn trên github, tại đây .
  • Với vai trò VM, bạn có thể cài đặt và chạy phần mềm với các cài đặt rất phức tạp / tốn thời gian, cài đặt yêu cầu can thiệp thủ công và cài đặt không thể tự động một cách đáng tin cậy. Bạn phải xử lý bảo trì hệ điều hành trong trường hợp này. Ngoài VM Role, hiện đã có Máy ảo, cung cấp tính năng xây dựng VM dựa trên đám mây cùng với hỗ trợ cả Windows và Linux. Tôi muốn đề xuất Máy ảo thay vì Vai trò VM.

Với vai trò Web và Worker, hệ điều hành và các bản vá liên quan được chăm sóc cho bạn; bạn xây dựng các thành phần của ứng dụng của mình mà không cần phải quản lý máy ảo.

Với vai trò VM, bạn xây dựng một hình ảnh Windows Server hoàn chỉnh, thêm các móc Azure vào đó và đẩy toàn bộ máy ảo vào đám mây (và sau đó duy trì hình ảnh VM theo thời gian).

Với Máy ảo, bạn chỉ cần chọn một hình ảnh hệ điều hành từ thư viện, được tạo cho bạn và lưu trữ dưới dạng vhd trong bộ nhớ blob. Sau đó, bạn RDP / ssh và thiết lập nó theo cách bạn muốn.

Đội chiếc mũ của kiến ​​trúc sư, đây là nơi nó trở nên vui vẻ và thú vị. Bạn có thể chạy các dịch vụ web trong vai trò Web hoặc vai trò công nhân (và có thể mở các cổng ở một trong hai); Bạn có thể lưu trữ Tomcat hoặc các máy chủ web khác trong vai trò Công nhân. bạn có thể chọn kết hợp một trang web với các dịch vụ trong một vai trò duy nhất hoặc chia chúng thành nhiều vai trò cho các nhu cầu về khả năng mở rộng khác nhau.

Để có một khởi đầu tốt, hãy xem Bộ công cụ đào tạo nền tảng và bắt đầu xem qua các bài tập.


Bạn có thể thực sự hiển thị các điểm cuối tcp trên một vai trò web không? Theo smarx, tất cả chúng phải là HTTP: stackoverflow.com/questions/2926737/… Điều này tạo ra một sự khác biệt nhỏ giữa các vai trò.
Richard Astbury

Tôi đã trả lời truy vấn của riêng mình, bạn có thể mở cổng tcp, nhưng không ràng buộc nó với trang web.
Richard Astbury

2
Richard - Mặc dù trước đây là trường hợp, các điểm cuối giờ đây có thể là tcp, http hoặc https, bất kể loại vai trò. Tôi đã xây dựng một ứng dụng mẫu có sự kết hợp giữa tcp và http, đồng thời trình diễn bản cập nhật 25 điểm cuối cho mỗi vai trò mới vài tháng trước - xem bài đăng trên blog ở đây - davidmakogon.com/2011/05/…
David Makogon

Xin lỗi - ý tôi là trình diễn 25 điểm cuối cho mỗi lần triển khai. Và ... nhìn thấy bình luận khác của bạn, tôi có thể đã trả lời câu hỏi sai. :)
David Makogon 14/10/11

@DavidMakogon - Điều gì đã thay thế Vai trò Web và Vai trò Người lao động? Tôi cần triển khai một trang web với PhantomJS yêu cầu GDI +. GDI + không được Web Jobs hỗ trợ hoàn toàn. Tôi đã hy vọng mình có thể sử dụng Vai trò web. Điều gì đã thay thế Vai trò Web? Tôi thích khái niệm VM được vá và bảo trì bởi Azure. Cảm ơn!
Martin

30
  • Vai trò web là các ứng dụng web được lưu trữ trong IIS.
  • Vai trò công nhân là các quy trình có thể thực hiện một số công việc (tức là tự động nén hình ảnh đã tải lên, thực hiện mọi thứ bất cứ khi nào có gì đó thay đổi trong cơ sở dữ liệu của bạn, nhận thông báo mới từ hàng đợi và xử lý, bạn đặt tên cho nó)
  • VM vai trò máy chủ lưu trữ VM

10
Trên thực tế, Vai trò web và Vai trò công nhân là máy ảo.
David Makogon

Đây là một câu trả lời đơn giản hơn nhiều và xin lỗi, chúng không phải là máy ảo ... bạn có thể tưởng tượng chi phí cho một giải pháp nhiều tầng với nhiều vai trò Người làm việc chạy nền nếu nó là một máy ảo riêng biệt? blogs.msdn.microsoft.com/silverlines/2012/06/27/…
Clarence

để cụ thể hơn Vai trò của người lao động là máy ảo không có IIS
dejjub-AIS

21

Tôi đã xem qua câu hỏi / câu trả lời SO này vài ngày trước và tôi thấy các câu trả lời được cung cấp hơi quá đầu của tôi (tôi mới làm việc tại Azure và Web). Tôi đã tìm thấy bản tóm tắt này trong phần các nguyên tắc cơ bản của Azure tối nay mà tôi nghĩ là tổng quan tốt ở cấp cao về sự khác biệt cốt lõi giữa vai trò công nhân và web:

Sự khác biệt chính giữa cả hai là một bản sao của vai trò web chạy IIS, trong khi một bản sao của vai trò công nhân thì không. Tuy nhiên, cả hai đều được quản lý theo cùng một cách và thông thường một ứng dụng sử dụng cả hai. Ví dụ: một cá thể vai trò web có thể chấp nhận các yêu cầu từ người dùng, sau đó chuyển chúng đến một cá thể vai trò công nhân để xử lý. Để tăng hoặc giảm quy mô ứng dụng của bạn, bạn có thể yêu cầu Windows Azure tạo thêm các phiên bản vai trò hoặc tắt các phiên bản hiện có. Và tương tự như Máy ảo Windows Azure, bạn chỉ bị tính phí cho thời gian mà mỗi phiên bản web hoặc vai trò công nhân đang chạy.

Nếu bạn là người mới phát triển Azure, tôi thực sự khuyên bạn nên đọc toàn bộ bài viết tại đây: Giới thiệu về Windows Azure

Tôi hy vọng điều này sẽ giúp ai đó nhiều như nó đã giúp bật bóng đèn cho tôi.


3

Vai trò web trong Windows Azure có mục đích đặc biệt và cung cấp một máy chủ web Dịch vụ Thông tin Internet (IIS) chuyên dụng được sử dụng để lưu trữ các ứng dụng web front-end. Bạn có thể nhanh chóng và dễ dàng triển khai các ứng dụng web cho Web Roles, sau đó tăng hoặc giảm khả năng Tính toán của mình để đáp ứng nhu cầu.

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.