我正在寻找一种合理快速的Java事件处理机制来生成和处理在不同主机上运行的不同JVM上的事件.
对于单个JVM中多个线程的事件处理,我发现了一些像Jetlang这样的好候选者.但是在我搜索分布式的等价物时,我找不到任何轻量级以提供良好性能的东西.
有谁知道任何适合该法案的实施?
编辑:使用 数字来表示性能有点困难.但是,例如,如果使用事件实现心跳机制并且心跳间隔为5秒,则心跳接收器应该在一两秒钟内接收发送的心跳.
通常,轻量级实现提供了良好的性能.涉及Web服务器或任何类型的集中式集线器的事件处理机制需要强大的硬件(绝对不是轻量级)以提供良好的性能,这不是我正在寻找的.
几天前,当我不得不将C++文件引入Java项目时,我遇到了一个问题.它首先需要测量Java进程的CPU使用率,并决定使用JNI来调用用C编写的本机库(Unix机器上的共享库).问题是找到一个合适的位置将C文件放入源存储库(顺便说一下Clearcase),它只包含Java文件.
我想到了几个选择:
(a)创建一个单独的目录,用于将C文件(特别是一个.h文件和一个.c文件)放在源代码库的顶部,如:
/ vobs/myproduct/javasrc/vobs/myproduct/cppsrc
我不喜欢这个,因为我只有两个C文件,在这样的语言级别拆分源代码库似乎很奇怪.如果项目的大部分内容在C++和Java中或多或少地写得相同,那么这可能没问题.
(b)将C文件放入使用它的Java包中.
我在/ vobs/myproduct/com/mycompany/myproduct/util /中调用了Java类,C文件也在那里.
我不喜欢这个,因为我认为C文件不属于Java包.
以前有人解决过这样的问题吗?通常,在组织混合两种或更多语言的代码库时,应该遵循什么样的策略?
更新:我没有任何计划在我的项目中使用任何C或C++,也许是一些Jython,但你永远不知道我的客户何时需要一个只能通过使用C解决的功能或者最好用C解决的功能.
在我的项目中,我是首席开发人员,我们之前的网络配置存储在一个XML文件中.配置包含有关网络布局的信息 - 其组成主机,有关每个主机的各种详细信息,如操作系统,平台,在每个主机中配置的用户,每个用户的几个属性等等.在即将推出的产品版本中,我们希望将数据移动到某种类型的数据库中,因为配置将扩展为包含更多元素和细节,并且将它们保存在XML文件中将变得很麻烦.
第一个选择是RDBMS.然而,由于配置数据的分层特性和可扩展性标准,目录服务器似乎是更好的选择.使用目录服务器的动机是
在目录服务器中建模分层数据比在RDBMS中建模更容易.
创建/定义扩展具有附加属性的基本类型的新实体类型也更容易.从问题解决的角度来看,这是非常有吸引力的.
配置数据将被更频繁地读取而不是更新.虽然性能不是问题,但目录服务器非常适合这种特性.
经过大约一周的自我介绍LDAP和目录服务器的基础知识后,我现在对目录服务器的选择持怀疑态度.我看到一些问题:
LDAP不如RDBMS主流.很多人都有过使用某些SQL的经验,并且使用RDBMS可以比目录服务器更快地启动.正如我之前提到的,我花了一个多星期的时间来学习LDAP的基础知识(如何创建模式,定义DIT,添加条目,将数据导出到LDIF文件等).这很重要,因为当一个新成员加入团队时,他/她不会面临学习曲线.
将来,我们可能需要维护更多数据并将其存储在数据库中.目录服务器可能不是这种数据的良好选择(例如,数据可能会在读取时经常更新).在我看来,拥有两个存储机制是一种负担.
在更具政治性的方面,我不会因为选择RDBMS而受到指责/解雇,即使它不适合目前的问题.使用目录服务器,如果上面的第2点成为现实,我不想回答"为什么你没有想到这个?".
我正在寻找如何做出选择的建议.以前有没有人遇到类似的情况?
编辑1:我们在项目中就此进行了讨论,在此我提出了我在这里提出的确切观点.由于以下原因,我们很可能在没有任何进一步评估的情况下选择RDBMS:
第2点被认为比其他任何事情都重要.
我单位内部的想法似乎相当保守,各个层次的人都想要安全地玩.我真的不能责怪他们.
"为什么不是RDBMS?" 是第一个问题."它可以用RDBMS完成吗?" 是第二个.我终于收到了消息.
我在 MySQL 中的查询group_concat用于将多行中的值转换为单列。
SELECT
user_id,
group_concat(case when event = 'BORROWED' then book_id end
separator ' ') as borrowed_books
FROM library_events
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是borrowed_books将值连接到其中的临时列最大为 1026 个字符。我还看到列中的字符串在 1026 个字符后被截断。
如何为临时列设置/增加此值?
我的产品目前使用Struts 1.3进行Web GUI开发.这或多或少是我们作为组织指令的重点.最近,我们遇到了问题.主要的一点是其陡峭的学习曲线 - 最近进入团队的新Web开发人员习惯于使用Spring MVC,需要几周时间才能获得高效率.
我们已经就是否应该寻找Struts 1.3的替代品进行了一些讨论.我们的Web GUI很快就会有许多新功能,我不确定是否值得努力从头开始使用新的Web框架.从我的交谈中几个有经验的Web开发人员(我目前的组织以外),并从我自己在网上研究收集,Struts的1.3是一个稳定的,成熟的,相当受欢迎(Apache的Struts的网页声称,它是在最流行网络框架,但我带了一点盐).
你有什么看法?