-
Notifications
You must be signed in to change notification settings - Fork 11.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RIP-66] Support KV(Rocksdb) Storage #7064
Labels
Comments
fujian-zfj
changed the title
[Enhancement] Enhancement title
[Enhancement] [RIP-66] Support KV(Rocksdb) Storage
Jul 23, 2023
RongtongJin
changed the title
[Enhancement] [RIP-66] Support KV(Rocksdb) Storage
[RIP-66] Support KV(Rocksdb) Storage
Jul 23, 2023
RongtongJin
pushed a commit
that referenced
this issue
Aug 4, 2023
) * typo int readme[ecosystem] * rocksdb metadata * add unit test * fix testOffsetPersistInMemory * fix unit test * fix unit test * remove unused import * move RocksDBOffsetSerialize to broker moudle * Fix bazel build scripts Signed-off-by: Li Zhanhui <[email protected]> * Flag QueryMsgByKeyIT as flaky as it fails at frequency: 5 out of 32 Signed-off-by: Li Zhanhui <[email protected]> * change public to private of some inner method --------- Signed-off-by: Li Zhanhui <[email protected]> Co-authored-by: Li Zhanhui <[email protected]>
RongtongJin
added a commit
that referenced
this issue
Oct 14, 2023
…#7120) * typo int readme[ecosystem] * consumequue support rocksdb * fix rocksdb test * fix rocksdb test * remove unused method * split into two tables * CqUnit in Rocksdb [phyOffset, bodySize, tagHashCode, msgStoreTime] * fix build.baze in tieredMessageStore * skip RocksDBMessageStoreTest bazel * skip RocksDBMessageStoreTest bazel * Rocksdb TimerMessageStore * fix unit test bazel * fix store build.bazel * fix store build.bazel * optimize * optimize * polish * build bytebuffer pair inner * remove unused code * DataConverter.CHARSET_UTF8 * fix comment * fix comment * rebuild test * rebuild test * optimize * rebuild test * polish * polish * rebuild test * merge develop * rebuild test * rebuild test * fix getConsumeQueue not find cq * fix test * rocksdb new version * rebuild test * fix bug * Resolve conflicts after merging develop * fix updateCqOffset * fix recoverAbnormally * fix recoverAbnormally * polish * polish * polish * remove exception in cleanunusedTopic * remove exception in cleanunusedTopic * remove exception in cleanunusedTopic --------- Co-authored-by: RongtongJin <[email protected]>
zhiliatom
added a commit
to zhiliatom/rocketmq-zzl
that referenced
this issue
Dec 8, 2023
1 task
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Before Creating the Enhancement Request
Summary
We will introduce kv(rocksdb) storage to solve the possible Full GC caused by large object memory allocation when metadata such as topic is serialized, and the performance degradation caused by random writing of a large number of small ConsumeQueue files in a million-topic scenario
Motivation
we have encountered and been plagued by some probelms in the actual production environment. In some actual production scenarios, millions of topics and subsriptions will be created, and both of them may be deleted and created frequently. In current architecture, both topics and subcriptions are persisted in real time, which means each request of topics and subsciptions updating will trigger the persist interface, and the persistence of such metadata is written in full rather than append-only.
In the scenario of millions of topics, frequent persistence generates the large memory object jsonString of the topicConfigTable. When the memory is tight, the large memory object jsonString will be directly allocated to the old generation, resulting in frequent Full GC.
In addition, millions of topics will inevitably bring millions of indexed ConsumeQueue small files, a large number of indexed small files will destroy the advantages of rocketmq sequential writing, and the random writing of ConsumeQueue will make the performance drop sharply.
Describe the Solution You'd Like
This proposal mainly optimizes and solves the existing perfermance problems in the million-topic scenario from two levels:
Describe Alternatives You've Considered
no
Additional Context
No response
The text was updated successfully, but these errors were encountered: