{eval=Array;=+count(Array);}
我是做JAVA后台开发的,目前为止最多处理过每天600万左右的数据!数据不算特别多,但是也算是经历过焦头烂额,下面浅谈下自己和团队怎么做的?
后台架构:
前置部门:负责接收别的公司推过来的数据,因为每天的数据量较大,且分布不均,使用十分钟推送一次报文的方式,使用batch框架进行数据落地,把落地成功的数据某个字段返回给调用端,让调用端验证是否已经全部落地成功的,保证数据的一致性!
核心处理:使用了springcloud作为微服务架构,使用feign进行客户端的负载均衡,使用分库分表的数据架构,分库分表数据库中间件为公司自己开发,通过字段no采用hash的方式分布到8个数据库,每个库128张表,为了数据不重复,满足幂等性,会使用redis进行加锁操作,因为redis是单线程处理,保证数据不会重复存储!
遇到的问题:
①,数据没落地:虽然使用调用端和服务端确认的方法保证一致性,但是因为网络延迟,服务宕机等影响,会发生数据重复,或者数据没落地等,首先在做好接口,数据幂等性的同时,保证服务的稳定性,通过统计等方式对没有落地的数据重新保存!
②,日志爆炸:因为要求对接口调用的入参,出参,中间数据都打印日志,一个月的硬盘竟然占用了450g,运维直接打电话来问咋回事?因为入参,出参通常作为数据开源,数据返回证明,只能通过压缩,动态删除前一个月日志的方式留存日志!
③,缓存失效:在使用redis的过程中,经常遇到redis服务挂了,延迟等情况,可能会导致数据丢失,这种情况尤为严重,多数时间只能通过后期人为干预,重新拉取前置数据进行数据保存,同时缓存数据一定要使用持久化,保证数据丢失时,损失最低化!
缓存爆炸:期间遇到一个问题,运维打电话来说数据超过了一千万,问咋回事,查代码才知道,很多数据没设置过期时间,导致数据积压,简直就是失败的经历!
④,数据库:通过分库分表的方式,我们的数据库还算稳定,高峰的时候也没超过数据库性能监控的阈值,最重要的是怕数据库中间件宕机引起数据丢失,所以中间件通常使用集群的方式进行部署,同时,分库分表对全局唯一ID的产生也有需求,使用的是taobao的一套sequnce生成组件,避免使用分库分表字段(no)作为查询条件,避免使用连接查询(可以使用no进行同库的连接),统计采用别的方式!
⑤,消息中间件堵塞:有时候消息中间件延迟,导致数据积压几十万,上百万,怕怕的有木有?保证中间件稳定的情况下,最重要的添加报警邮件,及时处理积压问题(50%的概率是重启,哈哈)!
其实还遇到了很多坑,一时半会想不起,还有的话再补充吧,你有焦头烂额的情况吗?欢迎评论,更多的技术分享,敬请关注。。。
曾经在以前的公司做过IT,凡事跟电脑相关的都要做,也就是俗话说的IT民工吧。
当时公司里有一个数据库会接收到的测试数据大约为一个月100万条左右,然后要通过程序每五分钟左右抓取一下这个数据库。
说实话,当时压力蛮大的,因为程序涉及到生产不能停,频繁的读取这么多数量的数据库会导致程序很卡,一卡使用这个程序的人就会停下生产的,所以我在方面也研究了一些方法 注:当时使用的服务器为windows2008r2,数据库为sql 2008版本,程序为php语言编写。
我总结一下当时的方法:
1、每个月都会找个时间重启服务器,释放CPU和内存资源
2、一定要分开文件服务器和数据库服务器为同一台,因为文件服务器占用带宽资源比较严重
3、防止数据库锁死,编写程序时已经避免同时使用更新语句
4、使用任务管理把相应的数据进行后台处理,如先把数据写到a表里,再通过任务后台让它跟b表进行匹配
5、编写sql语句时,尽量精确匹配,不要模糊匹配,可以通过数据库管理器来查询所用的时间是多少
6、关于数据物理安全的小建议,一定要给系统盘和数据盘,做好raid,经常观察硬盘是否亮红灯报警,要及时更换,二,使用备份软件对数据进行定时备份,在空闲的时间点备份,不会影响数据库使用的效率,比如吃饭的点
系统无法启动时,请勿随意重装系统,可以试一下最后一次正确配置启动
总结:实际情况要有灵活的方法,也就是数据运行的瓶颈在哪里,就对哪里进行优化。
老牛之浅谈,希望能帮助到你。
从事程序员工作以来,历时三年,呆过两个公司,前一个公司处于传统国企制造型企业互联网化的进程中,后者处于互联网公司成熟发展期,作为新业务型的研发人员,或多或少都经历了一些数据量,在制造型企业处理过的最多量级的数据应该是用户的注册登录信息,在之后的互联网企业处理过最多量级的数据应该是浏览日志的实时统计监控。下面就简单说说这两个业务场景以及对应的处理方式和数据量级。
在传统的制造型企业,我们团队负责公司对外业务的统一注册和认证,所有对外应用、网站提供的注册、登录信息都需要调用我们团队的相关接口完全相关流程,注册的用户信息也以我们团队的用户数据为准,统一注册和认证服务上线运行近两年的时间里,至我离职时,注册用户200万,登录均耗时40ms,获取账户信息均耗时10ms。处理方式也简单,就是应用普遍采用的mysql+redis,账户相关的认证信息都普遍走分布式缓存,mysql是主从结构,redis采用集群模式+哨兵集群的处理方式。整个应用是最初的架构是spring mvc+dubbo的分布式架构,对外提供restful风格的接口服务,之后版本升级为spring boot+eureka+consul的微服务架构,对外兼容提供restful风格的接口之外,还提供基于Oauth2.0的第三方登录服务,包括QQ、微信、百度等第三方应用。数据处理的量级按照数据库来说应该是百万级,或许不太准备,对这个量级的概念理解不深,对这方面有深入研究的同学可以留言科普哈。
在现在的互联网企业,处理数据量级最多的应该是我目前所做的流量实时监控,今天才压测完,记忆还比较清晰,采用的处理方式是kafka+storm+redis,处理的量级是1.2亿/10分钟,启用了10台服务器+4核CPU+2G内存+64G磁盘部署的storm集群,64个线程跑storm拓扑,统计分析的结果保存在redis,通过其他方式进行实时展示。
数据是有价值的,数据的价值在于我们的应用,当看到我们自己开发的项目,可以实时处理亿级的数据,真心感觉收获满满。虽然过程经历很多坑,但是只要出结果,再多的辛苦、努力都感觉值得,做自己喜欢的事情,再累都有劲儿。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
你处理过的最大的数据量是多少?你是如何处理的?
答,我使用photoshop的照片拼接功能,拍摄过很多超大型的照片,有的是超大的场景,有的是几十人,几百人的大合照,照片的像素轻松就能过亿,有时达到几亿,甚至十几亿,比如我曾用3600万像素的索尼A7R拍过一张超大的风光人像摄影,此照片是用几十张局部照片拼接而成的,照片上的人物占比虽然很小,但是放到原大以后,仍然非常清晰,因为她本人就占据了一张照片的大小,拼接后的照片,像素达到了十几亿,M数为上千M,照片完成后在我的台式电脑上无法显示,要把边长各缩小到原来的一半,才能勉强显示,要把照片缩小到N多次以后才能在网络上使用,下面就是这张照片,为了能在这里发表,再次把照片缩小到了10M以下,在其后的几张照片也是原片超级大的,不过没有这第一张大
我们日常工作中,经常要使用excel做复杂的数据运算,有时候甚至要处理几亿,几十亿,乃至几百亿的数据量。这时候如果你再用excel去做,电脑就会卡顿到你怀疑人生,因此数据库的重要性便显而易见。
众所周知,在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。所以,一般我们用中小型数据库MySQL,处理数据就完全够用。
不过,我们大部分人都是普通的业务人员,对数据库这些IT知识,可以说是一窍不通,事情也就变得棘手起来了。
不过,别担心,有一款软件可以完美解决这个问题,我现在就在用着它。
这款软件叫云表企业应用平台(以下简称云表),它是国内最早的无代码开发平台,创立至今,已有10余年历史。
像ucloud、中冶、中铁、南方物流、许继电气、恒逸石化、北控水务等20万+企事业单位或机构,都在使用它。
其内嵌了MySQL数据库,并在不断地升级和优化中,当然你也可以根据文档步骤,将数据库换成sql server、Oracle等。
除了可以用来处理数据透视、数据分析等复杂的数据运算,它还能用来做更多事情。
比如权限设置,流程审批,多人协同,工作流,闹钟提醒,消息推送,自定义报表模板打印,蓝牙打印,H5页面生成,网站,外接数据源,小程序,微商城,项目预警,工程日志计划,与电子秤、地磅、SAP、浪潮、金蝶、用友、企业微信、钉钉、高拍仪、PDA等外部系统进行集成封装.......
PC端弄好了,自动生成移动端app。
通过云表平台,即使你是0基础的IT小白,也可以在和excel很像的界面,拖拉拽,以画表格的形式,搭建出个性化的管理软件。
如WMS、ERP、OA、MES、SRM、进销存、供应链管理、行政管理,只要是你想要的系统或软件,都可以在这上面开发出来。
全程不用写一行代码,也不用学习Java,C#,python等高级语言或VBA等辅助开发工具。
只要你懂中文,会业务即可。
而且,开发出来的软件或系统,功能是可以随需而改的,任何时候进行二次开发都可以。
因时间原因,暂时分享到这,软件的免费获取方式在此奉上:
方法一:
1.头条app搜索“云表平台”。
2.进入官网之后,在右上角三条杠处,找到“登录”。(或者进去后直接点击“免费注册”)
3.信息填报完毕,即可在“管理控制台”免费获取。
方法二:
点击我的头像,进入个人主页后,在下方找到“免费下载”。
如果你想了解更多功能,可以在下方评论区写下你的想法,与我交流探讨噢~
我是在IT上班的,目前每天大概要处理2TB以上的数据,大概10多亿条,基本上使用Hadoop+Hive+Spark进行处理。
这些数据是从FTP下载的,采集协议和处理过程自己写,基本上每一条数据都会过一到两遍才入库。
谢谢邀请,我工作期间还是打算盘的计算统计时代,直到八十年代初才从香港进了几个简易电子计祘器,只有加减乘除,平方开方,百分比。直到2000年前后,工厂才装了自己的计算中心,作财务计划统计生产费用,都比较简单,在高速发展时期就退休啦!
最大数据量项目是零售行业的SAAS的平台,各种指标,也就1亿多吧,不过处理起来思路都类似,就是水平扩展,加大处理速度,数据按需预处理等等