写点什么

Week 14 学习总结

用户头像
卧石漾溪
关注
发布于: 2020 年 09 月 14 日

 

本周主要介绍了大数据平台、物联网、区块链相关的知识。

 

1       大数据平台

1.1     大数据技术应用的挑战

大数据计算的海量分布式计算方案,必然导致计算速度不是很快,即使在一个规模不太

大的数据集上进行一次简单计算,MapReduce 也可能需要几分钟,Spark 快一点,也至少需要数秒的时间。

 

互联网产品处理用户请求,通常需要毫秒级的响应,也就是说,要在1秒内完成计算,

大数据计算必然不能实现这样的响应要求。但是互联网应用又需要使用大数据,实现统

计分析、数据挖掘、关联推荐、用户画像等一系列功能。

       大数据平台可以用来解决这个问题!

      

1.2     大数据平台架构





1.2.1     数据采集与导入

将应用程序产生的数据和日志等同步到大数据系统中,由于数据源不同,这里的数据同

步系统实际上是多个相关系统的组合。

数据库同步通常用Sqoop,日志同步可以选择Flume,打点采集的数据经过格式化转换后通过Kafka等消息队列进行传递。

不同的数据源产生的数据质量可能差别很大,数据库中的数据也许可以直接导入大数据

系统就可以使用了,而日志和爬虫产生的数据就需要进行大量的清洗、转化处理才能有效使用。

 

1.2.2     数据处理

这部分是大数据存储与计算的核心,数据同步系统导入的数据存储在HDFS。

MapReduce、Hive、Spark 等计算任务读取 HDFS上的数据进行计算,再将计算结果写入 HDFS。

MapReduce、Hive、Spark等进行的计算处理被称作是离线计算,HDFS 存储的数据被

称为离线数据。在大数据系统上进行的离线计算通常针对(某一方面的)全体数据,比

如针对历史上所有订单进行商品的关联性挖掘,这时候数据规模非常大,需要较长的运行时间,这类计算就是离线计算。

除了离线计算,还有一些场景,数据规模也比较大,但是要求处理的时间却比较短。比

如淘宝要统计每秒产生的订单数,以便进行监控和宣传。这种场景被称为大数据流式计

算,通常用Storm、Spark Steaming 等流式大数据引擎来完成,可以在秒级甚至毫秒级时间内完成计算。

 

1.2.3     数据输入与展示

大数据计算产生的数据还是写入到 HDFS 中,但应用程序不可能到HDFS中读取数据,

所以必须要将HDFS 中的数据导出到数据库中。数据同步导出相对比较容易,计算产生的数据都比较规范,稍作处理就可以用 Sqoop之类的系统导出到数据库。

这时,应用程序就可以直接访问数据库中的数据,实时展示给用户,比如展示给用户关联推荐的商品。淘宝卖家的量子魔方之类的产品,其数据都来自大数据计算产生。

除了给用户访问提供数据,大数据还需要给运营和决策层提供各种统计报告,这些数据

也写入数据库,被相应的后台运营和管理人员访问,查看数据报表,看业务是否正常。

1.3     大数据平台Lamda架构原型





1.4     Sqoop导入导出数据库数据





1.5     Canal实时导入MySQL数据





1.6     Flume从日志导入数据





-Flume级联部署:





-Flume分布式部署:





1.7     前端埋点采集数据

目前常见的前端埋点技术,有三类

a.在某个控件操作发生时通过预先写好的代码来发数据的代码埋点(手动埋点)

b.通过可视化界面配置控件操作与事件发生关系的可视化埋点(框架式埋点、无痕埋点)

c.先收集所有数据再在后端筛选需要分析的对象的“无埋点”(自动埋点、全埋点)。

 

-一个常见的Web应用数据采集流程:





1.8     网络爬虫收集外部数据





1.9     大数据平台案例

1.9.1     淘宝大数据平台





-导入导出数据:





1.9.2     美团大数据平台





1.9.3     滴滴实时大数据平台





2       物联网

物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。

物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。

物联网把所有物品通过信息传感设备与互联网连接起来,进行信息交换,即物物相息,以实现智能化识别和管理。

 

2.1     物联网的主要技术

在物联网应用中有四项关键技术为物联网开辟出极为广阔的应用前景:

 

1、传感器技术:这也是计算机应用中的关键技术。大家都知道,到目前为止绝大部分计算机处理的都是数字信号。自从有计算机以来就需要传感器把模拟信号转换成数字信号计算机才能处理。

 

2、RFID标签:也是一种传感器技术,RFID技术是融合了无线射频技术和嵌入式技术为一体的综合技术,RFID在自动识别、物品物流管理有着广阔的应用前景,这也是为什么“物流”这个词总是与“物联网”同时出现。

 

3、纳米技术:纳米技术(nanotechnology)是用单个原子、分子制造物质的科学技术,研究结构尺寸在1至100纳米范围内材料的性质和应用。纳米传感器非常小,因此可以从数百万个不同的点采集信息。随后,外部设备可以对数据进行整合,生成极其详细的图像,从而显示光、振动、电流、磁场、化学浓度和其他环境因素最细微的变化。由纳米技术延伸出来的纳米物联网可能是物联网领域下一个重大进展。

 

4、嵌入式系统技术:是综合了计算机软硬件、传感器技术、集成电路技术、电子应用技术为一体的复杂技术。经过几十年的演变,以嵌入式系统为特征的智能终端产品随处可见;小到人们身边的MP3,大到航天航空的卫星系统。嵌入式系统正在改变着人们的生活,推动着工业生产以及国防工业的发展。如果把物联网用人体做一个简单比喻,传感器相当于人的眼睛、鼻子、皮肤等感官,网络就是神经系统用来传递信息,嵌入式系统则是人的大脑,在接收到信息后要进行分类处理。这个例子很形象的描述了传感器、嵌入式系统在物联网中的位置与作用。

 

2.2     物联网的应用场景

物联网用途十分广泛,如图遍及交通运输、环境保护、公共设施、医疗、制造业、商业金融、家庭等多个行业。





物联网把新一代IT技术充分运用在各行各业之中,具体地说,就是把感应器嵌入和装备到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道等各种物体中,然后将“物联网”与现有的互联网整合起来,实现人类社会与物理系统的整合,在这个整合的网络当中,存在能力超级强大的中心计算机群,能够对整合网络内的人员、机器、设备和基础设施实施实时的管理和控制,在此基础上,人类可以以更加精细和动态的方式管理生产和生活,达到“智慧”状态,提高资源利用率和生产力水平,改善人与自然间的关系。

2.3     边缘计算在物联网中的应用

物联网是实现行业数字化转型的重要手段,并将催生新的产业生态和商业模式。而借助于边缘计算可以提升物联网的智能化,促使物联网在各个垂直行业落地生根。

边缘计算起源于传媒领域,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。边缘计算处于物理实体和工业连接之间,或处于物理实体的顶端。而云端计算,仍然可以访问边缘计算的历史数据。





边缘计算在物联网中应用的领域非常广泛,特别适合具有低时延、高带宽、高可靠、海量连接、 异构汇聚和本地安全隐私保护等特殊业务要求的应用场景,下图展示了边缘计算在智能交通、智慧城市和智能家居等行业或领域的应用情况:





2.4     物联网平台架构





2.5     物联网大数据处理





3       区块链

区块链,学术解释是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。

其本质是一个去中心化的数据库,一个使用密码学方法相关联产生的数据块,每一个数据块中包含了一次交易的信息,用于验证其信息的有效性和生成下一个区块。







3.1     区块链技术的特点







3.2     数字货币的挑战

数字货币的发行不是问题,问题是如何保证数字货币安全,获得信任:

.如何相信数字货币是有价值的,即发行安全

.如何相信货币交易是安全的。

比特币的解决方案:

·构建一个无中心、去信任的交易系统。

·       《比特币:一个点对点的电子现金系统》

 

3.3     比特币

比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生 [1]  。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。

与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。

P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。

 

3.3.1     交易

记账者可以使用发起者的公钥对签名进行验证,保证交易是真正发起者提交的,而不是其他人伪造的交易,这样保证了交易的安全。





3.3.2     比特币中的区块链使用

将交易放入区块,将区块构成单向链表,即区块链,以避免双花。





3.3.3     工作量证明

比特币要求计算出来的区块 Hash值必须具有一定的难度,比如Hash值的前几位必须

是0。具体做法是在区块头部引入一个随机数nonce值,记账者通过修改这个nonce值,不断碰撞计算区块Hash值,直到算出的Hash值满足难度要求。

工作量证明可以极大增加区块链伪造的成本,除非发动51%攻击。

 

3.3.4     矿工

比特币系统为每个计算出区块Hash 的记账者赠送一定数量的比特币。

这个赠送不是交易,而是凭空从系统中产生的,这其实就是比特币的发行机制。

当“矿工们”为了争夺比特币,争相加入“挖矿”大军时,比特币区块链就变成一个分布式账本了。

       矿工为比特币的发行支付了对价,某种程度保证了比特币的价值。

 

3.4     以太坊

Ethereum(以太坊)是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。

 

以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。

Ethereum可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理,合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。

 

以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。

具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。

上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。

合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。

合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。

 

-智能合约:

以太坊网络上运行程序就称之为智能合约, 它和其他的程序一样,也是代码和数据(状态)的集合。

智能合约(Smart Contract)和人工智能(Artificial Intelligence )的智能没有关系,智能合约最早尼克萨博在 95 年就提出,它的概念很简单,就是将法律条文写成可执行代码。让法律条文的执行中立化,这个理念和区块链上的程序可以不被篡改、不被干预(只有有人触发交易,它将自动执行)的执行不谋而合,因此区块链引入了这个概念。

在前面介绍比特币脚本的时候,我们讲到过比特币的交易也是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,而以太坊程序则是“图灵完备的”,因此理论上让我们可以来编写可以做任何事情的程序。

智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。

 

-在以太坊上发行自己的数字货币是很简单的:





3.5     区块链的分类

根据去中心化程度的不同,分化出3种不同应用场景下的区块链:

公有链:全网公开,广大用户可参与。

联盟链:用于多个机构之间,允许授权的节点加入网络,可根据权限查询或修改信息。

私有链:所有网络中的节点都掌握在一家机构手中。

 

联盟链和私有链也统称为许可链,公有链称为非许可链。

3.5.1    公有链

公有链是指全世界任何人都可以随时进入到系统中读取数据、发送可确认交易、竞争记账的区块链。

公有链通常被认为是“完全去中心化”的,因为没有任何个人或者机构可以控制或篡改其中数据的读写。

公有链中,任何节点无须任何许可便可随时加入或脱离网络。

比特币是世界上第一个公有链

公有链一般会通过代币机制(Token)来鼓励参与者竞争记账,来确保数据的安全性。从应用上说,区块链公有链包括比特币、以太坊、超级账本、大多数山寨币以及智能合约,其中区块链公有链的始祖是比特币区块链。

目前,大多数以太坊项目都依靠以太坊作为公有链,以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 以太坊是可编程的区块链 ,允许用户按照自己的意愿创建复杂的操作,可以作为多种类型去中心化区块链应用的平台。

 

除金融类应用外,任何对信任、安全和持久性要求较高的应用场景,比如资产注册、投票、管理和物联网等等3.0时代应用,都会大规模地受到以太坊平台影响。

 

公链当前面临的最大问题是安全和效率的矛盾,即如何在去中心化程度和高TPS两者之间取得平衡,最典型的代表如Ethereum和EOS之争。

 

3.5.2    联盟链

区块链的应用场景除了面向普通用户(to customer),还有一类,就是面向企业用户(to business)。

数量较少的企业之间需要进行交易、合作等商业活动,但是彼此之间并不能完全信任,又不愿意选择某一家做中心(老大),同时也不愿意把彼此交易的信息对外公开。

这种情况下就选择一种非公开的区块链技术,参与区块记录的就是这些企业,他们以授权的方式加入这个专有的区块链网络,他们之间的交易信息只在彼此之间传输,并共同记录到区块链中。

通过这种方式,这些企业可以平等进行合作,不需要必须信任某个中心,就可以完成交易、合作。

 

-联盟链的优缺点:

相比于公有链,联盟链在效率和灵活性上更有优势:

-交易成本更低,交易只需被几个受信的高算力节点验证就可以,无需全网确认。

-节点规模小,可以很好地连接,故障可以迅速通过人工干预来修复。

-可以使用确定型的共识算法并缩短区块生成时间,从而更快完成交易。

-读写权限可以控制,从而提供更好的隐私保护。

-联盟链的参与者可以更容易地达成一致来更新区块链的规则、还原交易、修改余额等。

相比于公有链,联盟链去中心化程度不够。

 

-超级账本Hyperledger:

目前联盟链比较有影响力的技术解决方案是Hyperledger,这是一个由IBM发起,Linux基金会运作的开源软件。其主要架构如下图:





Hyperledger里主要有会员服务(membership service)、排序服务(ordering service)、Peer节点三种服务器角色。

 

1.会员服务主要负责其他节点的授权认证(CA),联盟链由加盟的企业的服务器进行区块打包与存储,这些服务器必须经过授权认证才能被接纳到联盟链网络中。

2.排序服务接受交易请求并打包生成区块。

3.Peer节点上有两种主要服务:背书(endorser)和记账(ledger),背书负责对客户端应用提交的每笔交易进行签名认证,记账则是将排序节点打包好的区块记录下来。

不同于公链,联盟链不用担心有恶意节点伪造记录,所以不需要耗资巨大的工作量证明,而是通过一组排序服务器进行交易排序与打包。因为要管理联盟,所以还额外加入了会员服务。此外,由于商业活动的复杂性,所以Hyperledger提供智能合约(chaincode)服务,即由交易请求或者外部条件触发新的交易,比如买家的确认收货交易会触发将保证金打款给卖家的交易。

相比于公链,联盟链有更加切实的场景需求,所以很多企业,都对联盟链表现出极大的兴趣。尤其是金融和跨国交易领域,对联盟链的需求非常强烈。

 

3.5.3    私有链

私有链指的是对单独的个人或实体开放。

特点:

1、交易速度非常之快一个私有链的交易速度可以比任何其他的区块链都快,甚至接近了并不是一个区块链的常规数据库的速度。这是因为就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。

2、给隐私更好的保障私有链使得在那个区块链上的数据隐私政策像在另一个数据库中似的完全一致;不用处理访问权限和使用所有的老办法,但至少说,这个数据不会公开地被拥有网络连接的任何人获得。

3、交易成本大幅降低甚至为零私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,那么他们就不再需要为工作而收取费用。

 

用户头像

卧石漾溪

关注

还未添加个人签名 2020.05.04 加入

还未添加个人简介

评论

发布
暂无评论
Week 14 学习总结