3.4.0
Eclipse Ditto 3.4.0 focuses on the following areas:
- Supporting HTTP POST for performing searches with a very long query
- Addition of a new placeholder to use in connections to use payload of the thing JSON e.g. in headers or addresses
- New placeholder functions for joining multiple elements into a single string and doing URL-encoding and -decoding
- Configure MQTT message expiry interval for published messages via a header
- Reduce patch/merge thing commands to modify only the actually changed values with a new option
- UI enhancements:
- Adding sending messages to Things
- Made UI (at least navigation bar) responsive for small screen sizes
- Increase size of JSON editors in “edit” mode
The following non-functional work is also included:
- Swapping the Akka toolkit (because of its switch of license to BSL License after Akka v2.6.x) with its fork Apache Pekko which remains Apache 2.0 licensed.
- Support for using AWS DocumentDB as a replacement for MongoDB
- Improve logging by adding the W3C Trace Context traceparent header as MDC field to logs
- Adjust handling of special MQTT headers in MQTT 5
- Optimize docker files
- Migration of Ditto UI to TypeScript
- There now is an official Eclipse Ditto Benchmark which shows how Ditto is able to scale horizontally and provides some tuning tips
- Addition of a benchmark tooling to run own Ditto benchmarks
The following notable fixes are included:
- Fixed that failed retrieval of a policy (e.g. after policy change) leads to search index being “emptied out”
- Fixed that putting metadata when updating a single scalar value did not work
- UI fix, fixing that patching a thing will null values did not reflect that change in the UI
Ditto's codebase is implemented in Java. By default Java objects are mutable which does not work well in highly scalable, message driven architectures, as possible side-effects during runtime may occur when concurrently modifying objects. Because of that the Ditto team decided to use immutable objects wherever and whenever possible. Immutablity of the objects is ensured in unit tests.
Ditto's model modules and also the Ditto Java client are OSGi bundles so that they may be used in OSGi environments without much effort. The model modules are configured to be checked by a "binary compatibility checker" in the Maven build so that APIs are not broken unintentionally.
On a level higher than the model, Ditto uses a microservice based architecture. As Ditto's microservices are interacting via an event driven approach, Ditto provides a very modular setup on the microservice level meaning that single services must be not started at all if their functionality is not needed. Another benefit from this architecture is that the services may be scaled horizontally if more resources are required.
Ditto utilizes the CQRS and EventSourcing pattern and mainly uses "inserts" (append only) into the database in favor to "updates" in order to get a better performance when doing database writes. The only exception is the "search" microservice which uses traditional CRUD in order to update its search index.
There are no security issues known at the time of this writing.
Ditto comes with:
- A project site containing the documentation (including basic concepts, architecture, definition of the Ditto Protocol, etc.)
- A "Hello World" example
- An OpenAPI based HTTP/REST documentation and applied HTTP concepts
- A GitHub repository with ditto-clients (SDKs for Java + JavaScript)
- A GitHub repository with ditto-examples
- A Blog with the latest examples tutorials, release announcements, etc.
- Presentations of Ditto
- A sandbox installation where Ditto can be tried out without setting it up locally
None.
Ditto is able to process AMQP 1.0, AMQP 0.9.1, MQTT 3.1.1 and MQTT 5 messages which are all standardized (IoT) protocols.
Ditto can use JSON Web Tokens specified by RFC 7519 in order to extract "subjects" (e.g. a user-id) to use for the access control to twins.
Ditto's API documentation is defined using the OpenAPI specification 3.0.0 allowing both creation of an interactive HTML-based documentation and creation of skelettons for various programming languages based on that specification.
Ditto supports the W3C Web of Things (WoT) Thing Description 1.1 standard.
Users of Ditto ask their questions via these channels:
- The Gitter chatroom of Ditto
- Via GitHub discussions for questions and general discussions
- A Stackoverflow tag "eclipse-ditto" on which community quersions are answered by our committers
- The mailing-list (ditto-dev@eclipse.org) is not actively used and watched