怎样设计一个良好大数据处理的解决方案?
在园子里面虽然待的时间不久,不过也有一年有余了,遇到了问题,第一个想到的就是去园子里面借鉴一些前辈们的经验,以免自己走弯路。渐渐的自己也有了一定的独立处理问题的能力,大神们不要喷我是标题党,标题是疑问,小弟不才,遇到了一些数据同步问题或是解决方案错误的麻烦,需要求助大神们,如果您不是赶时间,帮忙看完这篇文章,留上两句言就可以了,小弟不胜感激。好了,不多扯淡了,赶快说正事。
1、项目介绍
下图为目前项目的整体框架图,大至如下:
这是一个winform系统,采用了.NET Framework3.5和SQL Server2008编写与存储。这是一个某车辆监控管理系统,分为前端采集车辆信息,然后存储到后台数据库服务器上,整个系统的大致流程是:前端采集的图片数据,通过交换机统一接口,将数据传入到负责存储的中心服务软件(以下简称为“服务软件”),然后服务软件将接收到的数据存入到数据库中(数据库为SQLServer2008),客户端通过网络去访问数据库的信息,进行检索等一些操作。这是一个大至流程,上图中有N个分中心,每个点都部署了一样的系统及软件,流程一样,然后将分中心的数据同步到总的服务器上,主要同步的对象是从相机过来的照片(照片是转换为二进制后存储到数据库某表中的)及一些相关数据,实现总点可以查看各个分点的数据信息。
2、目前问题
由于图片是存储在数据库表中的,由数据量过大,平均一天有20万左右的信息需要存储,峰值每秒达到了15-20条左右的记录,图片压缩后为150KB左右的高清图,服务器为24*365天工作的,所以压力比较大,目前的问题是服务器的磁盘IO出现了瓶颈(服务器采用了500G的硬盘做了磁盘阵列),服务器的连接通讯管道出现了拥堵,写入操作超时。这种情况偶尔会发生。
3、个人的解决方案
经过研究发现,出现了该情况的最大问题在于服务器的磁盘IO出现了瓶颈,频繁的写操作,导致写入操作超时,于是我们就对证下药,解决磁盘IO的压力,由于之前图片是存储在数据库表中的,在占用了数据库的大量空间的同时又减慢了客户端访问服务器的速度。有些时候不是所有的事情软件都能解决的,我们对硬件进行一个升级,同时改变一下系统的存储策略,把图片单独存储,解决服务器的IO瓶颈,减轻服务器写操作的压力。
4、遇到的问题
上图的方案貌似是可以解决问题,但是问题来了,如果更好的把分中心的数据同步到总服务器上(主要指图片服务器),目前图片保存的格式是:年月日文件夹/相机IP文件夹/照片编号.JPG 如何在保证了可以快速的同步图片至总服务器的同时,又可以保证图片数据的完整性,不会在同步过程中出现丢失或其它问题,曾经考虑过利用数据库中记录图片的路径,远程访问图片信息,这样倒省去了同步图片的麻烦,可是效率过低,而且对网络要求过高;另外想到的一种方法就是利用FTP进行图片同步,自己写同步代码,定制同步机制。
5、求助
求助各位大神们,有遇到过类似问题或是有这方面经验的,可以提一下自己的建议和看法,对于目前遇到的情况,不止是同步,包括这个解决方案的可行性给出一些意见和建议,在你们的不吝指教中,小弟或许会找到一些答案。
1、对上上述的方案,可否有更好的解决方案;
2、对于不同的方案,可否有更好的、详细的解决办法;
3、对于上述方案,关于存储和同步是否有更好的意见和建议;
小弟在这里感谢各们园子里面的兄弟姐妹了,希望你们踊跃发言,多一个人多一份力量,看到了就说上两句,留个言吧。小弟在线等留言,感谢了!