标签: scalable

C#中的高性能TCP服务器

我是一名经验丰富的C#开发人员,但到目前为止我还没有开发过TCP服务器应用程序.现在我必须开发一个高度可扩展的高性能服务器,它可以处理至少5-10万个并发连接:通过GPRS从GPS设备获取字节数据.

常见的通信过程应如下所示:

  • GPS设备启动与我的服务器的连接
  • 如果我想获取数据,我的服务器会回答
  • 设备发送GPS数据
  • 我的服务器向设备发送有关获取它的报告(例如校验和)
  • 从GPS获取新数据,报告并且这种情况一次又一次地发生
  • 以后GPS DEVICE关闭连接

所以,在我的服务器中我需要

  • 跟踪连接/活动客户端
  • 从服务器端关闭任何客户端
  • 当设备关闭连接时捕获事件
  • 获取字节数据
  • 将数据发送给客户

我开始通过互联网阅读这个主题,但对我来说这似乎是一场噩梦.有很多方法,但我找不出哪个是最好的.

异步套接字方法对我来说似乎是最好的,但是以这种异步方式编写代码非常糟糕且不易调试.

所以我的问题是:您认为在C#中实现高性能TCP服务器的最佳方式是哪种?你知道任何好的开源组件吗?(我尝试了几个,但我找不到一个好的.)

c# tcp scalable

44
推荐指数
2
解决办法
5万
查看次数

在SVG中编写<path>数据(读取和修改)

有人真的可以帮助我吗?我一直在寻找为我的SVG运行脚本的方法.但我得到的所有东西都不匹配!并且它没有包含足够的信息,因为他使用了这组代码.例如,一个使用了event.target,另一个使用了event.getTarget(),另一个使用了event.target.firstchild.data.有人可以帮帮我吗?

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <path d="M150 0 L75 200 L225 200 Z" />
</svg>
Run Code Online (Sandbox Code Playgroud)

是svg路径的一个例子吗?我需要的是得到那些坐标,可能把它放在一个变量中,并用它作为另一个svg的坐标.那我该怎么做呢?另一件事是我如何通过在界面中输入数字来更改这些坐标.

所以我试图寻找答案,但就像我说的,我没有找到我需要的信息,或者我只是不知道它给我的信息.

javascript graphics svg scalable

28
推荐指数
2
解决办法
5万
查看次数

为什么NoSQL说传统的RDBMS不擅长可扩展性

我读过一些文章说,像MySQL这样的RDBMS并不擅长扩展,但像MongoDB这样的NoSQL可以很好地分解. 我想知道RDBMS提供的哪个功能本身不能很好地分片.

rdbms sharding scalable nosql

12
推荐指数
1
解决办法
8835
查看次数

C++中的可扩展服务器框架

我期待用C++编写一个服务器应用程序,用于同时处理数万个客户端.它应该在Windows和Linux下运行.我一直在寻找框架和库,并遇到了Boost Asio,这似乎是一个非常成熟和广泛使用的替代品.我只是在绞线/线程池周围缠绕我很困难,主要是因为有数百万个模板.我的背景主要是在C中,所以我并不习惯Boost一般似乎充满了模板的混乱.我试图找人开发围绕升压短耳相对较薄的包装将采用股,绑定等的照顾线程/同步方面的,但一直未能找到一个还没有谁可以在我的预算之内做到这一点(2或300美元).

您是否可以推荐任何其他可扩展的库以及Boost Asio(例如,在Windows上使用IOCP,在Linux上使用epoll等),或者我可能会找到熟练的Boost开发人员寻找较小的自由职业的来源?

非常感谢您的任何帮助.

亲切的问候,

Philip Bennefall

c++ epoll iocp scalable boost-asio

12
推荐指数
1
解决办法
1万
查看次数

Solandra与ElasticSearch

我们正在使用Cassandra数据库,该数据库将存储PB级数据.我们正在考虑使用ElasticSearch或Solandra,但我们正在享受一个有趣的时间来决定使用哪个.我想知道我们的数据库是否会变得太大.我知道ElasticSearch是可扩展的,但在多大程度上 - 特别是对于Cassandra数据库.

另一方面,Solandra是为Cassandra制作的,具有很高的可扩展性,但又在多大程度上?

两者都是可扩展的,但使用Cassandra的可扩展性如何?

lucene scalable cassandra elasticsearch solandra

11
推荐指数
1
解决办法
3301
查看次数

设计后端(云)服务器以避免"热点"场景

我正在尝试设计一个专门针对每个聊天室中的大型群组(> 50个用户)的实时群聊应用程序.并非所有用户都会立即进行主动聊天,但是当聊天进入聊天室时,人们可以期望许多用户只是闲置/收听和接收更新.

我已经制定了一个非面向云的原型,并且正在重新设计基于云的系统.

我希望有一个"重定向/负载平衡"服务器(LBServer)重定向到一系列后端"聊天"服务器(CServers).当用户请求加入来自客户端的特定聊天室,客户端将连接到LBServer和LBServer将与维护在内存中的聊天室的一个实例特定CServer的连接信息回复.然后客户端将断开与LBServer的连接并连接到CServer.只要用户留在聊天室中,就会保持与CServer的这种连接.CServer负责更新记录聊天室状态的后端数据库,并通知聊天室中与更新相关的其他客户端.

你已经可以设想如果有太多的用户在一个聊天室(这样一个CServer必须保持所有这些用户的持久连接)的存在,如果在室内活动增加过去的CServer的处理速度的门槛,以保持一个"热点"的场景将展开所有更新.

在这一点上,我提出了一个天真的解决方案,以便我的系统仍然可扩展.我可以加载一个更大的CServer实例,复制聊天室的状态,并请求"热"CServer中的所有用户重新连接到新的更大的实例.我不相信这是处理这种系统可扩展性的正确方法.

我有几个问题:

鉴于我希望聊天的实时性,有没有更合适的方法来设计我的后端系统,以避免必须持续连接到一个服务器实例?

当我在数据库中跟踪状态时,我是否还需要打扰隔离每个聊天室的处理以在一个CServer上发生?我想留出空间让用户能够同时参加多个聊天室.如果我们使用当前模型,客户端将必须维护与我的云的多个连接(用户所在的每个聊天室都有一个).这对客户端来说太糟糕了.作为修订,我设想客户保持与"通用"CServers的连接,这些CServers将监听用户当前所在的聊天室的变化并相应地更新它们.

所有的反馈和意见都将受到极大的赞赏,我很乐意详细说明任何不清楚的事情.谢谢.

cloud scalable

9
推荐指数
1
解决办法
501
查看次数

Python可扩展聊天服务器

我刚开始用Python学习套接字.所以我写了一些聊天服务器和客户端的例子.我在互联网上看到的大部分内容似乎都使用线程模块来处理客户端与服务器的连接(异步).我确实理解,对于可伸缩服务器,你需要使用一些额外的技巧,因为成千上万的线程可以杀死服务器(如果我错了,请纠正我,但这是由于GIL吗?),但这不是我现在关注的问题.

奇怪的是,我在Python文档中找到了创建子进程的正确方法(不幸的是我丢失了引用,对不起:()来处理套接字.

所以问题是:使用线程还是多处理?还是有更好的解决方案吗?

请给我答案并向我解释不同之处.

顺便说一句:我确实知道像Twisted这样的东西写得很好.我不是在寻找预先制作的可扩展服务器,而是试图了解如何编写可以扩展的服务器或者至少可以处理10k个客户端.

编辑:操作系统是Linux.

python multiprocessing scalable

9
推荐指数
1
解决办法
2098
查看次数

PHP:跟踪用户是否在线的最有效方法?

我正在开发一个具有可扩展性的我的项目,我已经走到了一个十字路口.在我的网站上,我想检测用户是否在线.我无法想到处理这个问题的最佳方法.我想的方式就是沿着这些方向(在伪代码中):

// SQL user table:
user {
  "name": "blah blah",
  "email": "derpy@derpyderp.com",
  "online": false
}
Run Code Online (Sandbox Code Playgroud)

因此,每当用户登录时,我都可以将其online列更新为true.然而,这最终会导致每次用户登录时发生SQL查询,如果发生这种情况,我会说,每秒10次登录,那就是发生了很多查询.另一种方式我认为我可以做同样的事情,但在另一个表中:

// Activity table:
activity {
  "user_id": 2,
  "online": true
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我认为由于与user表的分离,这将导致更少的内存消耗.但是我不确定它是否会对性能产生任何实际影响.

所以,如果你能用你的见解祝福我,我会更感激,谢谢你.

php tracking scalable

9
推荐指数
1
解决办法
2453
查看次数

使用QPainter绘制可伸缩的QIcon

我想设计一个新的QIcon,并使其看起来像固定文本,并带有一个圆角矩形

.-----.
| Phy |
`-----´
Run Code Online (Sandbox Code Playgroud)

在最终应用了比例转换的QPainter上绘画时,图标应该缩放而没有“像素块”效果(例如,当我绘制到QGraphicsView的一部分且在其场景上应用了比例的小部件时)。

因此,我很难知道如何绘画我的QIcon。如果按照以下方式进行操作,我将绘制一个始终具有固定像素数量的QPixmap,从而在比例尺足够大时不可避免地引入像素块效果

 void MyWidget::drawIcon(QPainter *painter, QPoint pos) {
     QPixmap pixmap = icon.pixmap(QSize(22, 22),
                                    isEnabled() ? QIcon::Normal
                                                : QIcon::Disabled,
                                    isChecked() ? QIcon::On
                                                : QIcon::Off);
     painter->drawPixmap(pos, pixmap);
 }
Run Code Online (Sandbox Code Playgroud)

我正在寻找的方法与QFont的drawText工作方式类似。无论我的缩放比例有多大,绘制字体时总是看起来很锐利,无法检测到单个像素。

我想我可以告诉QPainter我将图标绘制到给定的像素矩形中,然后在允许将项目渲染成可能更大的矩形或像素图之前先QPainter转换矩形本身QIconEngine::paint。但是我看不到我该怎么做。

我只是愚蠢而看不到明显的解决方案吗?

c++ icons qt scalable

6
推荐指数
1
解决办法
6782
查看次数

当img高度小于窗口高度时,CSS或jQuery可缩放背景图像下方没有空白区域

我知道Oldie但是好东西.这个问题被问了很多次,但我没有得到明确的答案.可伸缩的背景图像,最好只有CSS,如果必须的话,愿意使用jQuery支持.我遇到的一个问题(即使用CSS3背景图像)是图像下方的空白空间,当它的高度小于浏览器窗口高度时.(例如:http://css-tricks.com/examples/ImageToBackgroundImage/)

这就是我想要完成的事情:

  • 保持纵横比
  • 如果浏览器窗口小于图像大小,则剪裁图像的高度和宽度
  • 图像以页面为中心,因此剪切不会偏移页面的流量

以下是一些说明这些目标的例子(尽管我认为可以做得更好):

谢谢你,谢谢你,谢谢你.

css jquery background image scalable

5
推荐指数
1
解决办法
7761
查看次数