2009-07-21 42 views
6

Ý tưởng hay là sử dụng ổ cắm để gửi dữ liệu giữa hai máy chủ hoặc tôi nên sử dụng một thứ gì đó như MQ để di chuyển dữ liệu.Ổ cắm có đáng tin cậy không?

Câu hỏi của tôi: là ổ cắm đáng tin cậy, nếu tôi cần một lần duy nhất/đảm bảo phân phối dữ liệu?

Có giải pháp nào khác không?

Cảm ơn.

+1

... LÀ ổ cắm đáng tin cậy? –

+2

@modosansreves: Nếu các từ được nói là dễ đọc miễn là chữ cái đầu tiên và cuối cùng được đặt đúng chỗ thì ngữ pháp không chính xác sẽ không gây tổn hại nhiều. Tập trung vào thông điệp chứ không phải từ riêng lẻ. –

Trả lời

12

Ổ cắm là API cấp ứng dụng để thực hiện truyền thông mạng. Độ tin cậy của ổ cắm phụ thuộc vào giao thức mạng mà bạn chọn khi bạn tạo ổ cắm. Nếu bạn chọn TCP/IP, bạn sẽ nhận được chuyển "đáng tin cậy" ... lên đến giới hạn. Nếu bạn chọn UDP/IP, bạn sẽ nhận được chuyển "không đáng tin cậy".

Như đã nêu trong câu trả lời khác, TCP đảm bảo rằng bạn không bị mất hoặc làm hỏng dữ liệu lên đến một điểm:

  1. nếu có một thời gian đủ dài mạng cúp, hoặc người gửi hoặc người nhận chết một Kết nối TCP/IP sẽ ngắt và bạn sẽ mất dữ liệu trừ khi bạn thực hiện các bước để khởi động lại kết nối .
  2. nếu có mạng tham nhũng dữ liệu cấp, có một xác suất nhỏ là sẽ không bị phát hiện bởi séc.

Để đảm bảo độ tin cậy cao hơn TCP/IP, bạn cần triển khai các cơ chế phân phối và bảo đảm nhạy cảm hơn ở đầu lớp mạng dựa trên Socket của ứng dụng. Hoặc sử dụng một tin nhắn xếp hàng sản phẩm mà làm việc chăm chỉ cho bạn.

Vì vậy, câu trả lời cho câu hỏi của bạn là nó phụ thuộc vào cách bạn sử dụng Ổ cắm và mức độ tin cậy mà hệ thống của bạn yêu cầu.

2

Ổ cắm đáng tin cậy khi bạn thực hiện và dựa trên phần cứng cơ bản. Nếu bạn không muốn gặp rắc rối khi thực hiện dịch vụ chuyển phát được đảm bảo (trong điều kiện nào? 100% sẽ không bao giờ xảy ra), hệ thống xếp hàng tin nhắn là một cược tốt. Hàng đợi tin nhắn sẽ thực hiện tất cả sự kiên trì, xếp hàng, thử lại, v.v mà bạn sẽ cần phải thực hiện chính mình nếu bạn đi với các ổ cắm tiêu chuẩn.

2

Bạn có thể sử dụng MQ nếu bạn cần giao hàng được đảm bảo bất kể điều gì xảy ra (như nếu bên kia đi offline để bảo trì) và bạn không muốn tự viết tất cả logic. Ổ cắm là những gì bạn sử dụng để kết nối với một bên khác, bất kể bên đó là MQ hay người nhận cuối cùng của tin nhắn.

1

Ổ cắm là cơ chế thô để truyền dữ liệu. Mọi thứ khác được thực hiện trên đầu trang này. Trong các OSI network model chúng thuộc về lớp 4. Mặc dù chúng thực hiện kết nối end-to-end đáng tin cậy, chúng hiếm khi được sử dụng làm giao thức kết thúc. Bạn hầu như luôn cần triển khai lớp ứng dụng. Điều này sẽ phụ thuộc vào ứng dụng của bạn (bạn cần chuyển tệp hay chỉ gửi tin nhắn) và cơ sở hạ tầng mạng của bạn.

+0

+1: Để sử dụng "ổ cắm IS" để kích hoạt modosansreves. Tất nhiên nó có thể là một sự trùng hợp hoàn toàn nhưng đó là một điều thú vị. –

+2

Ổ cắm không liên quan đến mô hình mạng OSI. Một socket là một giao diện cho (có khả năng) truyền thông hai chiều, đệm lấy được giá trị từ thực tế là nó có thể được gắn vào bất kỳ kênh cơ sở nào và hỗ trợ nhiều thuộc tính khác nhau của kênh truyền thông cơ bản. Ngoài liên kết thô/tcp/udp và mạng khác, bạn có thể sử dụng ổ cắm để liên lạc cục bộ qua đường ống hoặc bất kỳ kênh nào bạn có thể tưởng tượng. Không giảm khái niệm này xuống OSI. –

0

Nếu bạn sử dụng stream socket, giao thức TCP đảm bảo rằng dữ liệu không bị mất trong truyền và không bị hỏng (mặc dù bạn phải quyết định xem tổng kiểm tra 16 bit của nó là đủ hay bạn cần cơ chế kiểm tra lớp ứng dụng) .

Hệ thống MQ cung cấp và những gì bạn có thể hoặc không cần là mức độ tin cậy mức độ ứng dụng transaction-type, tức là khả năng đảm bảo phân phối ngay cả khi gặp lỗi phần cứng hoặc phần mềm không liên tục.

0

Tùy thuộc vào loại dữ liệu, dịch vụ web đơn giản có thể là giải pháp nhanh nhất. Chúng tương đối dễ thiết lập và thử nghiệm. Mặc dù đối với một số ví dụ cụ thể, tôi cần biết loại dữ liệu và môi trường nào bạn đang chạy.

0

Tùy thuộc vào loại ứng dụng bạn đang phát triển. Nó bạn đang viết một chương trình mà bạn cần phản ứng hoặc ack của tin nhắn được gửi sau đó TCP socket là tốt. Tuy nhiên, nếu bạn đang triển khai một số loại luồng công việc, bạn nên sử dụng Hàng đợi tin nhắn.

2

Ổ cắm đáng tin cậy vì mọi giao tiếp được thực hiện trên đầu trang, bao gồm MQ.

Nhưng bạn có thể muốn thêm một số giao hàng bảo đảm với MQ để cải thiện độ tin cậy của ứng dụng của bạn. Nó là gì? phân phối đảm bảo rằng thông điệp của bạn được xử lý ít nhất một lần và không quá một lần bởi người tiêu dùng. người tiêu dùng đang tắt? nhà sản xuất đã tắt? máy chủ MQ bị tắt? đĩa bị treo? nhờ MQ, không có tin nhắn nào bị mất, bất cứ điều gì xảy ra (miễn là quản trị viên của bạn biết công việc của mình). Ngoài ra, nếu bạn khởi động lại người tiêu dùng, sẽ không có thông báo nào được xử lý hai lần. Điều này có thể quan trọng nếu các thông điệp chứa chuyển đô la triệu đô la. Nhưng nó không đảm bảo rằng tin nhắn của bạn được xử lý trong một khoảng thời gian có thể hủy. và thời gian xử lý đôi khi quan trọng hơn là việc đảm bảo phân phối, tùy thuộc vào ứng dụng của bạn.

Bạn có thể chọn cách tốt nhất để liên lạc giữa các máy chủ của mình tùy theo nhu cầu của bạn. Giao hàng tận nơi của Garanteed có cả chi phí tài chính và hiệu suất, do đó, nó chỉ được sử dụng nếu thực sự cần thiết (ví dụ như hàng triệu đô la chuyển).

Đối với hầu hết các ứng dụng, bạn có thể đạt được điều gì đó chỉ thỏa mãn bằng cách thử lại tin nhắn của bạn khi không thành công. Nhưng đó không phải là giao hàng thực sự một lần duy nhất. không cố gắng thực hiện nó một mình, nó là một công cụ rất khó khăn mà chỉ vài người có thể đạt được. Đó là những người dùng để xem xét việc tạo lại một phần mềm phức tạp như MQ hoặc Apache AQ.

Hy vọng điều đó sẽ hữu ích.

  • Jeb
Các vấn đề liên quan