我正在尝试实现一个涉及不同模块的IPC的实时应用程序.这些模块正在进行一些数据密集型处理.我在原型中使用消息队列作为IPC的主干(Activemq),这很容易(考虑到我是一个完全的IPC新手),但它非常慢.
这是我的情况:
我一直在研究不同的IPC方法:套接字,管道,共享内存.但是,我没有IPC的经验,我绝对没有办法在3周内让这个演示失败......哪种IPC是安全的开始?
谢谢.百合
reversehttp.net几乎无法立即了解reversehttp的真正含义以及如何最好地利用它,这使得该工具似乎难以实际实现.在什么样的环境中,这可能是理想的实时Web数据情况,什么时候不起作用,哪些浏览器支持这种方法,它究竟是什么?
感谢能够提供帮助的人,并且首先听到了这一点,并且知道它是什么.
我正在寻找一个pub/sub引擎,具有以下要求:
我希望能够拥有多个发布/订阅服务器,并能够从任何服务器发布或订阅频道,无论在哪个服务器上声明频道.
例如:
如果用户A连接到服务器SRV1并且用户B连接到服务器SRV2,如果用户B订阅" MyChannel "并且用户A在频道" MyChannel " 上发布内容,则用户B将获得该消息,即使他未连接到同一服务器.
我不知道Redis是否能够做到这一点.我没有找到关于这个主题的任何信息.欢迎任何帮助.
我正在使用Google App Engine(Python)构建一个多用户实时应用程序,它看起来像Facebook livestream插件:https://developers.facebook.com/docs/reference/plugins/live-stream/
这意味着:同一网页上的1到1 000 000个用户可以执行立即通知其他人的操作.这就像群聊,但有很多人......
我的问题:
- App Engine 能够扩展到那种数字吗?
- 如果是的话,你会如何设计它?
- 如果不是,你的建议是什么?
现在,这是我的设计:
- 我正在使用App Engine Channel API
- 我将每个连接在memcache中的用户存储起来
- 每次执行操作时,都会向任务队列添加一个通知任务
- 任务包括检索所有用户来自memcache并向他们发送通知.
我知道我的瓶颈在于任务.通过相同的任务/请求通知每个人.目前,对于连接的30个用户,它持续约1秒,因此对于10万用户,您可以想象可以花多长时间.
你怎么纠正这个?
非常感谢
我在Linux over loopback(127.0.0.1)上使用优化的Java NIO选择器进行一些基准测试.
我的测试非常简单:
对于往返时间,我得到以下结果:
但这里的问题是我正在传输100万条消息.
如果我只旋转10条消息,我会得到非常不同的结果:
如果我错了,请纠正我,但我怀疑,一旦我们让NIO选择器旋转,响应时间就变得最佳.但是,如果我们发送的消息之间有足够大的间隔,我们会支付唤醒选择器的价格.
如果我只发送一条消息,我会得到150到250微秒的不同时间.
所以我对社区的问题是:
1 - 我的最小时间为13微秒,平均为19微秒,这次往返包测试.看起来我到目前为止击败了ZeroMQ所以我可能会在这里遗漏一些东西.从这个基准测试来看,ZeroMQ在标准内核上的平均时间为49微秒(99%)=> http://www.zeromq.org/results:rt-tests-v031
2 - 当我旋转一条或几条短信时,我能做些什么来改善选择器的反应时间吗?150微米看起来不太好.或者我应该假设在prod环境中选择器不会完全?
通过忙于围绕selectNow()旋转,我能够获得更好的结果.发送少量数据包仍然比发送许多数据包更糟糕,但我认为我现在正在达到选择器性能限制.我的结果:
结论
因此,看起来UDP数据包往返的物理屏障平均为10微秒,尽管我得到了一些数据包,以8微秒(最短时间)进行旅行.
随着忙碌的旋转(感谢Peter),我能够从平均200微秒变为单个数据包的平均65微秒.
不确定为什么ZeroMQ 慢5倍.(编辑:也许是因为我通过环回在同一台机器上测试它,而ZeroMQ使用两台不同的机器?)
鉴于熟悉的.NET形式是在Windows上运行的,而不是实时的操作系统,而且MONO在Linux上运行(标准内核也不是实时O/S).
同样,任何提供垃圾收集的内存分配方案(如"托管".NET),以及任何堆内存方案都会在应用程序的执行行为中引入非确定性的,可能非平凡的延迟.
是否存在备用主机O/S和编码范例的任意组合,其中可以利用C#.NET的所有功能和便利,同时实现可以在严格指定的时间限制内执行代码的指定部分的解决方案?例如启动一个C#方法每10ms至小于1ms的公差,以完成时间仅受方法本身执行的工作确定的?
显然,应用程序必须仔细编写; 时间关键代码必须避免内存分配; 应用程序必须完成所有内存分配等工作,并且在启动硬实时循环后没有其他线程处于活动状态.此外,主机O/S必须支持实时调度.
这是否可以在.NET/MONO框架内实现,或者是否支持.NET运行时,框架和支持它(或兼容的等效)的O/S?
例如:是否可以使用类似NETduino的 C#进行可靠的细粒度(~1ms)机器控制,或者它们是否有限制或需要替代策略用于此类应用?
我正在考虑使用实时消息替换我们公司的监控仪表板.
在我们公司,我们有一个仪表板,显示超过700台物理机的(相当详细的)状态,以及添加的元信息.它大约在1.5年前由我的一位同事在ASP.NET Web Forms(我不喜欢)中构建,以使调度员能够协调我们的技术人员应该去解决问题的位置(这些机器位于不同的地理位置) ).
不幸的是,该应用程序使用30秒的完整页面自动刷新,后面有一个大查询.它很慢,它完全重置你的视图(正如我所说,仪表板包含超过700多台机器).我个人想改变这个.使用起来非常烦人.我们的调度员已经学会了接受这一点,但我认为他们应该得到更好的待遇.
我想在新的仪表板上显示相同的内容,但具有实时更新和"消息"日志.在我们公司,我们在MS堆栈上工作了大约90%,因此我计划使用ASP.NET MVC,SignalR,SQL Server和Knockout.
看看这个简单的图表:
+----+ +----+ +----+ +----+ +----+ +----+ +----+
| PC | | PC | | PC | | PC | | PC | | PC | | PC | ... ...
+--+-+ +--+-+ +-+--+ +--+-+ +--+-+ +--+-+ +--+-+
| | | | | | |
| +--+ +--+ +----+ <-+ <-+ <-+
| | | |
+---v---v-----v-----v+ +-----------------------+
| | TCP/IP | |
| Monitoring Backend +---------> Data …Run Code Online (Sandbox Code Playgroud) 我想在Android应用程序中绘制传感器值图.
哪个图书馆最适合这个?
我试图实时存储和处理体育赛事,并希望创建一个最佳系统,因为这将每秒处理100个事件.系统将在体育比赛之前存储事件,然后实时或在半场/会话/比赛结束时处理它们.
在我的系统中,每个Event都分解为以下组件
WHO谁是与之相关的事件.团队,球员,裁判,观众等WHAT 什么是事件(目标,通过,保存等)WHEN 活动的时间细节 HOWMUCH 如何定义事件值TYPE定义何时应该检查 - INDIVIDUAL:realtime,
AGGREGATE:end ofWHEN以下是足球的一些例子
1. No goals scored in 2nd Half
TEAM: *, WHAT: __GOAL, WHEN: __HALF_2, HOWMUCH: 0, TYPE: AGGREGATE
{
"who" : {"team":*},
"what" : "__GOAL",
"when" : "__HALF_2"
"howMuch" : {"value":0, "type" :"exact"},
"type" : "AGGREGATE"
}
2. Either keeper to complete 3 or more punches
PLAYER: (p1 v p2), WHAT: __PUNCH, WHEN: __MATCH, HOWMUCH: 3+, TYPE: INDIVIDUAL
{ …Run Code Online (Sandbox Code Playgroud)