The aeron-archiver is an application which enables data stream recording and replay support from an archive. Currently implemented functionality is limited to the following:
-
Record: service can record a particular subscription, described by <channel, streamId>. Each resulting image for the subscription will be recorded under a new recordingId.
-
Replay: service can replay a recorded recordingId from a particular termId + termOffset, and for a particular length.
-
Query: service provides a rudimentary query interface which allows recordingId discovery and description.
Messages are specified using SBE under ../aeron-archiver-codecs
. The
Archiver communicates via the following interfaces:
- Notifications channel: other parties can subscribe to the notifications to track the creation/termination/progress of archives. These are the notification messages specified in the codec.
- Requests channel: this allows clients to initiate replay or queries
interactions with the archiver. Requests have a correlationId sent
on the initiating request. The
correlationId
is expected to be managed by the clients and is offered as a means for clients to track multiple concurrent requests. A request will typically involve the archiver sending data back on the reply channel specified by the client on theConnectRequest
message.
The Archiver is backed by 3 file types, all of which are expected to reside in the archiveDir.
- Catalog (one per archive): The catalog contains fixed length (4k) records of recording descriptors. The descriptors can be queried as described above. Each descriptor is 4k aligned, and the recordingId is a simple sequence, which means lookup is a straight dead reconning operation. See the codec fo full descriptor details.
- Recording Metadata (one per recorded stream): This is a duplicate of the data kept in the catalog, but the file is memory mapped and updated on the go while recording.
- Recording Segment Data (many per recorded stream): This is where the recorded data is kept.