软件工程大数据技术是干什么的(大数据最主要的三个工程问题)

随着信息技术的快速发展,人们所能采集、处理、应用的数据量成指数级增长,因此人们也进入了大数据时代。时代特征的改变,为我们的日常生活带来了很多变化,同时也给工程师们带来了很多新的机遇和挑战。

比如一码通、行程卡等技术,可以让之前无法实现的社会治理目标成为简单的数据查询与处理。而同时,如果技术不到家的话,那就可能出现像西安发生的一码通崩溃,导致社会大规模的混乱等现象。

那么,从工程上来讲,大数据技术都需要解决哪些实际问题呢?我们下面一起来看一看。

第一、大规模异构数据存储与处理

大规模异构数据存储与处理是大数据技术最关键的应用之一,大数据,顾名思义,最基本的特征就是数据量巨大,远超平时所用的结构化数据库所能处理的极限。同时数据也具有多样性,除了结构化数据以外,还有各类音频、视频、文本、图像、矢量数据等多种不同类型的数据。

因此,如果快速存取、处理、应用这些数据,就成为工程上一个关键的问题。目前多数公司的数据量早已超过了TB级,PB级,向EB级ZB级迈进。而很多优秀的互联网公司,都已经提供了多种优秀的解决方案,从而使大规模数据存取与使用成为了现实。

像谷歌,早期就出台了基于GFS、MapReduce和BigTable三种系统,而随后开源的HDFS、Hadoop、Hive/Hbase等架构也大行其道。此后,谷歌又推出了Caffeine、Pregel、Dremel这三种新的技术框架,在PB级数据上达到了秒级的处理效果。

同时,国内的各大互联网公司也基于自身的技术,或对开源系统进行改良,或自己研发新的技术,也都成功地解决了这些问题。但是很多小公司因为自己技术实力和数据量的原因,很多还只能做一些计算机辅助办公时代的传统数据库架构。因此,了解大规模数据存取处理的基本技术,是从传统程序向大数据程序转型的一个重要基础。

软件工程大数据技术是干什么的(大数据最主要的三个工程问题)(1)

第二、大规模实时并发处理

大数据工程的另一个重大特征就是并发用户的处理。像“双十一”已经达到了十几亿用户同时在线抢购的程度。

在这种需求的牵引之下,业界发展出了很多为解决高并发实时处理的技术。通常会包括负载均衡、使用缓存、将数据存储在内存数据库、读写分离、优化数据存储、将数据库中的活跃数据分离出来、使用分布式技术、微服务技术、增加消息队列、延迟修改、业务拆分等。

典型的例如负载均衡用到的Nginx、内存数据库Redis、消息队列Kafka、微服务套件SpringCloud。都是常用的解决实时高并发系统问题的工具。

但是万变不离其宗,解决高并发问题的两个主要手段其实就是分治处理和延长处理链。熟悉掌握了这两种方法。解决高并发问题就很容易了。

第三、流式数据处理

区别于原有的静态数据处理,流式处理是大数据应用下的一个重要场景。那么何谓流式处理呢?简单来说,在流式数据处理中,数据是动态的,在数据连续到达的过程中,截取其中一小段数据来进行处理。这就类似于几个美女逛商场,她们逛商场的这个行为是连续的,但是她们突然看了某个商品,这是连续的数据中的一小段。例如说售货员看到美女瞟了一眼货架上的口红,那么她就赶紧过去介绍说这款口红多适合你,涂上必然具有达Q拉伯爵的效果云云。这个就是实时流式数据处理。如果先把美女的运作都监控起来,等晚上回去看视频,发现美女明显对某个产品感兴趣,再去处理,那就来不及了。

流式处理另外一个特征就是静态数据作用不大。例如说微信的在线人数,问这个时候在线多少人是没多大意义的,因为转眼就变了。有意义的是一些数学上的统计信息。例如说最大在线人数,各时段在线人数的数学期望等等。

目前流式处理涉及的主要工具包括Storm、Spark Streaming、Flink等。

随着互联网 的持续发展,掌握新的技术对很多程序员来说,是发展自己职业生涯,提高薪酬待遇的有效路径。因此,掌握大数据技术的主要应用方向和相关工具,对于程序员们来讲,是非常重要的事情。毕竟,持续学习是这个行业最基本的一个特点。

活在信息时代的其它文章:

程序员的三重境界,看看你在哪一重

程序员不可不知的几种软件项目,看看你的项目属于哪一种?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页