文档结构  
翻译进度:73%     翻译赏金:0 元 (?)    ¥ 我要打赏

什么是物联网?

物联网(IOT)已从新的可移动技术如公共WiFi接入、移动设备、RFID等技术的扩散、融合发展而来。而微机电系统,和最新的计算技术,如微服务,云计算,当然,增加了人类移动技术的社会消费。这种融合允许对非结构化机器生成的数据进行见解性的分析,将推动着未来。

“物联网”中的“物”,可能意味着你身边经常使用的东西–一个起搏器,内置传感器的汽车,带有生物芯片收发器的农场动物,用于追踪在主题公园的孩子和父母的追踪带,甚至是在你房子里的灯泡。

第 1 段(可获 1.41 积分)

Kevin Ashton,麻省理工学院汽车识别中心的联合创始人和执行董事,第一次在他1999年向宝洁公司做的一个简报中使用了一术语“物联网”.。他是这样描述物联网的:
“今天的计算机,因此,互联网,几乎完全依赖人类来获取信息。几乎所有,第一次被人类捕捉和创造的大约50千兆字节的网络可用数据(请注意,这是在1999年)是>通过打字,按下录音键,拍摄数码照片或扫描条码得到的。

问题是,人们的时间、注意力和准确性都有限,这意味着他们不善于捕捉现实世界中的数据。如果我们有计算机,知道一切将要知道的东西---使用它们在没有我们的任何帮助下收集的数据---我们将能够跟踪和计数一切东西,大大减少浪费,损失和花费。我们会知道什么时候这些东西需要更换,修理或用于回忆,以及他们是否是新的或者他们最好的的时刻是在过去。

第 2 段(可获 2.21 积分)

在当今时代,这种漂亮的东西更多的被翻译为一个任何东西都可以连接到互联网和沟通的以智能为时尚的世界。它描述了未来的日常物体将通过有线或无线网络连接,使用互联网协议(IP)连接到互联网,并能够识别他们自己和其他设备。这使得物联网变得更为重要,因为一个物体能够数字化地代表自己,成为了一个更重要、更有意义的对象。

这是神奇的; 也有一个问题?

第 3 段(可获 1.11 积分)

当物体能够感知环境并进行交流时,它们就成为了理解复杂的事物和帮助系统对其快速响应的工具.。但这也带来了一些巨大的挑战:通过网络连接的对象,产生了庞大的流向计算机进行分析的数据。在某些情况下,这些分析都需要实时完成。例如:通过感知顾客的购买偏好和实时反应在超市的特定地点和特定时间提供动态定价。另一个例子:植入在一个重症心脏病人的心脏监测器中的传感器,每秒钟发送心脏功能相关的的原始数据,送入外部系统进行统计审查,并帮助设计预防措施。

第 4 段(可获 1.53 积分)

处理这样数据量的挑战:

  • 获取并实时跟上大量的数据。这可能是几十万或数百万的设备,每一个周期性地更新,每隔几秒钟响应一次。每个系统包含100GB的数据量。
  • 异常检测-识别和验证发送到系统的数据的正确性。
  • 对某个情况实时分析,汇总,推断和反应。例如,一架喷气发动机降落–这需要立即采取行动。
  • 用延迟极其低的方式访问数据。
  • 报告-按需运行或用计划性的批处理过程来生成报告。
第 5 段(可获 1.33 积分)

带有hazelcast的物联网

Hazelcast与整个物联网有关系吗?嗯,答案是hazelcast提供工具和手段用于建构物联网应用的基础设施。但在我们进入hazelcast组件的螺母和螺栓之前,首先让我们完整的了解物联网的分布图。
通用的物联网系统方案为:制造商>网关>处理>存储(进一步处理)
制造商

  • 一般传感器,设备
  • 他们需要连接到系统的其余部分
  • 使用的协议,如HTTP,IP,MQTT,AMQP
  • 来自传感器的个体数据事件的时间戳。这些通常是以流的形式,因此它有时要求时序数据存储
第 6 段(可获 1.33 积分)

网关

  • 核心特征
    • 从传感器摄取事件,因此必须了解设备的协议
    • 必须实时吸收大数据量
  • 附加功能
    • 过滤“坏”数据(损坏的传感器)
    • 丰富数据,添加元数据,调整数据
    • 核实数据标识(这些是我的数据吗?)
    • 检测错误(检测传感器发送事件,发送失败并没有得到应答信号,再次发送事件)
      处理

处理

  • 这是物联网解决方案的核心
  • 来自制造商入口的数据要求在多种情况下实时处理
  • 编写在处理器API顶层的程序用于执行清洗、聚合、合并、实时分析等







    这是物联网解决方案的核心

    在处理器API上编写的程序用于执行清洗、聚合、合并、实时分析等。
第 7 段(可获 1.25 积分)

存储

  • 处理后的数据存储起来用于演示(在仪表板)或进一步处理,如数据分析师对数据批量分析,机器学习,索引等。
  • 关键要求是存储大量数据并提供高吞吐量。在一般情况下,数据存储在大的分布式数据库中,并使用批处理工具

带有的魔力Hazelcas,可以在构建物联网的基础设备中起到举足轻重的作用。它有在军械库的组成部分,便于处理和实时存储海量数据。如果你不知道Hazelcast,让我们看一看一些在Hazelcast体系结构中重要的组成部分:
 

第 8 段(可获 1.34 积分)
  • Data Processing
    • Distributed Events, ExecutionCallback
    • EntryProcessor
    • ExecutorService
    • Topic, Queue
  • Data Storage
    • Map, Queue, Set, List, JCache
    • RingBuffer, ReliableTopic

Use Case

Time to get practical with a real life use case. Consider a cloud based IoT system where a cluster manages 100,000s of objects coming from buildings using building automation solutions. This is a critical cloud-based component of overall platform strategy rolling out on three continents.

The house-automation (not home, but house) system generates data from components such as sensors, like light switches, temperature sensors, etc… and is collected in a single global cloud cluster. This data can then further be managed using a web interface. A local on-site system connects the sensors with the cloud and every single element in the system becomes addressable using a unique (REST) URL which routes requests / commands to the right device (whatever this device will look like).

第 9 段(可获 1.8 积分)

Some of the basic requirements to process and store this data:

  • Each sensor has its own stream of data going into the IoT system
  • 100,000s of such sensors
  • Sensor’s data must be collected in a time-series order so that various timestamp bound operations can be performed
  • Every time sliced data point must be processed as soon as it enters the system
  • Concurrent jobs to execute for each of the sensor’s data stream collected over a period of time and/or for each sensor data point coming into the system

Hazelcast Solution

Since the data needs to be stored in time-series order, usual data structures like Map, Queue or JCache are not good choice. Hazelcast offers RingBuffer as a distributed data structure that allows to store data in a ring like structure. Ring Buffers can be thought of as circular arrays with a fixed capacity. See a representation:

第 10 段(可获 1.88 积分)

Note: visit http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#ringbuffer for more details on RingBuffer

Use Hazelcast RingBuffer data structure to store all data points streaming in for each of the sensor i.e. each sensor has its own dedicated RingBuffer. Since there is no limitation on the number of Ring-Buffers allowed in Hazelcast cluster, you can have millions of Ring Buffers.

Now, let’s consider 3 possible ways of processing sensor data:

  1. Real-time processing: when a sensor data entry arrives at RingBuffer – fire event and run a job at every data entry
  2. Scheduled processing, near real-time: for a pre-configured number of events in the RingBuffer, we trigger a job, do some aggregation, dump the events to a data store and clear the RingBuffer
  3. Time-series data processing: start a job that aggregates the events which were added in last 3 minutes. As soon as a new data entry arrives and a RingBuffer is created for that sensor, a job is scheduled for this RingBuffer that will run every 3 minutes. This job will do the aggregation and clean up, regardless of the number of subsequent entries added for that sensor.
第 11 段(可获 2.43 积分)

案例1:

使用executioncallback RingBuffe做一些成功的补充。比如ExecutionCallback:http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#callback-when-task-completes


ExecutionCallback相似的原则将适用于对RingBuffer。见下面的一个例子:

HazelcastInstance client = HazelcastClient.newHazelcastClient();
Ringbuffer ringbuffer = client.getRingbuffer("ring-buffer");
ringbuffer.addAsync("Some_Data", OverflowPolicy.OVERWRITE).andThen(new ExecutionCallback() {
        public void onResponse(Object o) {
<Your execution code when added successfully>                
        }

        public void onFailure(Throwable throwable) {
    <Your execution code when adding failed>
        }
    });
第 12 段(可获 0.5 积分)

案例二:

这是一个伪代码用于演示RingBuffer是如何存储自不同时间间隔的传感器的数据点,以及如何将这些数据点汇总。

无限循环一次检查10个数据项,汇总和自行重复。这只是一个伪代码,因此使用的数字是用来假设和解释的。

HazelcastInstance client = HazelcastClient.newHazelcastClient();
Ringbuffer ringbuffer = client.getRingbuffer("");
final AtomicLong sequenceId = new AtomicLong(ringbuffer.headSequence());
for(;;){
Integer[] items = java.util.stream.Stream.generate(() -> ringbuffer.readManyAsync(
sequenceId.incrementAndGet(), 1, 1, null)).limit(10).toArray(Integer[]::new);
doCalculation(items);
}

案例三:

    Ringbuffer ringbuffer = client.getRingbuffer("Case3_Ringbuffer");
    long sequenceId = ringbuffer.tailSequence();
    //Using tailSequence here as we need to go backwards and read entries in
    //past 3 minutes
    for(;;){
        Integer items[] = new Integer[10];
        for(int k=0;k<10;k++) {
            Object item = ringbuffer.readOne(sequenceId);
            sequenceId--;

            if(item instanceof TimeEvent){
                // it is a timer event, so lets stop collecting and go to 'doCalculation'
                break;
            }else{
                items[k] = (Integer) item;
            }
        }
        doCalculation(items);
    }
第 13 段(可获 0.85 积分)

以及在某一个时间戳给RingBuffer添加一个定时器事件,下面的代码可以运行在一个守护线程里。

for(;;){
    TimeEvent e = new TimeEvent();
    for(Ringbuffer ringbuffer : eventbuffer){
        if(time is 3 minutes since last add)
        ringbuffer.add(e);
    }
    Thread.sleep(1 minute);
}

注:

  • 为了实现更高的并发性,你可以有和环状缓冲区的数目一样多的可运行/可调用的对象,这些可运行/可调用的对象将由一系列线程执行
  • Hazelcast RingBuffer允许存放时间序列数据,因为不需要基于时间戳维护数据的有效性。Ring Buffer会通过写入新事件覆盖旧事件,考虑到这一点。
第 14 段(可获 1.11 积分)

Tip: If you get an event per second and you want to process every minute, give the RingBuffer a capacity of 120, so that you have 60 seconds for the calculations before unprocessed data start to get overwritten.

There are a number of ways that one can design an IoT infrastructure with Hazelcast; there are already business critical IoT applications created with Hazelcast components, running worldwide.

Hazelcast thrives on excellence and brilliance of what technology in today’s world offers. This further means that you will see the addition of more tools in the Hazelcast ecosystem. That will not only ease out the building of IoT solutions with minimal development effort but will also allow developers to work on the latest and greatest of technological tools on their favorite platforms.

See link for more information on Hazelcast:

第 15 段(可获 1.91 积分)

文章评论