Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, en az kod değişikliğiyle Socket.IO için Web PubSub kullanarak şirket içinde barındırılan Socket.IO uygulamalarını Azure'a geçirme konusunda mühendislik perspektifi sağlanmaktadır. Daha sonra basitleştirilmiş uygulama mimarisinden ve dağıtımından yararlanarak 100.000 eşzamanlı bağlantı elde edebilirsiniz. Web PubSub'ı Socket.IO etkili bir şekilde kullanmak için bu makaledeki her şeyi anlamanız gerekmez.
Şirket içinde barındırılan bir Socket.IO uygulamasının mimarisi
Aşağıdaki diyagramda şirket içinde barındırılan bir Socket.IO uygulamasının tipik mimarisi gösterilmektedir.
Bir uygulamanın ölçeklenebilir ve güvenilir olduğundan emin olmak için Socket.IO kullanıcıların genellikle birden çok Socket.IO sunucusu içeren bir mimarisi vardır. İstemci bağlantıları, sistemdeki yükü dengelemek için Socket.IO sunucular arasında dağıtılır.
Birden çok Socket.IO sunucusu kurulumu, geliştiricilerin farklı bir sunucuya bağlı istemcilere aynı iletiyi göndermesi gerektiğinde bir zorluk oluşturur. Geliştiriciler genellikle bu kullanım örneğini "iletileri yayınlama" olarak adlandırıyor.
Socket.IO kitaplığının resmi önerisi, Socket.IO sunucuları koordine etmek için bağdaştırıcı olarak adlandırılan bir sunucu tarafı bileşeni tanıtmaktır. Bağdaştırıcı, istemcilerin hangi sunuculara bağlı olduğunu anlar ve bu sunuculara ileti göndermelerini emreder.
Bağdaştırıcı bileşeni eklemek hem geliştirme hem de dağıtım için karmaşıklık sağlar. Örneğin, bir mimari Redis bağdaştırıcısını kullanıyorsa geliştiricilerin şunları kullanması gerekir:
- Yapışkan oturumlar uygulayın.
- Redis örneklerini dağıtın ve koruyun.
Gerçek zamanlı bir iletişim kanalını elde etmek için harcanan mühendislik çabası ve zaman, geliştiricilerin bir uygulamayı veya sistemi kullanıcılar için benzersiz ve değerli hale getiren özellikler üzerinde çalışmasını engeller.
Socket.IO için Web PubSub'ın geliştiriciler için çözmeyi amaçladığı şey
Geliştiriciler genellikle Socket.IO kitaplığıyla oluşturulmuş güvenilir ve ölçeklenebilir bir uygulama ayarlamanın zor olduğunu bildirse de, geliştiriciler sezgisel API'lerden ve kitaplığın desteklediği çok çeşitli istemcilerden yararlanabilir. Socket.IO için Web PubSub, kalıcı bağlantıları güvenilir ve uygun ölçekte yönetme karmaşıklığını geliştiricilere sağlarken kitaplığın getirdiği değere dayanır.
Geliştiriciler uygulamada, kaynak yoğunluklu olabilecek WebSocket veya uzun yoklama tabanlı bağlantıları korumak için sunucu kaynakları sağlamaya gerek kalmadan Socket.IO kitaplığının API'lerini kullanmaya devam edebilir. Ayrıca geliştiricilerin bir bağdaştırıcı bileşenini yönetmesi ve dağıtması gerekmez. Uygulama sunucusunun yalnızca tek bir işlem göndermesi gerekir ve Socket.IO için Web PubSub iletileri ilgili istemcilere yayınlar.
Nasıl çalışır
Socket.IO için Web PubSub, bağdaştırıcıyı ve Engine.IO uygulayarak Socket.IO protokolleri üzerinde derleme yapar. Aşağıdaki diyagramda, Socket.IO sunucunuzla Socket.IO için Web PubSub kullandığınızda tipik mimari gösterilmektedir.
Şirket içinde barındırılan bir Socket.IO uygulaması gibi, Socket.IO uygulama mantığınızı kendi sunucunuzda barındırmanız gerekir. Ancak, Socket.IO hizmeti için Web PubSub ile:
- Sunucunuz artık istemci bağlantılarını doğrudan yönetmez.
- İstemcileriniz hizmetle kalıcı bağlantılar kurar (istemci bağlantıları).
- Sunucularınız da hizmetle kalıcı bağlantılar kurar (sunucu bağlantıları).
Sunucu mantığınız , broadcastve add client to roomskullandığındasend to client, bu işlemler yerleşik bir sunucu bağlantısı aracılığıyla hizmete gönderilir. Sunucunuzdan gelen iletiler, Socket.IO istemcilerin anlayabileceği Socket.IO işlemlere çevrilir. Sonuç olarak, tüm mevcut Socket.IO uygulamaları büyük değişiklikler olmadan çalışabilir. Yapmanız gereken tek değişiklik, istemcilerinizin bağlanacakları uç noktayı değiştirmektir. Daha fazla bilgi için bkz . Şirket içinde barındırılan Socket.IO uygulamasını Azure'da tam olarak yönetilecek şekilde geçirme.
bir istemci hizmete bağlandığında, hizmet:
- Engine.IO bağlantısını (
connect) sunucuya iletir. - İstemci bağlantılarının aktarım yükseltmesini işler.
- Tüm Socket.IO iletilerini sunucuya iletir.