小编Nig*_*olf的帖子

Akka Pattern - 演员树,回复原始来源

这是一个设计问题;

假设我有一组演员,他们会做一堆处理.处理由客户端/连接参与者启动(即树是服务器).最终客户端演员想要一个响应.即我有一个看起来像这样的演员系统.

    ActorA  <---reqData--- Client_Actor
       | msgA                    /|\                      
      \|/                         |                 
    ActorB                        |                  
  msgB |  \ msgD                  | 
      \|/  \/                     | 
    ActorC  ActorD---------msgY-->|
       |_____________msgX_________|
Run Code Online (Sandbox Code Playgroud)

客户端系统想要的响应是叶子参与者的输出(即ActorC和/或ActorD).树中的这些参与者可能正在与外部系统进行交互.该树可以是一组预定义的可能路由的演员(即,Client_actor只有一个actorref到演员树的根,ActorA).

问题是管理将最终/叶子演员的响应(msgX和/或msgY)发送回客户端演员的最佳模式是什么?

我可以想到以下几种选择;

  • 为每个连接客户端创建一个树,让演员跟踪发件人,当他们获得msgXmsgY发送给原始发件人引用时,将消息传递回树中.即每个演员都会保留原始发件人的参考号.
  • 以某种方式向下发送消息中的Client_Actorref reqData并为树中使用的所有消息复制它,以便叶子演员可以直接回复Client_actor...这似乎是最高性能的选项.不知道如何做到这一点(我在某种方式上考虑了包含客户端参与者的消息案例类的特征)...
  • 以某种方式根据通过树传递的消息中的唯一ID查找客户端actor或使用actorselection(不确定这对远程处理有多好)...
  • 更好的东西...

仅供参考我正在使用Akka 2.2.1.

干杯!

design-patterns scala message-passing akka akka-cluster

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

从JSON文件批量加载具有许多对象的MongoDB

我想对MongoDB进行批量加载.我有大约200GB的文件包含我想加载的JSON对象,问题是我不能使用mongoimport工具,因为对象包含对象(即我需要使用--jsonArray aaram),限制为4MB.

在CouchDB中有Bulk Load API,我可以编写脚本并使用cURL发送POST请求来插入文档,没有大小限制......

MongoDB中有这样的东西吗?我知道有困,但我想知道这是否可以应付JSON嵌套数组插入..?

谢谢!

json couchdb bulkinsert mongodb

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

Scala类型级编程 - 表示层次结构

我正在学习Scala中的类型级编程,我很好奇是否可以使用类型级编程来表示树或层次结构.

简单的情况是多层树

A_
  |
  B_
    |C
    |D
  |     
  E
Run Code Online (Sandbox Code Playgroud)

一个人如何代表这样的结构?

scala type-level-computation

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

如何确保一次只运行一个Bash脚本实例?

我想创建一个只能在任何时候运行一次的sh脚本.

比方说,如果我执行脚本,那么我再次执行脚本,如何使脚本如果脚本的第一个exec仍在工作,第二个脚本将失败并显示错误.即我需要在做任何事情之前检查脚本是否在其他地方运行.我该怎么做呢?

我运行的脚本运行一个长时间运行的过程(即永远运行).我想使用像cron之类的东西每隔15分钟调用一次脚本,这样如果进程失败,它将由下一个cron运行脚本重新启动.

linux bash concurrency scheduled-tasks

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

Eclipse Indigo字体已更改

所以我刚升级到Eclipse Indigo,似乎Java文本编辑器字体已经改变了.

它似乎是Consolas.有谁知道以前的默认编辑器字体是什么,所以我可以恢复?

这里的每个人都同时搬到了Indigo,没有人知道以前的eclipse版本中的默认值是什么......

java eclipse fonts

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

MySQL - 视图 - 超慢查询

这很奇怪.我正在尝试在MySQL中使用Views(对于具有Sybase和SQL Server的更多经验,我是MySQL的新手).无论如何,这个新项目我们都在使用MySQL,因为它似乎具有良好的性能.然而,为了简化Web前端的查询,我们决定创建一些视图,一切都运行良好,但它们需要永远运行.

视图非常简单,只是select语句(这些表中确实有几百万行).比如说这个查询:

SELECT CAST(classifier_results.msgDate as DATE) AS mdate
       ,classifier_results.objClass AS objClass
       ,COUNT(classifier_results.objClass) AS obj
       ,classifier_results.subjClass AS subjClass
       ,COUNT(classifier_results.subjClass) AS subj 
FROM classifier_results 
WHERE (classifier_results.msgDate >= (curdate() - 20)) 
GROUP BY 
  CAST(classifier_results.msgDate as DATE)
  ,classifier_results.objClass
  ,classifier_results.subjClass 
ORDER BY classifier_results.msgDate DESC
Run Code Online (Sandbox Code Playgroud)

以正常方式运行时,大约需要1.5秒才能返回结果.

但是,当此查询被放入视图(按原样)时 - 即

CREATE VIEW  V1a_sentiment_AI_current AS    
SELECT CAST(classifier_results.msgDate as DATE) AS mdate
       ,classifier_results.objClass AS objClass
       ,COUNT(classifier_results.objClass) AS obj
       ,classifier_results.subjClass AS subjClass
       ,COUNT(classifier_results.subjClass) AS subj 
FROM classifier_results 
WHERE (classifier_results.msgDate >= (curdate() - 20)) 
GROUP BY 
  CAST(classifier_results.msgDate as …
Run Code Online (Sandbox Code Playgroud)

mysql sql view query-optimization

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

大数据集 - NoSQL,NewSQL,SQL ..?大脑炒

我需要一些建议.我在数据挖掘领域开始了一个新的初创公司.这基本上是研究项目的分拆.

无论我们有多大的非结构化数据,我们都会对这些数据进行各种NLP,分类和聚类分析.

我们有数以百万计的消息,包括推特消息,博客文章,论坛帖子,新论文,报告等等......所有文字.我们所有人都需要大约300GB +的文本数据并且每天都在增长(每天大约10GB增长)!

因此,我们需要某个地方以一种我们可以实际处理和查询并获得相对实时结果的格式存储所有这些信息.

我们需要在某处存储这些数据...

由于这是一个新的初创公司,我们真的不能/不想为许可产品付费,例如VoltDB,Oracle等企业版是遥不可及的.

我认为这可能是非关系"NoSQL"数据库的完美应用程序,例如Apache Cassandra或Hadoop/HBase(列族),MongoDB(文档),VoltDB(社区edn)或MySQL.

目前,所有数据都在tsv文本文件中,并作为其写入文件进行处理.不用说它很痛苦,这意味着整个事情都停留在一个过程中,我们无法查询它.它可以工作,但它限制了我们可以用这个数据集做的丰富性.

无论如何,我希望有人可以使用上述任何工具或任何针对此用例的建议(大型文本数据非结构化)来分享他们的经验,用于自然语言处理,分类,聚类,频率收集,实时分析等. ?

我最大的担心是MySQL无法处理未来的大量数据.今年年底,这件事将处于TB级,所以我们通过实施可扩展的解决方案,让我们轻松查询数据,试图获得曲线和增长的一部分......

我认为像HBase这样的非rel/NoSQL列族数据库是最好的,对于我们一直添加新的数据源(爬虫,流API等),如果我们有一个非结构化的模型,它会容易得多.

任何帮助将不胜感激!地狱甚至可能有一份工作:)

干杯!

mysql hadoop hbase cassandra nosql

8
推荐指数
1
解决办法
1575
查看次数

使用Zookeeper和Thrift加载平衡服务

我们有一个计算密集型服务,用于进行大量转换.它在很大程度上受计算限制(CPU绑定)进程.基本上发生的是我们有一个消息代理,它通过Thrift将消息发送到处理服务.

现在我们有多个不同的处理服务,它们运行不同的算法来处理消息 - 这些消息被路由到一个或多个处理算法.我们的消息量是可变的,处理算法的需求也是可变的(即我们可以获得包含XYZ的许多消息然后发送到算法1,否则发送到算法2).

我们希望将其扩展为可横向扩展的内容.所以我们有多个节点正在运行处理算法.现在,根据消息传递负载,我们的Thrift请求应该发送到不同的服务器(假设所有服务都运行每个处理Algo1到3的实例).比如我们想要在Algo 1上获取大量消息,然后我们有两台运行algo 1的服务器,第三台服务器负责处理其他两个algos(Algo 2和3)的请求.

所以系统看起来像这样:

Client ----Request-------|
              -----------|--------------------
              | Coord & Load Balancer Service | ... like zookeeper
               --------------------------------
                      <--|-->
                         |    Route messages to servers...
   Server1:               Server2:          Server 3:
Algo1 instance        Algo1 instance      Algo2 instance
                                          Algo3 instance    
Run Code Online (Sandbox Code Playgroud)

所有进程都是用Java编写的.

因此,使用Zookeeper进行设置是多么容易.我知道,当我们添加或更改algos时,我们可以轻松地使用Zookeeper来处理事物的配置方面(即服务器侦听算法更新或添加并按配置提供服务)但我们如何管理负载平衡方面?

干杯!

java load-balancing thrift distributed-computing apache-zookeeper

8
推荐指数
1
解决办法
7481
查看次数

Scala - 创建基本的动态函数解析器

我是Scala的新手,但我想知道可以在语言中实现一个简单的Equation解析器.

假设我有一些功能(很像Excel功能):

IF(Cond a=b, val_true, val_false)

MID(String, Start_pos, num_chars) - 字符串提取

LEN(String) - 字符串的长度

OR(cond1, cond2, ... condn)

AND(cond1, cond2, ... condn)

所以我的想法是,我可以在运行时传递一个公式作为来自用户的字符串作为命令行参数以及任何其他params说 IF(LEN(param1)=4,MID(param1,2,1), MID(param1,0,LEN(param1)))

这个想法是评估函数,所以如果用户提供上面的公式和字符串"scat",那么输出将是"a".如果给出字符串"scala",那么输出将是"scala"...

在Scala中实现这有多容易?什么是最好的设计方法?我知道没有函数指针(在CI中会将公式字符串解析为func点的集合并从那里消失)...

任何有关如何以高效Scala风格处理此问题的建议都将受到赞赏.

干杯!

functional-programming scala formula dynamic-function

8
推荐指数
1
解决办法
1364
查看次数

Node.js作为JSON转发器

我是Node.js的新手,但是我想将它用作一个快速的Web服务器,它只需要一个请求uri,然后在一个返回JSON流的内部服务上运行查询.

就是这样的:

http.createServer(function(request, response) {
  var uri = url.parse(request.url).pathname;
  if(uri === "/streamA") {
    //send get request to internal network server http://server:1234/db?someReqA -->Returns JSON ....?
    //send response to requestor of the JSON from the above get ....?
  }
  else if(uri === "/streamB") {
    //send get request to internal network server http://server:1234/db?someReqB -->Returns JSON ....?
    //send response to requestor of the JSON from the above get....?
}.listen(8080);
Run Code Online (Sandbox Code Playgroud)

我正在使用node.js的最新稳定版本 - 版本0.4.12.我希望这很容易做到,但我没能在网上找到一些例子,因为它们似乎都使用旧的API版本所以我在错误后收到错误.

是否有人能够提供上述与新Node API一起使用的代码解决方案?

谢谢!

javascript json web-services node.js

7
推荐指数
1
解决办法
1959
查看次数