The present invention relates to a computer system coupled to a data communication network, and more particularly, is directed to a computer-based platform for receiving data from disparate data sources and making the received data available for combinations into different data products and services, the combinations made by users.
Software as a service (SaaS) is a generic term for a software licensing and delivery model in which software is licensed on a subscription basis and is centrally hosted.
Platform as a service (PaaS) is a generic term for a computing services business model that enables customers to develop, run and manage Internet applications without building and maintaining infrastructure conventionally required for Internet applications.
The Internet of Things (IoT) is the network of physical objects or “things” embedded with electronics, software, sensors, and connectivity to enable objects to exchange data with the production, operator and/or other connected devices. The Internet of Things allows objects to be sensed and controlled remotely across existing network infrastructure, creating opportunities for more direct integration between the physical world and computer-based systems, and resulting in improved efficiency, accuracy and economic benefit. Each thing is uniquely identifiable through its embedded computing system but is able to interoperate within the existing Internet infrastructure. Experts estimate that the IoT will consist of almost 50 billion objects by 2020.
An IoT platform provides device management, data storage and data processing, so that application programs can use data from, and control data sent to, a relatively large set of devices without managing the details of the devices. Experts state that IoT market growth will require interoperability of IoT platforms, including that users should be able to avail themselves of data collected by different platforms. Most IoT platforms, while claiming to be open, are actually built around a single standard, and typically are based on pre-existing software. Accordingly, these IoT platforms have difficulty providing platform interoperability.
Thus, there is a need for an improved IoT platform.
In accordance with an aspect of this invention, there is provided a system for enabling a first data consumer to create a first data product. A first protocol adapter receives first data from a first data source in a first protocol, and extracts first payload data from the received first data, the first data source operating independently of the first data consumer. A routing engine routes the extracted first payload data in accordance with a first routing rule. A second protocol adapter receives the routed first payload data from the routing program, and encapsulates the received first payload data according to a second protocol different than the first protocol, the second protocol being associated with the first data consumer. The first data consumer receives the encapsulated first data and creates the first data product based on the first payload data.
It is not intended that the invention be summarized here in its entirety. Rather, further features, aspects and advantages of the invention are set forth in or are apparent from the following description and drawings.
Where an example is provided, it should be understood that other examples are also possible, that is, “such as” should be interpreted as “such as but not limited to”. As used herein, “conventional” means publicly known prior to the filing date of this application. As used herein, “authentication” refers to the process of validation of identity for an entity, whereas “authorization” refers to the process of granting rights to an identified entity.
A computer-based platform for receiving data from disparate data sources and making the disparate data available for combinations by users into different data products and services, referred to as the data services exchange (DSE), is explained herein. Data from disparate data sources are authenticated and provided to a routing program. The routing program then transmits the data over an internal bus, providing each data source identified by a single URI and addressable by multiple protocol-specific URLs, so that data can be used by different data consumer programs in an easy to combine manner.
In a conventional device platform, data from each data source is provided to the platform, then a custom one-to-one adapter program is written to enable each data recipient to use the source data. In contrast to a conventional device platform, in the data services exchange, the data from the routing program is exposed so it can be used by interested user programs that were unknown when the data sources were configured.
In a conventional enterprise service bus (ESB), application programs access the bus via message brokers; the message brokers convert data to and from a normalized canonical format used on the bus. Payload data on the enterprise bus is accompanied by an envelope that provides routing for the data, e.g., from sales to billing to inventory to shipping to accounts receivable, based on the traditional paper model of sending “carbon copies”, often on different color paper, in manila envelopes each having a re-usable red string, to different departments. In contrast to a conventional enterprise service bus, in the data services exchange, the routing program supports both data stream and messaging transports without conversion to a normalized canonical format. Additionally, the data services exchange does not use an envelope to route data, instead, the routing program uses routing rules based on the nature of the data.
In a conventional publish and subscribe (“pub/sub”) configuration, each of the client and server must maintain session state, and a connection between the publisher and subscriber is needed. In contrast to a conventional publish and subscribe model, each data source in the data services exchange is typically unaware of consumers of its data, and a consumer can receive data from a source without a connection therebetween.
Conventional layer 7 application protocols includes:
Conventional layer 6 presentation protocols include: transport layer security (TLS), see Internet Engineering Task Force (IETF) Request for Comments (RFC) 5746, at tools.ietf.org/html/rfc5746.
Conventional layer 5 session protocols include: TCP, see discussion of
Conventional layer 4 transport protocols include: UDP, see discussion of
Conventional layer 3 network protocols include: IPv4, see IETF RFC 791, IPv6, see IETF RFC 2460, and virtual switch redundancy protocol (VSRP), a proprietary protocol combining OSI layers 2 and 3, sold in products manufactured by Brocade Communications Systems and Hewlett-Packard.
Conventional layer 2 data link protocols include: Ethernet, see IEEE 802.3 standard, address resolution protocol (ARP), see IETF RFC 826, and asynchronous transfer mode (ATM), see ITU-T Rec. 1.150 (02/99) B-ISDN Asynchronous Transfer Mode Functional Characteristics.
Conventional layer 1 physical protocols include: Ethernet, see IEEE 802.3 standard, Bluetooth, see IEEE 802.15.1 standard, controller area network (CAN) bus, see ISO 11898-1 (data link layer) and ISO 11898-2 (physical layer for high-speed CAN), ISO 11898-3 (physical layer for low-speed fault-tolerant CAN), and universal serial bus (USB), see www.usb.org.
The Internet of Things uses the Internet as its communication network. However, IoT is a subset of connected device platforms. For instance, a mobile network that is otherwise similar to IoT is usually referred to as a mobile-to-mobile (M2M) network. Additionally, there are private networks for similar purposes, such as Echelon Ionworks and bacnet.
International Telecommunications Union (ITU) Recommendation ITU-T Y.2060, “Overview of the Internet of Things”, June 2012, available at www.itu.int/ITU-T/recommendations/rec.aspx?rec=y.2060 (the “ITU IoT”) is hereby incorporated by reference in its entirety.
The ITU IoT Appendix describes five IoT business models from the perspective of telecommunications service and network operators. In model 1, the provider—such as smart grid and intelligent transport systems businesses—operates the device, network, platform and applications and serves the application customer directly. In model 2, a first provider—such as a telecommunications operator—operates the device, network and platform, while a second provider operates the application and serves the application customers. In model 3, a first provider—such as a telecommunications operator—operates the network and platform, while a second provider operates the device and applications and serves the application customers. In model 4, a first provider—such as a telecommunications operator—operates the network, while a second provider operates the device and platform. In model 5, a first provider—such as a telecommunications operator—operates the network, a second provider operates the platform, and a third provider—such as a vertically integrated business—operates devices and provides applications to the application customers.
A problem with the ITU IoT models is that in the real world there are more than one connected device platform providers, often a collection of legacy and planned new implementations, an end-user customer wishing to integrate data from disparate providers will be forced to do a tremendous amount of work for each data set, probably including accommodating fundamentally different approaches to reality inherent in different data sets, thereby discouraging the sort of integration that leads to wonderful new services.
The present invention instead assumes that end-users will want to combine data collected in different ways, in different combinations that cannot be presently predicted. Data from disparate sources is collected, processed and stored according to a model that helps make the meaning of the data more explicit. To properly use the data, an end-user must understand the model, then it is relatively easy to combine data from disparate sources, in real-time as the data is collected, and/or after the data has been stored. Thus, the present invention encourages the creation of wonderful new data products and derives actionable value from the device data for an enterprise.
Each of third-party application software 101 and DSE application software 102 functions to process data from IoT devices and/or send control data to IoT devices. Generally, software 101 was developed independently by a third-party who chooses to run it on DSE 100, whereas software 102 was developed especially for DSE 100.
DSE 100 is built to easily allow combinations of data from different sources into new data products through aggregation, filtering and/or intermediate processing by applications referred to as data services. As used herein and in the claims, a “data service” is an application program using data from, or producing data for, the DSE. A data service can be developed for the DSE, or for another environment, and can operate on DSE facilities or on third-party facilities.
In operation, producer 10, such as a sensor farm (collection of sensors) produces data according to its own scheme, such as periodically, in response to a sensed event and/or in response to a control instruction to provide a reading, such as a poll or special request. It will be appreciated that routine sensor readings may be short, primarily indicating no change since the previous reading, whereas exception readings may be longer and include more data than is provided in a routine reading. Producer 10 sends its data to DSE 100 in a format of its choice, typically message-based or streaming.
A data source can provide “data at rest” or “data in motion” or a combination thereof. Data at rest refers to data that has been stored and is typically provided in a message format. Data in motion refers to data that is produced in real time, typically in a streaming format. A data source can provide raw data or processed data. Raw data is unprocessed data. Processed data is data that has been processed, such as by filtering, by transforming or by combining with other data.
Producer 10 may be a conventional data source, such as a stock quote data stream.
DSE 100 receives data from producer 10 and provides the data in real time to selected applications that have requested such data, such as applications 101 and 21. DSE 100 may be configured to store the received data, so it is available for non-real time access by applications, such as applications 102 and 30.
Application programs, such as applications 101, 102, 21 and 30 process the data in some way, often combining the sensor data with other sensor data, then either use the results privately, or provide their processed data to DSE 100 for distribution and/or storage. In some cases, the application programs provide their processed data; in other cases, the application programs provide metadata about their processed data, i.e., metadata indicating the existence and possibly characteristics of the data such as its size and/or cost.
DSE 100 includes utility programs 103 to manage its infrastructure, relieving programs 101, 102 of the need to manage infrastructure. The utility programs serve to schedule other programs, authorize programs to use resources such as real-time distributed data and/or stored data, filter data prior to distributing it, route data, provision DSE 100 such as with more processors or memory, manage provisioned resources such as deleting unused or under-utilized resources, provide a user interface so that humans or programs can query the resources of DSE 100, manage the configuration of DSE 100 such as distributing workload across different data centers, and encapsulate data and functions as appropriate.
Outputs and inputs of each data service are modeled as DSE resources. Outputs are also referred to as data products. DSE resources are each identifiable via a uniform resource identifier (URI). The URI syntax is defined in Internet Engineering Task Force (IETF) Request for Comments (RFC) 3986. Each DSE resource may have multiple uniform resource locators (URLs), see IETF RFC 1738, associated with its URI, providing addressable endpoints of the form:
Access control to these DSE resources is usually tied to the contractual relationships between the data producer and the data consumer. Data providers typically have a contractual relationship with DSE 100 specifying usage constraints, if any, for their data. DSE 100 brokers access to data on behalf of the producers, minimizing administrative and contractual overhead to the data producers while enabling the data producers to control who can use their data.
DSE 100 is connected to public communication network 5, such as the Internet. DSE 100 may also be connected to private communication networks (not shown), and/or may have local communication not via a network (not shown). DSE 100 is comprised of general purpose computers programmed according to the present invention, along with appropriate storage devices, internal communication capability and administrative terminals. DSE 100 runs on hardware that is rented from a third-party provider, and spans multiple physical locations (not shown), connected to each other via a high-speed internal network and/or via network 5. DSE 100 is assumed to be able to use more or less hardware and other resources as are needed to accommodate its workload, and to automatically obtain resources from, and release resources to, the third-party provider. In some embodiments, DSE 100 runs on dedicated hardware in a third-party data center. In other embodiments, DSE 100 runs in its own private data center.
Data consumer 20 is connected to public communication network 5. Consumer 20 is comprised of suitably programmed general purpose computers and other appropriate resources.
Authentication service 31 functions to authenticate information upon request from DSE 100, and/or to provide authorization for data requests and/or to provide a rights management service. For example, authentication service 31 may make an Oauth2 request, see tools.ietf.org/html/draft-ietf-oauth-v2-31, to an identity provider service such as Facebook or Github to verify credentials in an authorization rule for an operation on specified data. The response from the Oauth2 server is the authorization status of the operation. Authentication service 31 is assumed to be controlled by a third-party, and to operate on suitably programmed general purpose computers and other appropriate resources.
Data producer 10 has three instances, shown as data feed 15, third-party device manager 40 and DSE device manager 50.
Data feed 15 is a conventional source of data, such as securities trading quotes, weather forecasts, news feeds, Twitter, or the like.
Third-party device manager 40 is a suitably programmed general purpose computer, and functions to collect data from devices 11, 12, 13, 14, and send control data thereto. Devices 11, 12, 13, 14 are typically sensors, and may be of the same or different types, such as location sensors, temperature sensors, pressure sensors, moisture sensors, sound sensors and/or cameras for producing images and/or video streams. Devices 11-14 communicate with device manager 40 as appropriate via wireline or wireless communication channels such as low-energy Bluetooth channels. Devices 11-14 are shown in certain communication configurations, but other communication configurations are possible and will be known to those of ordinary skill. Device 11 communicates with third-party gateway 42 that, in turn, communicates with device manager 40. Device 12 communicates directly with device manager 40. Device 13 is a mobile device, and communicates wirelessly with mobile switching center (MSC) 44 that, in turn, communicates with device manager 40; in some embodiments, MSC 44 communicates with device manager 40 via network 5. Device 14 communicates with device manager 40 via network 5. Gateway 42 comprises one or more suitably programmed general purpose computers, and is particularly useful to poll device 11 and pre-process responses from device 11.
DSE device manager 50 is similar to device manager 40, except device manager 50 is controlled by DSE 100, and so may be pre-authorized in certain respects and/or require less authentication. DSE local manager 52 communicates with device manager 50; local manager 52 is generally similar to gateway 42. Devices 16, 17 are generally similar to devices 11-14. Device 16 communicates with local manager 52. Device 17 communicates with device manager 50. Other configurations (not shown) are possible.
DSE 100 pre-integrates multiple device managers so that the data generated by the devices attached to each device manager is available as a data service, identifiable via a URI.
Consumer 54 is a software program that executes on DSE local manager 52. Consumer 54 is an instance of consumer 20 in
Consumer 51 is a software program that is similar to consumer 54, except that consumer 51 executes on DSE device manager 50. Virtual machine 53 is another software program that executes on DSE device manager 50, and functions as an environment for other software programs (not shown) that are instances of programs 101, 102, 103.
An exemplary use of DSE 100 will now be described, wherein a pizza parlor completely outsources its pizza delivery, showing how DSE 100 is useful to owners of autonomous vehicles, couriers responsible for delivering packages, an analytics platform provider, a vehicle tracker platform, a logistics company, a “smart package” manufacturer, and pizza parlors that make pizza. Implementation of this example on DSE 100 is described below with respect to
Consider getting a pizza from the pizza parlor to the customer's house. Currently, the customer places an order online or via a phone call, and waits 30-40 minutes for a guy with a car to deliver it to the customer's house. The capital expense of owning a car is a barrier to entry to the profession of “pizza delivery guy”. When the customer's pizza arrives it will be of some unknown quality and freshness, and usually requires settlement of payment either through exchange of cash or signing a receipt.
Consider a near future pizza delivery service in which pizza parlors outsource their pizza delivery to freelance couriers who use ride-sharing services to acquire on-demand rides from other people's idle self-driving vehicles. Economically, this makes maximal use of resources while preserving the human touch. The owners of self-driving vehicles contract out their spare capacity to the ride-sharing service in exchange for compensation. The ride-sharing service coordinates the available supply with demand for transport. The analytics platform provider supplies the ride-sharing company with the necessary machine intelligence to predict supply and demand based on data supplied by the vehicle-tracking platform. The vehicle-tracking platform also provides the vehicle owners with a trusted third-party audit of the use of their vehicle by the ride-sharing service. A logistics company may then piggyback on the above data providers to coordinate their smart packages with the freelance couriers who will use the ride-sharing service to deliver the pizzas. The pizza parlor needs only buy the smart packaging from the appropriate logistics company, place the pizza in the package, and it gets delivered to the correct address.
DSE 100 links the disparate services: autonomous vehicles, couriers, ride sharing, logistics, and smart packaging into a functioning system. DSE 100 does this by making information available through context-relative data streams. The information from any one source may be shared and augmented by many different parties based on their contractual relationships. These parties may also offer additional data services or processing to interested third parties using DSE 100 as a broker for settlement. In this example, each of the above parties has a contractual relationship with DSE 100 to broker their information. DSE 100 makes available their data products for a price. DSE 100 takes a commission in exchange for brokering and delivering the data product to the customer. DSE 100 remits the remainder of the sale price to the data product provider.
In this pizza example, each smart package is represented as a DSE resource that makes available the information from the smart package to any interested parties. The cost of this information is included in the price of the packaging, and access to the information could be provided to whoever purchases the object. For example, the smart packaging manufacturer, or its contracting entity, might initially have sole access to the associated DSE resource. When the lot of packages are transferred to the logistics company, access to the DSE resources would be transferred entirely, with the manufacturer no longer retaining any access. The logistics company delivers the smart packages to the pizza parlor, and provide the pizza parlor with access to the DSE resource, but does not transfer ownership. The logistics company does this to ensure it has the capability to deliver the package to its intended recipient, and maintain quality control. Finally, when the pizza parlor sells a pizza to a customer and puts it in the package, the pizza parlor can provide the customer with the information, allowing the customer to track the temperature, moisture content, and location of their pizza, and get notifications of estimated delivery time, such as (i) estimated delivery time as of when the order was placed, (ii) estimated delivery time as of when the pizza is packaged for delivery, (iii) estimated delivery time as of when the pizza was picked up, and (iv) estimated delivery time as of five minutes before arrival of the pizza.
The logistics company may also choose to provide access to a limited fashion to freelance couriers, and potentially augment the data feed with more useful information such as the urgency or any time limits placed on the delivery. The couriers are represented by their own DSE resources to which they can publish information about their location, availability, and desired rates. The logistics companies subscribe to these courier supplied data products to dynamically outsource their delivery. The logistics company may also use third party analytics data services to model the reliability, timeliness, and quality of each courier given ambient conditions such as traffic and weather. This information, too, is brokered through DSE 100 to the ride-sharing company, to help the ride-sharing company predict demand and coordinate availability of vehicles near the couriers.
Each vehicle has telemetry data that it broadcasts to the vehicle-tracking platform, so DSE 100 can also broker this information to interested parties. The vehicle owner may wish to have this information, and make it available to his mechanic and insurance company. The ride-sharing company may be granted access to this information only during the period that the vehicle's owner has determined that the vehicle is available. In this case, DSE 100 provides the contractual access as a broker between the vehicle tracking platform and the ride-sharing company on behalf of the owner of the vehicle and its information.
DSE 100 also coordinates payment between the parties for the information. For example, the ride-sharing company may pay the vehicle owner for access to the vehicle and its information, where at the same time, the owner of the vehicle may pay the vehicle tracking platform monthly for its service. The logistics company pays for the courier's data feed, and pays the ride-share platform for the courier's vehicle usage while contracted. The pizza parlor pays the delivery fees to the logistics company, and receives information about their package through the delivery process for quality control purposes. Finally, the end customer pays for the pizza and receives access to their package's information while in transit. DSE 100 models these contractual relationships and the information exchanged, enabling automated settlement of these exchanges.
DSE 100A includes the following programs:
Routing Engine and Data Bus 140 of
In some embodiments, external bus 140B and internal bus 140C are combined into one data bus.
In this embodiment, DSE 100A executes on third-party computing hardware from a managed cloud computing provider such as Rackspace US, Inc., see www.rackspace.com. In other embodiments, DSE 100A executes on private computing hardware. The computing hardware includes general purpose server computers, communication facilities and data storage facilities. In still other embodiments, DSE 100A executes on an IoT platform provided by a third-party.
At DSE 100A, external bus 140B communicates with entities external to DSE 100A, including data feed 15, third-party device management platform 40, DSE device management platform 50 executing DSE application 55, consumer 20 executing third-party application 21, and authentication service 31, and with programs internal to DSE 100A, including secure socket proxies 90A, 90B, 90C, caching reverse proxies 91A, 91B, 91C, and application adapters 166A, 166B. Internal bus 140C communicates only with programs and devices internal to DSE 100A, including the programs that communicate on external bus 140B, data storage 90, protocol adapters 124A, 124B, 124C, DSE application 102, auth service 144, and routing engine 140A. Although
A consumer needs to know a URL associated with the URI for the resource, and then can immediately start using it with a suitable protocol adapter or application adapter for encapsulation. In turn, a data consumer can produce a data resource with its own URI that can be used, via URLs, by other data consumers. Configuring data as a URL-addressable resource provides tremendous flexibility, and avoids conventional difficulties that arise when data is in a relational database, and a consumer wants the data in a manner than is inconsistent with the underlying relational data model. Configuring data as a URL-addressable resource simplifies life for a data consumer relative to a conventional relational database, as the consumer does not need to understand the relational data model. Software developers are familiar with URIs and URLs, and modern computer languages have software libraries supporting URI usage and parsing. The URI scheme enables representing the identity of the identified object across media, such as both software and paper documents, reducing the difficulty of documenting contractual relationship with respect to the URI-identified data products.
In a first incoming configuration, device 11, shown in
At DSE 100A, the data from platform 40 is provided to secure socket proxy 90A, shown in
In a second incoming configuration, data feed 15, shown in
At DSE 100A, the data from data feed 15 is provided to secure socket proxy 90B, shown in
In a third incoming configuration, device 17, shown in
In a fourth incoming configuration, data is produced by DSE application 102, shown in
In a first outgoing configuration, data from routing engine service 140A, shown in
In a second outgoing configuration, data from routing engine service 140A, shown in
Operation of the elements of
A socket is an addressable endpoint of an inter-process communication across a computer network. Secure socket proxy 90A functions to provide secure transmission of socket data.
For incoming traffic, as shown in
For outgoing traffic, as shown in
A reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers, improving security and load balancing, the resources being returned to the client as though they originated from the reverse proxy. A reverse proxy acts as an intermediary for its associated servers to be contacted by any client, in contrast to a forward proxy that acts as an intermediary for a client to contact any server. A caching reverse proxy has the ability to store data. Caching reverse proxy 91A functions to represent DSE 100A to the client.
For incoming traffic, as shown in
For outgoing traffic, as shown in
An application adapter is specific to an application programming interface (API) for a particular application program or DSE interface. Application adapter 166A creates a resource, typically delivering its output as raw messages or a raw data stream devoid of protocol metadata. Application adapter 166A omits authenticating received data because it runs within a trusted context on internal bus 140C. In contrast, external applications requesting resource access undergo authorization checking Application adapters that interface to third-party SaaS platforms negotiate authorization on a per-connection basis defined by the SaaS platform.
At step 842, adapter 166A determines whether the data is incoming or outgoing.
For incoming data, at step 852, adapter 166A receives data from a file socket protocol of an application hosted external to DSE 100A, and providing data in a protocol chosen by the application. At step 854, adapter 166A writes the received data to routing engine 140A. Processing of incoming data by adapter 166A is now complete.
For outgoing data, at step 844, adapter 166A receives data from routing engine 140A. At step 846, adapter 166A encapsulates the data as required by the recipient application, such as creating an HTTP request or generating an SQL query. At step 848, adapter 166A writes the transformed data to the file socket application programming interface (API) of the recipient. Processing of outgoing data by adapter 166A is now complete.
A DSE 100A protocol extracts data for transmission on data bus 140C, shown in
At step 630, protocol adapter 124A asks auth service 144, shown in
Turning to
Turning to
If at least one authorization rule was retrieved at step 672, then at step 676, auth service 144 compares the rule(s) to the requested resource path. An example of an authentication rule is:
If the requested resource path matches at least one retrieved rule, then at step 680, auth service 144 determines whether the rule requires use of an external authentication service, and if so, which external authentication service, and processing continues at step 684. If external authentication is not required, then the fact that the requested resource path matches a retrieved rule serves as authentication, so at step 681, auth service 144 sets an authentication duration for the authentication event, by setting an authentication timestamp and a time-to-live (TTL) measured relative to the authentication timestamp, and at step 682, the requested operation is determined to be authenticated.
If external authentication is required, then at step 684, auth service 144 sends an authentication query to authentication service 31, shown in
Returning to
Turning to
Turning to
Turning to
At step 724, protocol adapter 124C receives the data being read from routing service 140A. At step 726, protocol adapter 124C determines if queuing is enabled for the reader of the data by checking the runtime configuration file of protocol adapter 124C. If not, at step 728, protocol adapter 124C checks whether there are any consumers for the data. A connection can be terminated intentionally by the consumer, by a time-out, by a network failure, or in another manner. If there are no consumers, at step 730, protocol adapter 124C discards the data. If there is at least one consumer for the data, processing continues at step 735. If queuing is enabled, then at step 732, protocol adapter 124C enqueues the data in a buffer associated with the data producer for a first time duration. At step 734, protocol adapter 124C checks whether there are any consumers for the data. If there are no consumers, processing returns to step 732 and the data is queued for a second time duration smaller than the first time duration. When there is at least one consumer for the data, at step 735, protocol adapter 124C encapsulates the data according to the protocol it implements, and at step 736, protocol adapter 124C delivers the data to the consumer(s), see
Turning to
At step 744, protocol adapter 124C determines whether reauthorization is required by checking whether the authorization has expired. If reauthorization is required, at step 746, protocol adapter 124C asks auth service 144 to authenticate the on-going read operation, see
Turning to
Turning to
Example of resource bindings are:
At step 724, protocol adapter 124A checks whether a binding for the resource to the named entity already exists by querying the routing table API of routing engine 140A; if so, nothing needs to be done and processing is complete. If a binding for the resource to the named entity does not exist, then at step 776, protocol adapter 124A checks whether the resource exists. If the resource does not exist, then at step 778, protocol adapter 124A instructs routing engine 140A to create the resource and add the newly-created resource to the routing table maintained by routing engine 140A. At step 780, assured that the resource exists, protocol adapter 124A creates a binding for the named resource to the named entity by submitting a “bind” request to routing engine 140A.
Turning to
//a {“timeout”:<delay in ms>} message to the protocol adapter
At step 802, routing engine 140A receives data, which can be incoming or outgoing. At step 804, routing engine 140A retrieves the routing rules for the data from data storage 90. The routing rules were established when applications or users made requests via protocol adapters, as described above with respect to
An example of a metadata-based routing rule is:
An example of a pattern match routing rule is:
An example of a script based routing rule is:
At step 806, for each rule associated with the resource, routing engine 140A loads a rule engine software module associated with the rule type from data storage 90. Rules engine modules are generally developed especially for DSE 100A and include but are not limited to:
At step 810, routing engine 140A executes the rule against the data received at step 802. At step 812, routing engine 140A checks whether the rule matches the received data. If not, at step 814, processing of this rule is complete and routing engine 140A goes on to the next rule, if any. If there is a match, then at step 816, routing engine 140A saves the match and goes on to the next rule, if any. Steps 812, 814, 816 are sometimes referred to as filtering the data.
After all rules have been evaluated, at step 820, routing engine 140A checks whether any matches were found at step 816. If not, at step 828, routing engine 140A discards the data, and processing of the data is complete.
If at least one rule matching the data has been found, at step 822, routing engine 140A loads a resource binding for each rule from data storage 90 to discover the URL(s) of the destination resources. At step 824, routing engine 140A checks whether there are any bound resources, that is, whether there are any destination resources to which this data should be forwarded. If not, processing continues at step 828, discussed above. If there are bound resources, then at step 826, routing engine 140A provides the data to the bound resources by sending the data via bus 140C to the protocol adapters and/or application adapters respectively bound to the destination resources, and processing is complete.
A usage example will now be discussed. Assume that, in
Assume that temperature sensor 12 provides a temperature reading to device management platform 40 every ten minutes, and that device management platform 40 provides sensor readings to DSE 100 if the temperature reading is under 40 degrees or over 80 degrees. Assume that on Sep. 25, 2015, sensor 12 provided a temperature reading of 83 degrees, and platform 40 forwarded this reading to DSE 100 at time 10:30:59 (hours:minutes:seconds). Data from platform 40 goes to secure socket proxy 90A, then to caching reverse proxy 91A, then to protocol adapter 124A in the form:
At
Assume that, at
At step 804, routing engine 140A then looks up the routing rules for the resource “platform40”, and finds rules relating to sensor11, sensor 12, sensor13 and device14. At step 806, routing engine 140A determines that only the rules for sensor12 match the received data. Assume that the routing rules for sensor12 are regular expression matches on the metadata:
At step 822, routing engine 140A loads the resource bindings for the rules. Assume that the resource bindings for these rules are:
At step 826, routing engine 140A provides the received data to the bound resources, namely protocol adapter 124C, application adapter 166B and data storage 90.
Application adapter 166B provides the data to DSE application 102 at
Protocol adapter 124C provides the data caching reverse proxy 91C, which in turn provides it to secure socket proxy 90C and then to consumer 20. Consumer 20 generates a data product based on the data from sensor 12, such as an ideal price financial estimate for wheat futures.
Data storage 90 receives the data and stores it.
Another use case for DSE 100A will now be described with respect to
Authentication service 31 uses the UDP protocol.
Platform 40 uses the AMQP protocol.
Consumer 60 is a third-party application program that communicates with DSE 100A via secure socket proxy 90D, caching reverse proxy 91D and protocol adapter 124D. Consumer 60 uses the WebSocket protocol.
Mobile switching center (MSC) 70 includes a short message service (SMS) gateway that communicates with smartphone 80 via a wireless communication channel. MSC 70 uses the HTTP protocol.
DSE application 106 communicates with bus 140C via application adapter 166C.
Assume that an analyst having smartphone 80 wants an alert message sent to her smartphone when the output of temperature sensor 12 is above 90 degrees or below 30 degrees, and that sensor 12 has just produced a reading of 92. There are at least four different ways to configure DSE 100A to provide such alerts.
The first configuration technique, providing alerts in near real-time, relies on third-party external application 60, also referred to as consumer 60, to receive the output of sensor 12, filter it, and send an alert.
Platform 40 sends a WRITE instruction to DSE 100A with a value sensed by sensor 12:
Routing engine 140A has a routing rule that data for sensor 12 is to be sent to consumer 60:
The second configuration technique, providing alerts in near real-time, relies on internal DSE application 106 to receive the output of sensor 12, filter it, and send an alert.
Platform 40 sends a WRITE instruction to DSE 100A with a value sensed by sensor 12:
The third configuration technique, providing alerts in near real-time, relies on third-party device management platform 40 to receive the output of sensor 12, filter it, and send a NOTIFY instruction to DSE 100A, where NOTIFY is a user-defined operation.
In addition to its normal WRITE operation for the output of sensor 12, platform 40 checks whether the value of the data from sensor 12 is above 90 degrees or below 30 degrees, and if so, sends a NOTIFY instruction to DSE 100A:
Routing engine 140A has a routing rule that alerts relating to sensor 12 are to be sent to phone 80:
The fourth configuration technique, providing alerts in near real-time, relies on third-party device management platform 40 to receive the output of sensor 12, and send it to DSE 100A as part of a WRNOTIFY instruction, where WRNOTIFY is a user-defined operation. In contrast to the third configuration, where platform 40 sends a normal WRITE instruction and a NOTIFY instruction, these are combined in the fourth configuration, and the script for WRNOTIFY determines that an alert should occur.
Platform 40 sends a WRNOTIFY instruction to DSE 100A with a value sensed by sensor 12:
Routing engine 140A has its routing rules that are used for WRITE operations from platform 40, and also has a routing rule that alerts relating to sensor 12 are to be sent to phone 80:
Another use of DSE 100 will now be described with reference to
Consider the case in which courier 6050 receives a notification, via DSE 100, to deliver pizza container 6060 to customer 6080. Courier 6050 needs vehicle 6000, with which to pick up pizza container 6060, and deliver pizza container 6060 to customer 6080's location.
First, owner 6020 of vehicle 6000 announces that his vehicle is available for use by ride-sharing service 6030, by publishing a message to the dse:/availability resource. The message is sent with meta-data indicating the vehicle:
The results of analytics service 6045 are manually studied and used by the staff of ride-sharing service 6030, via regular desktop software. There is no requirement that the application itself need render all or any of its output back to the DSE 100. At this point, the ride-sharing service staff could issue a command to vehicle 6000, via a dse:/vehicle resource, instructing vehicle 6000 to drive itself to a location near the pizza parlor that the staff of ride-sharing service 6030 has determined will be a likely location for a pick-up based on analytics service 6045. Vehicle 6000 is now in closer proximity to where it is likely to be needed, reducing turn around time.
When customer 6080 calls pizza parlor 6070 to place their typical order, at 4:30 p.m. on a Friday, pizza parlor 6070 prepares their customer's “saved favorite” order of a large cheese and pepperoni pizza. When the pizza is cooked, the staff of pizza parlor 6070 places the pizza in smart pizza container 6060. The staff of pizza parlor 6070 provides the order information, including identification of pizza container 6060, by sending a message to the dse:/orders resource. This resource is bound to pizza container 6060 based on a routing rule set by logistics company 6040, dse:/orders/box/parlor. These routes and resources were provisioned by logistics company 6040, prior to delivering a shipment of smart pizza containers to pizza parlor 6070. The dse:/orders resource could also be bound to an application on the consumer's phone 6080, which is listening on a dse:/pizza resource with a binding of dse:/orders/pizza/parlor. When the pizza order is updated with the price and estimated time of delivery, the customer would be notified that his pizza is on its way.
Once pizza container 6060 is activated, it notifies logistics platform 6040, by publishing its copy of the order data to a dse:/box resource which is consumed by logistics platform 6040. Pizza container 6060 sends telemetry data to logistics platform 6040, so that the logistics company can maintain quality control over the delivery process. Logistics platform 6040 matches the telemetry data from pizza container 6060, with their database of the locations of each courier they monitor from their dse:/location telemetry feeds, and routes the nearest courier 6050 to pick up pizza container 6060. Once courier 6050 picks up pizza container 6060, she receives the delivery portion of the information from pizza container 6060's dse:/delivery data feed, and uses that to determine where she needs to deliver container 6060.
Courier 6050 acquires vehicle 6000, by contacting the ride sharing service over the dseitrips resource, forwarding the location data from the dse:/delivery feed. As courier 6050 steps out of pizza parlor 6070, vehicle 6000 arrives, picks up courier 6050, and transports her to customer's 6080's location. At customer 6080's location, courier 6050 initiates the payment reception using an application on her phone to connect the dse:/delivery data to the customer's dse:/orders data, and generate a payment event on the dse:/payment resource. The settlement procedure could then occur via whatever banks, payment processors, or telcos may be responsible for processing the data sent to dse:/payment.
Each secure socket proxy process provides data to one of reverse caching proxy processes 91-1, 91-2, 91-3, chosen at random or according to some other technique. Each reverse caching proxy process supplies information to one of protocol adapter processes 124-1, 124-2, 124-3, selected to accommodate the protocol of the information, and then randomly among suitable protocol adapter processes. The protocol adapter processes provide data to routing engine 140A, which routes the data in accordance with its routing rules. Data storage 90 stores information used by DSE 100, as described above. Auth service 144 provides authentication and/or authorization services for the protocol adapter processes, as described above.
Application adapter processes 166-1, 166-2, 166-3, 166-4 receive data from routing engine 140A, and provide the received data to their respectively coupled data consumers, tracking platform 6010, ride-sharing service 6030, analytics service 6045 and logistics service 6040.
Although an illustrative embodiment of the present invention, and various modifications thereof, have been described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to this precise embodiment and the described modifications, and that various changes and further modifications may be effected therein by one skilled in the art without departing from the scope or spirit of the invention as defined in the appended claims.