Sự khác biệt giữa nhiệm vụ và dịch vụ trong AWS ECS là gì?


114

Dường như người ta có thể chạy một Tác vụ hoặc một Dịch vụ dựa trên một Định nghĩa Tác vụ. Sự khác biệt và giống nhau giữa Task và Service là gì? Có manh mối nào trong thực tế là người ta có thể chỉ định "Nhóm tác vụ" khi tạo Tác vụ nhưng không phải Dịch vụ không? Nhiệm vụ và Dịch vụ có được phân cấp như nhau về Định nghĩa Nhiệm vụ không, hay Dịch vụ được cấu thành từ Nhiệm vụ?

Câu trả lời:


235

Một nhiệm vụ Definition là một bộ sưu tập của 1 hoặc nhiều thùng chứa cấu hình . Một số Công việc có thể chỉ cần một vùng chứa, trong khi các Công việc khác có thể cần 2 hoặc nhiều vùng chứa được liên kết tiềm năng chạy đồng thời. Định nghĩa Tác vụ cho phép bạn chỉ định hình ảnh Docker nào sẽ sử dụng, cổng nào để hiển thị, phân bổ bao nhiêu CPU và bộ nhớ, cách thu thập nhật ký và xác định các biến môi trường.

Một Tác vụ được tạo khi bạn chạy một Tác vụ trực tiếp, khởi chạy (các) vùng chứa (được xác định trong định nghĩa tác vụ) cho đến khi chúng bị dừng hoặc tự thoát ra, tại thời điểm đó, chúng không được thay thế tự động . Chạy Công việc trực tiếp là lý tưởng cho các công việc đang chạy ngắn, có lẽ là ví dụ về những việc đã được thực hiện thông qua CRON.

Một dịch vụ được sử dụng để đảm bảo rằng bạn luôn có một số số Nhiệm vụ chạy bất cứ lúc nào . Nếu vùng chứa của Tác vụ thoát ra do lỗi hoặc phiên bản EC2 bên dưới bị lỗi và được thay thế, Dịch vụ ECS sẽ thay thế Tác vụ bị lỗi. Đây là lý do tại sao chúng tôi tạo Cluster để Dịch vụ có nhiều tài nguyên về CPU, Bộ nhớ và Cổng mạng để sử dụng. Đối với chúng tôi, nó không thực sự quan trọng đối với phiên bản nào Tác vụ chạy được bao lâu thì chúng chạy. Cấu hình Dịch vụ tham chiếu đến định nghĩa Tác vụ. Một Dịch vụ chịu trách nhiệm tạo Nhiệm vụ .

Dịch vụ thường được sử dụng cho các ứng dụng chạy lâu như máy chủ web. Ví dụ: nếu tôi triển khai trang web của mình được cung cấp bởi Node.JS ở Oregon (us-west-2), tôi muốn nói ít nhất ba Nhiệm vụ chạy trên ba Vùng sẵn sàng (AZ) vì Tính sẵn sàng cao; nếu một cái không thành công, tôi có hai cái khác và cái không thành công sẽ được thay thế (đọc đó là tự phục hồi !). Tạo một Dịch vụ là cách để làm điều này. Nếu tôi có 6 phiên bản EC2 trong cụm của mình, 2 phiên bản cho mỗi AZ, Dịch vụ sẽ tự động cân bằng Nhiệm vụ giữa các khu vực tốt nhất có thể đồng thời xem xét tài nguyên cpu, bộ nhớ và mạng.

CẬP NHẬT:

Tôi không chắc việc suy nghĩ về những thứ này theo thứ bậc sẽ hữu ích.

Một điểm rất quan trọng khác là Dịch vụ có thể được định cấu hình để sử dụng bộ cân bằng tải, để khi nó tạo Nhiệm vụ — nghĩa là nó khởi chạy các vùng chứa được xác định trong Task Defintion — Dịch vụ sẽ tự động đăng ký phiên bản EC2 của vùng chứa với bộ cân bằng tải. Không thể cấu hình các tác vụ để sử dụng bộ cân bằng tải, chỉ Dịch vụ mới có thể.


1
Cảm ơn bạn @talentedmrjones rất nhiều! Sau đó nó có đơn giản như "sử dụng Tác vụ cho công việc ngắn hạn và sử dụng Dịch vụ cho các dịch vụ dài hạn" không? Bất kỳ cơ hội nào bạn có thể nhận xét về "Công việc và Dịch vụ có được phân cấp như nhau về mặt phân cấp của Định nghĩa Nhiệm vụ hay là Dịch vụ bao gồm Nhiệm vụ" không?
Bob Jones

Những gì tôi không hiểu: tại sao khi nhiệm vụ tạo ra tôi có thể thay đổi giá trị của biến môi trường nhưng nó dường như không có khả năng cho dịch vụ
Nikolay Klimchuk

1
Các dịch vụ @NikolayKlimchuk chỉ quản lý các tác vụ - chính các tác vụ sẽ xác định và sử dụng các envars.
bwobst

"nhóm nhiệm vụ" là gì
red888

@NikolayKlimchuk xin lỗi vì trả lời muộn. Các dịch vụ được sử dụng để lập lịch các vùng chứa, các tác vụ được sử dụng để xác định các vùng chứa. Đây là lý do tại sao bạn sử dụng các tác vụ để điều khiển env vars.
talentedmrjones

42

Được giải thích bằng lời hay bởi @talentedmrjones. Hình bên dưới sẽ giúp bạn dễ hình dung :)

Cluster, Service, EC2 Instance và Task đang hoạt động


Hình dung đẹp! :-)
sgsi

2
Nếu bất kỳ người xem câu trả lời nào muốn tìm hiểu sâu hơn về Amazon ECS, vui lòng truy cập freecodecamp.org/news/… . Giải thích đẹp!
realPK

@realPK thực sự là trang rất hữu ích, cảm ơn bạn đã giới thiệu!
Christophe

1

Định nghĩa nhiệm vụ:

Đây là bản thiết kế mô tả vùng chứa Docker nào sẽ chạy và đại diện cho ứng dụng của bạn. Nó bao gồm một số nhiệm vụ.

Định nghĩa nhiệm vụ

Dịch vụ:

Một ví dụ của Định nghĩa Nhiệm vụ. Nó cũng xác định các Nhiệm vụ tối thiểu và tối đa từ một Định nghĩa Tác vụ chạy tại bất kỳ thời điểm nào, tự động phân vùng và cân bằng tải.

Phiên bản vùng chứa ECS:

Đây là phiên bản EC2 có Docker và ECS Container Agent đang chạy trên đó. Tác nhân chăm sóc giao tiếp giữa ECS và phiên bản, cung cấp trạng thái của các thùng chứa đang chạy và quản lý việc chạy các thùng chứa mới.

Mối quan hệ:

nhập mô tả hình ảnh ở đây

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.