求一个需求的解决方案,能力有限,想不到更好的方法

发布于 2021-11-26 19:58:44 字数 499 浏览 893 评论 19

需求是这样的:有很多台各个地市的服务器,通过udp数据包往固定的一台服务器上发送数据,我就在这台服务器上固定端口接收发送过来的udp数据包,然后解析提取数据包中的信息,再将信息存储在数据库中。发送udp数据包的服务器大概有200台左右,一天的数据量在50亿条左右,数据格式目前有9种不同的格式,有明文发送过来的数据包也有二进制的数据。

目前的做法:原先是通过jdk来接收udp数据包的,但是苦于接收不及时,数据丢失的厉害,所以改为通过tcpdump来接收数据,根据每个不同的发送udp数据包的服务器ip来写不同的脚本,接收对应ip发送过来的数据,然后将接收到的数据写入文件中,再通过java开启多线程去解析这些文件,对于二进制的数据,在java解析前,还需要用tshark转换成可以看到的明文,如果不转换,打开这个文件就是一堆乱码。

问题:现在的做法维护起来太不方便,多少台发送服务器就有对应的多少个脚本在接收,还有对应的解析二进制的tshark脚本,维护起来实在太麻烦,发送服务器还在不断的往上加。希望大家能想个好点的解决方案,非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(19

陌上芳菲 2021-11-29 11:55:38

为啥不写个服务器?

德意的啸 2021-11-29 11:55:36

回复
现在丢失原因是什么?若是访问量太大java处理不及时,这个可以通过负载均衡解决。

策马西风 2021-11-29 11:55:36

我用tcpdump就是单纯用来接收数据的,每个脚本几乎都是相同的,只是接收的对方ip不同,即每个脚本接收对应的一个发送服务器发送过来的数据,数据接收下来随即写入到文件中,只要源数据完整接收保存下来,其它的后续工作解析,装载入库都不是问题

流心雨 2021-11-29 11:55:36

jstorm 流处理,可以试试。

爱你是孤单的心事 2021-11-29 11:55:34

引用来自“len”的评论

要我做我觉得首先接受端一定不能做更多的事,要尽可能的轻量,比如把接到的数据就直接丢到RedIS队列中,这个已经是非常轻的工作了,这样可以尽可能的提高接收能力,如果还接收不过来,那就在优化这块的代码,服务器分发等。

可以有多台服务器去处理Redis队列中的数据,压力大就继续加服务器,针对9种不同的格式可以做工厂分发。

最后汇总入库,其实只要你能解决掉你的第一个问题,后面应该都不是问题,

伪装你 2021-11-29 11:55:32

你说的很对,其实只要解决接收数据的问题,其它都不是问题,数据完整接收下来,后续的工作都是轻松的,目前用脚本的方式来接收数据也是可以的,只是这样下去脚本实在太多,管理维护起来会非常累,如果其中有些脚本出现了问题,我也无法得知,接收数据部分您能详细说下吗

挽清梦 2021-11-29 11:55:31

太小看java了..

如此安好 2021-11-29 11:55:31

要我做我觉得首先接受端一定不能做更多的事,要尽可能的轻量,比如把接到的数据就直接丢到RedIS队列中,这个已经是非常轻的工作了,这样可以尽可能的提高接收能力,如果还接收不过来,那就在优化这块的代码,服务器分发等。

可以有多台服务器去处理Redis队列中的数据,压力大就继续加服务器,针对9种不同的格式可以做工厂分发。

最后汇总入库,其实只要你能解决掉你的第一个问题,后面应该都不是问题,

清晨说ぺ晚安 2021-11-29 11:55:31

回复
如果你继续坚持有脚本来处理,那也不过是9套脚本吧,出了问题也是自己那一套,服务器很多通过SVN管理就行了。如果觉得服务器多到更新都是问题了,就写一个SVN部署工具,把所有的IP都添加到管理器中,统一部署。

奢华的一滴泪 2021-11-29 11:55:30

沙发围观下还以为java有这么牛叉的性能

墨洒年华 2021-11-29 11:55:14

还是回到以前的java架构,前端 lvs 后端多个处理机器,应该可以解决问题,如果想要更快,应该让接收进程收到数据后就写日志(数据库或者文件),然后使用另外进程来分析日志

彼岸花ソ最美的依靠 2021-11-29 11:54:38

之前遇到一个类似的应用。他们是这样做的:

源数据库->用户可配置的方式加工数据->自定义文件格式->传输->接收并存为自定义文件格式->解析->用户可配置的方式加工数据->目标数据库

上面的"用户可配置的方式加工数据"类似:哪些用户、哪些表、哪些字段,字段的加减乘除运算等等。做的有点复杂,做了一个生成配置文件的可视化工具,还有可视化的节点监控工具。

只为守护你 2021-11-29 11:54:20

所有的发送服务器都可以得到,这个没问题,然后怎么管理接收这些数据

滥情空心 2021-11-29 11:49:29

做一个简单的发送服务器的维护系统,先把发送服务器维护到系统中来,再管理

醉酒的小男人 2021-11-29 09:33:42

这个不行啊,发送udp数据那边不是我方控制的,是其它厂商发送过来的数据,每个厂商根据不用的设备又有不同的格式,没法统一,我现在主要是想解决脚本接收的问题,2,3百个脚本,不好管理,维护起来太纠结

终止放荡 2021-11-29 08:48:45

先处理在发送,先把数据格式统一看看。

悸初 2021-11-29 01:27:51

我们公司是负责处理移动集团日志业务的,用手机的人那么多,数据量当然大,而且还在一直不断的增长

凌乱心跳 2021-11-28 03:51:45

回复
牛叉,我以为是tx和sina或者baidu呢,国内就这几个有你说的这么可怕的数据量。你也牛逼能做这样的高技术活。

无边思念无边月 2021-11-27 21:52:10

你是啥公司的,这么猛,1天50亿条。还来这里问问题???

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文