[MMO] Centrifugo 2.3.1

Xen-AddOn [MMO] Centrifugo 2.3.1 2.3.1

دسترسی دریافت را ندارید
نوع دانلود
  1. رایگان
پشتیبانی از نسخه های
  1. 2.2
  2. 2.3
ادغام با سانتریفیوژ را اضافه می کند.
Centrifugo یک سرویس خود میزبان است که می تواند اتصالات را از طریق انواع حمل و نقل بلادرنگ انجام دهد و یک API انتشار ساده ارائه می دهد. Centrifugo به خوبی با هر برنامه کاربردی ادغام می شود - بدون نیاز به تغییر معماری برنامه موجود برای معرفی ویژگی های زمان واقعی. فقط اجازه دهید Centrifugo با اتصالات مداوم مقابله کند.
عملکرد عالی
Centrifugo به زبان Go با برخی بهینه سازی های هوشمند در داخل ساخته شده است. عملکرد خوبی دارد - پایه آزمایشی با یک میلیون اتصال WebSocket و 30 میلیون پیام ارسال شده در دقیقه با سخت افزار قابل مقایسه با یک دستگاه سرور مدرن.
ویژگی‌های غنی
بسیاری از ویژگی‌های داخلی می‌توانند به ساختن یک اپلیکیشن جذاب در زمان واقعی در زمان محدود کمک کنند. Centrifugo انواع مختلفی از اشتراک ها، تاریخچه کانال داغ، حضور فوری، تماس های RPC را ارائه می دهد. همچنین این امکان وجود دارد که رویدادهای اتصال پراکسی به برنامه پشتیبان از طریق HTTP یا GRPC و موارد دیگر انجام شود.
موتورهای Redis، KeyDB، Tarantool داخلی یا بروکر Nats، مقیاس اتصالات را روی ماشین‌های مختلف ممکن می‌سازد. با اشتراک گذاری مداوم Redis، KeyDB و Tarantool، می توان میلیون ها اتصال فعال را با نیازهای سخت افزاری معقول مدیریت کرد.
مورد استفاده در تولید
تقریباً 10 سال قبل از آن شروع شد Centrifugo (و کتابخانه سانتریفیوژ برای Go که در بالای آن ساخته شده است) یک سرور بالغ است که با موفقیت توسط بسیاری از شرکت‌ها در سراسر جهان استفاده می‌شود: Badoo، Ably، ManyChat، Grafana و دیگران.
پیام رسانی بلادرنگ چیست؟
پیام‌رسانی هم‌زمان می‌تواند به ساخت برنامه‌های تعاملی کمک کند که در آن رویدادها می‌توانند تقریباً بلافاصله پس از تأیید شدن توسط برنامه‌های پشتیبان با فشار دادن داده‌ها به اتصال دائمی به کاربران تحویل داده شوند - بنابراین حداقل تأخیر تحویل را به دست می‌آورند.

چت ها، نظرات زنده، بازی های چند نفره، معیارهای پخش جریانی را می توان بر روی یک سیستم پیام رسانی بلادرنگ ایجاد کرد.

Centrifugo اتصالات مداوم مشتریان را از طریق WebSocket دو طرفه، SockJS و SSE یک طرفه (EventSource)، HTTP-streaming، GRPC انتقال می دهد و API را برای انتشار پیام ها به مشتریان آنلاین در زمان واقعی ارائه می دهد.
مقیاس پذیری
یکی دیگر از موارد مهم مقیاس پذیری است. همانطور که برنامه شما رشد می کند - کاربران بیشتر و بیشتری با نقطه پایانی بلادرنگ شما ارتباط دائمی برقرار می کنند. یک ماشین سرور مدرن می‌تواند هزاران اتصال باز را مدیریت کند، اما قدرت یک فرآیند محدود است - در نهایت CPU یا حافظه در دسترس شما تمام خواهد شد. بنابراین در برخی مواقع ممکن است مجبور شوید اتصالات کاربر را روی چندین ماشین مقیاس کنید. یکی دیگر از دلایل افزایش مقیاس اتصالات بر روی چندین ماشین، در دسترس بودن زیاد است (زمانی که یک سرور از کار افتاده است).

بسیاری از راه حل های پیام رسانی بلادرنگ در Github و خدمات آنلاین پولی وجود دارد. اما تنها تعداد کمی از آنها مقیاس پذیری را در خارج از جعبه ارائه می دهند - بیشتر آنها فقط در یک فرآیند کار می کنند. من نمی خواهم بگویم که Centrifugo تنها سروری است که مقیاس می شود. هنوز جایگزین های زیادی مانند Socket.IO، SocketCluster، Pushpin و هزاران گزینه دیگر وجود دارد. منظور من این است که امکان مقیاس‌پذیری یکی از اصلی‌ترین چیزهایی است که هنگام جستجوی راه‌حل بلادرنگ یا ساختن آن از ابتدا باید به آن فکر کنید. واقعاً نمی‌توانید پیش‌بینی کنید که برنامه شما با چه سرعتی منابع موجود را روی دستگاه تکی تمام می‌کند – مقیاس‌پذیری نرم‌افزار یک بهینه‌سازی زودرس نیست و در بیشتر موارد داشتن راه‌حل مقیاس‌پذیر خارج از جعبه به سادگی فضای بیشتری را برای بهبود عملکرد برنامه در اختیار شما قرار می‌دهد.

بسیاری از خدمات آنلاین نیز قادر به مقیاس پذیری هستند. اما به قیمت گذاری نگاه کنید - اکثر این راه حل ها نسبتاً گران هستند. در مورد pusher.com شما 500 دلار در ماه پرداخت می کنید، اما فقط 10 هزار اتصال حداکثر و مقدار بسیار محدودی از پیام های ماهانه دریافت می کنید که باید به آنها اهمیت دهید. این مسخره است. البته Centrifugo میزبان خود است و شما باید ظرفیت سرور خود را برای اجرای آن صرف کنید. اما من فکر می کنم هزینه در بسیاری از موارد قابل مقایسه نیست.

سانتریفیوگو با Redis PUB/SUB به خوبی مقیاس می‌شود، از اشتراک‌گذاری مداوم Redis در سمت برنامه پشتیبانی می‌کند و برای دسترسی بالا با Redis Sentinel ادغام می‌شود. ما تا 500 هزار اتصال را با Centrifugo ارائه کردیم که دارای 10 گره سانتریفوگو برای اتصالات در Kubernetes و تنها یک نمونه Redis بود که تنها 60٪ از هسته پردازنده واحد را مصرف می کرد! همچنین یک درخواست کشش مداوم

وجود دارد که امکان مقیاس PUB/SUB را با سرور Nats به عنوان کارگزار می‌افزاید.

[MMO] Centrifugo 2.3.1​

Adds integration with Centrifuge.
Centrifugo is a self-hosted service which can handle connections over a variety of real-time transports and provides a simple publish API. Centrifugo integrates well with any application – no need to change an existing application architecture to introduce real-time features. Just let Centrifugo deal with persistent connections.
Great performance
Centrifugo is built in Go language with some smart optimizations inside. It has good performance – test stand with one million WebSocket connections and 30 million delivered messages per minute with hardware comparable to one modern server machine.
Feature-rich
Many built-in features can help to build an attractive real-time application in a limited time. Centrifugo provides different types of subscriptions, hot channel history, instant presence, RPC calls. There is also the possibility to proxy connection events to the application backend over HTTP or GRPC and more.
Built-in Redis, KeyDB, Tarantool engines, or Nats broker make it possible to scale connections over different machines. With consistent sharding of Redis, KeyDB, and Tarantool it's possible to handle millions of active connections with reasonable hardware requirements.
Used in production
Started almost 10 years back then Centrifugo (and Centrifuge library for Go it's built on top of) is a mature server successfully used in production by many companies around the world: Badoo, Ably, ManyChat, Grafana, and others.
What is real-time messaging?
Real-time messaging can help building interactive applications where events can be delivered to users almost immediately after being acknowledged by application backend by pushing data into persistent connection – thus achieving minimal delivery latency.

Chats, live comments, multiplayer games, streaming metrics can be built on top of a real-time messaging system.

Centrifugo handles persistent connections from clients over bidirectional WebSocket, SockJS, and unidirectional SSE (EventSource), HTTP-streaming, GRPC transports and provides API to publish messages to online clients in real-time.
Scalability
Another important thing is scalability. As your application grows — more and more users will establish persistent connections with your real-time endpoint. A modern server machine can handle thousands of open connections but the power of one process is limited — you will eventually run out of available CPU or memory. So at some point you may have to scale user connections over several machines. Another reason to scale connections over several machines is high availability (when one servers out of order).

There are many real-time messaging solutions on Github and paid online services. But only few of them provide scalability out of the box — most of them work only in one process. I don’t want to say that Centrifugo is the only server that scales. There are still many alternatives like Socket.IO, SocketCluster, Pushpin and tons of others. My point is that possibility to scale is one of the main things you should think about when searching for real-time solution or building it from scratch. You can’t really predict how fast your app will run out available resources on single machine — software scalability is not a premature optimization and in most cases having scalable solution out of the box will simply give you more room for improving application functionality.

Many online services are capable to scale too. But look at pricing — most of those solutions are rather expensive. In case of pusher.com you are paying 500$ in a month but only get 10k connections max and strongly limited amount of monthly messages you should care about. This is ridiculous. Of course Centrifugo is self hosted and you must spend your server’s capacity to run it. But I suppose the cost is not comparable in many cases.

Centrifugo scales well with Redis PUB/SUB, supports application-side Redis consistent sharding out of the box and integrates with Redis Sentinel for high availability. We served up to 500k connections with Centrifugo having 10 Centrifugo node pods for connections in Kubernetes and only one Redis instance which consumed only 60% of single processor core!

There is also an ongoing pull request that adds possibility to scale PUB/SUB with Nats server as broker.​
نویسنده
practicalsoft
دریافت‌ها
0
بازدیدها
16
اولین انتشار
آخرین بروزرسانی

رتبه‌بندی‌ها

0.00 ستاره 0 رتبه‌بندی

فایل‌های بیشتری از practicalsoft

فایلهای مشابه

[MMO] External Accounts 2.2.0 practicalsoft
این افزونه به کاربران شما اجازه می دهد تا با استفاده از حساب های خود در شبکه های اجتماعی وارد شوند
دریافت‌ها
0
به‌روزرسانی شده
[MMO] Hide Bb-Code Content System 2.2.5 practicalsoft
افزونه حرفه ای مخفی سازی محتوا برای گروه های کاربری خاص
دریافت‌ها
1
به‌روزرسانی شده
[MMO] Hide Bb-Code Content System 2.2.8 practicalsoft
افزونه حرفه ای مخفی سازی محتوا برای گروه های کاربری خاص
دریافت‌ها
2
به‌روزرسانی شده
[MMO] Hide Bb-Code Content System v2.2.6 practicalsoft
افزونه حرفه ای مخفی سازی محتوا برای گروه های کاربری خاص
دریافت‌ها
0
به‌روزرسانی شده
[MMO] Hide BbCode by Resource 2.2.0 practicalsoft
این افزونه بر اساس میزان منابع کاربر یک برچسب اضافه می کند.
دریافت‌ها
0
به‌روزرسانی شده
عقب
بالا