请教,生物特征比对服务器设计。

yingge2016 2023-12-21 09:05:17

请各位大佬帮忙看下项目设计中存在的问题,有没有更好的方案。

 

项目需求:

10w生物特征数据(feature)比对认证,要求速度快。

目前项目情况:

sprintboot + jni + C++

java写业务逻辑提供api给设备使用,设备调用api进行注册和比对。

C++写比对逻辑,调用算法对待识别生物特征数据和已录入生物特征数据进行比对。

mysql存储已录入的生物特征数据。

遇到问题:

1、MySQL中10w feature,读写速度较慢。每条feature数据200kb。

解决方案:使用redis对增删改查操作进行记录,稍后写入mysql数据库中。

针对问题1还有没有更好的方案?

2、比对过程中服务器CPU不能跑满。

解决方案:使用docker和负载均衡技术,部署多个服务器容器。并且使用redis mq做多个容器之间数据同步。

==================

20231229更新

测试了一下使用mysql\mongodb\redis读取2w个feature的速度。

 redis反而更慢。

看了下服务器吞吐

 

发现服务器带宽好像只有百兆。

又看了下接入服务器的交换机,果然百兆。

 

...全文
1374 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

妈妈问我为什么跪着看

红目香薰 2023-12-21
  • 打赏
  • 举报
回复

得测试一下才能给出具体的方案,需要共享数据。如果可以的话给出git地址或者发我邮箱372699828@qq.com

yingge2016 2023-12-21
  • 举报
回复
@红目香薰 你有什么数据?
红目香薰 2023-12-21
  • 举报
回复
@yingge2016 你的数据啊,起码有千八百个做测试!不然怎么回答你呢!
  • 打赏
  • 举报
回复

你的项目设计已经包含一些解决方案来解决性能和可伸缩性问题,但仍然可以进一步改进。以下是一些建议和更好的方案:

数据库性能问题:

使用Redis来缓存数据库查询结果是一个不错的想法,但还有其他方式来提高数据库性能:
1.数据库索引优化:确保数据库中的表有适当的索引,以加速查询操作。
2.数据库分片:考虑将数据库分成多个分片,以减轻单个数据库的负载。
3.数据库缓存:考虑使用数据库缓存(例如,Memcached或Redis)来存储常用数据,以减少对数据库的频繁查询。
4.数据库读写分离:将读和写操作分别指向不同的数据库服务器,以减少争夺数据库资源的情况。
CPU利用率问题:

使用Docker和负载均衡是一个好的解决方案,但你还可以考虑以下方法来进一步优化CPU利用率:

并行处理:确保你的比对逻辑能够并行处理多个请求,以充分利用CPU多核心。
算法优化:检查你的生物特征比对算法是否可以进行优化,以提高性能。
使用硬件加速:如果可能的话,考虑使用GPU或专用硬件来执行生物特征比对操作,这可以显著提高速度。
多容器部署和数据同步:

使用Docker和负载均衡来部署多个服务器容器是一个好的做法。确保你的数据同步方案是可靠的。另外,考虑以下建议:

使用Kubernetes:Kubernetes是一种强大的容器编排工具,可以更轻松地管理多个容器实例。
数据分区:将数据分成不同的分区,确保每个容器实例只需要处理特定分区的数据。
异常处理:实现容器之间的错误处理和故障恢复机制,以确保系统的稳定性。

yingge2016 2023-12-21
  • 举报
回复
@天下风云出我辈,一入代码岁月催 tks
yingge2016 2023-12-21
  • 举报
回复
@yingge2016 替我谢谢gpt

51,395

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧