6

Tôi đang sử dụng bus dịch vụ với nettcprelaybinding. Một bên là máy chủ OnPremise có kết nối liên tục đến bus dịch vụ. Ở đầu bên kia là vai trò web Azure đáp ứng các yêu cầu web đến bằng cách mở xe buýt dịch vụ thích hợp và tìm nạp thông tin từ máy chủ.Hiệu suất chuyển tiếp của dịch vụ Azure

Mối quan tâm của tôi là hiệu suất của việc tạo kênh. Phải mất một vài giây để thiết lập kết nối mới với máy chủ onpremise thông qua bus dịch vụ. Caching ChannelFactory của tôi dường như không giúp được gì nhiều. Hiệu suất truyền sau khi kênh mở là rất tốt.

Bất kỳ đề xuất nào về cách cải thiện hiệu suất. Caching thông tin trong Azure chỉ có thể được thực hiện ở một mức độ nào đó. Tôi cần kết nối với máy chủ onpremise.

Tôi có thể thiết lập một nhóm kết nối với bus dịch vụ bằng cách nào đó không?

Trên nhiều điều, có một số máy chủ lưu trữ khác nhau vì vậy nó không chỉ là một kết nối để duy trì sự sống.

Trả lời

2

Bạn có thể kết nối các kết nối, nhưng bộ cân bằng tải Azure sẽ terminate any open connection that sits idle for more then 60 seconds. Vì vậy, nếu bạn đang lưu vào bộ nhớ cache kết nối lâu hơn giữa các cuộc gọi, bạn sẽ cần triển khai một số loại mẫu nhịp tim để giúp giữ cho kết nối luôn hoạt động.

Tùy chọn khác bạn có thể muốn xem xét là Azure Connect. Điều này cho phép bạn tạo một điểm ipsec để kết nối điểm từ tài nguyên được lưu trữ trên đám mây đến máy chủ tại chỗ. Nó đòi hỏi một khách hàng được cài đặt trên hộp tại chỗ bạn muốn kết nối quá, nhưng một số đã được sử dụng nó để thiết lập một kết nối cổng đơn giản với một dịch vụ proxy tại chỗ.

+0

Cảm ơn phản hồi tốt. Không biết về giới hạn 60 giây. Nếu tôi muốn kết nối các kết nối. Cách tốt để làm điều đó là gì? Tôi tìm thấy một số thông tin về nó bằng cách theo liên kết của bạn (http://code.msdn.microsoft.com/WCF-Azure-NetTCP-Keep-Alive-09f50fd9). Nhưng đây có phải là giải pháp tốt trong môi trường đa Azure không? Nếu một kênh được mở trên một cá thể và máy khách tiếp theo được thực hiện trên một cá thể khác? Hay cân bằng tải có đảm bảo rằng cùng một cá thể được sử dụng không? – user1284390

+0

Như tôi đã hiểu, mỗi cá thể đều có kết nối riêng. Và vì chúng đang giữ chúng mở, bạn cần phải nhận thức được giới hạn kết nối tối đa (2000 hoặc một số điều tôi tin) được cho phép trên một vùng tên duy nhất. Nếu tốt hay xấu của nó để làm điều này tin tưởng phụ thuộc vào nhu cầu của bạn cho hiệu suất và khả năng mở rộng. – BrentDaCodeMonkey

+0

Đây là một chút cũ - nhưng chỉ FYI, có vẻ như hầu hết các Azure LB bây giờ là dựa trên phần mềm, và có một thời gian chờ mặc định là 4 phút (không phải 1 phút với LB phần cứng trước) - và bây giờ có thể cấu hình được. Tuy nhiên, nó không rõ ràng với tôi, tại thời điểm này, nếu thư viện máy khách Service Bus đang thực hiện TCP KeepAlive cho bạn tự động, và do đó một thời gian chờ LB không thực sự là một vấn đề: https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-cho-azure-load-balancer/ – Jmoney38

7

Tôi là thành viên của nhóm Dịch vụ xe buýt tại Microsoft. Chi phí mở kết nối cao so với việc gửi tin nhắn vì nhiều thông tin liên lạc cần thiết để có được cả hai mặt để đảm bảo họ đang nói chuyện với nhau.

Việc giảm thiểu cho việc này là lưu vào bộ nhớ cache một kênh thay vì lưu vào bộ nhớ đệm một ChannelFactory. Có các ping được giữ trong nền được thực hiện cho các kết nối NetTcpRelayBinding để đảm bảo kênh vẫn mở.

+0

Trong WCF, tôi phải chú ý đến các kênh bị lỗi và tạo lại proxy nếu một ngoại lệ xảy ra. Xe buýt dịch vụ có giống nhau về vấn đề này không? Tôi nên xử lý các ngoại lệ trong Service Bus bằng ứng dụng được lưu trong bộ nhớ cache như thế nào? – LamonteCristo

+0

Cảm ơn bạn một lần nữa vì tất cả phản hồi. Từ quan điểm của một vai trò quan điểm trên web, bất cứ ai có thể chỉ cho tôi cách đề xuất về các kênh chuyển tiếp bộ nhớ đệm được khuyến cáo không?Tôi có các kênh bộ nhớ cache trên mỗi trường hợp vai trò web hoặc có thể tôi có thể sử dụng bộ nhớ cache Azure có thể được sử dụng trong các trường hợp? makerofthings7: Tôi đoán bạn có thể xử lý ngoại lệ như với WCF "bình thường" nhưng hãy nhớ rằng điều này chỉ liên quan đến một trong hai kết nối. Servicebus đưa đến các kết nối, một từ mỗi bên. Vì vậy, nếu một trong những xấu đi khác không được tự động thông báo cho kiến ​​thức của tôi. – user1284390

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