Generating a sequence number which survives service restarts
I have an application which sends events to the clients. These events should be tagged with a ordered sequence number. The requirement is that event b
, which happened after a
, has a sequence number which is greater than the one for a
.
My idea was to create a 128 bytes sequence as following:
<timestamp when service was initiated><long which is incremented for each event; initially 0>
The advantage of this is that when a service is restarted, we can remain sequence order.
This should work, except if the service was restarted faster than 1 millisecond.
How do I cope with that? Should I care about that?
architecture sequence
add a comment |
I have an application which sends events to the clients. These events should be tagged with a ordered sequence number. The requirement is that event b
, which happened after a
, has a sequence number which is greater than the one for a
.
My idea was to create a 128 bytes sequence as following:
<timestamp when service was initiated><long which is incremented for each event; initially 0>
The advantage of this is that when a service is restarted, we can remain sequence order.
This should work, except if the service was restarted faster than 1 millisecond.
How do I cope with that? Should I care about that?
architecture sequence
add a comment |
I have an application which sends events to the clients. These events should be tagged with a ordered sequence number. The requirement is that event b
, which happened after a
, has a sequence number which is greater than the one for a
.
My idea was to create a 128 bytes sequence as following:
<timestamp when service was initiated><long which is incremented for each event; initially 0>
The advantage of this is that when a service is restarted, we can remain sequence order.
This should work, except if the service was restarted faster than 1 millisecond.
How do I cope with that? Should I care about that?
architecture sequence
I have an application which sends events to the clients. These events should be tagged with a ordered sequence number. The requirement is that event b
, which happened after a
, has a sequence number which is greater than the one for a
.
My idea was to create a 128 bytes sequence as following:
<timestamp when service was initiated><long which is incremented for each event; initially 0>
The advantage of this is that when a service is restarted, we can remain sequence order.
This should work, except if the service was restarted faster than 1 millisecond.
How do I cope with that? Should I care about that?
architecture sequence
architecture sequence
edited Nov 23 '18 at 9:55
WellThatWasOdd
asked Nov 23 '18 at 9:48
WellThatWasOddWellThatWasOdd
83
83
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
If you keep this sequence, you want to persist some information (in this case a sequence number).
A simple way to do that would be to write in a file and start from the last sequence number when the program restarts. Consequently, a timestamp would not even be needed.
You can still keep the timestamp to make your file some kind of log if needed. It really depends on the usage of your application.
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444192%2fgenerating-a-sequence-number-which-survives-service-restarts%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you keep this sequence, you want to persist some information (in this case a sequence number).
A simple way to do that would be to write in a file and start from the last sequence number when the program restarts. Consequently, a timestamp would not even be needed.
You can still keep the timestamp to make your file some kind of log if needed. It really depends on the usage of your application.
add a comment |
If you keep this sequence, you want to persist some information (in this case a sequence number).
A simple way to do that would be to write in a file and start from the last sequence number when the program restarts. Consequently, a timestamp would not even be needed.
You can still keep the timestamp to make your file some kind of log if needed. It really depends on the usage of your application.
add a comment |
If you keep this sequence, you want to persist some information (in this case a sequence number).
A simple way to do that would be to write in a file and start from the last sequence number when the program restarts. Consequently, a timestamp would not even be needed.
You can still keep the timestamp to make your file some kind of log if needed. It really depends on the usage of your application.
If you keep this sequence, you want to persist some information (in this case a sequence number).
A simple way to do that would be to write in a file and start from the last sequence number when the program restarts. Consequently, a timestamp would not even be needed.
You can still keep the timestamp to make your file some kind of log if needed. It really depends on the usage of your application.
answered Nov 23 '18 at 9:57
XaxetrovXaxetrov
544
544
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444192%2fgenerating-a-sequence-number-which-survives-service-restarts%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown