Crazylychee opened a new pull request, #9617:
URL: https://github.com/apache/rocketmq/pull/9617

   <!-- Please make sure the target branch is right. In most case, the target 
branch should be `develop`. -->
   
   ### Which Issue(s) This PR Fixes
   
   <!-- Please ensure that the related issue has already been created, and 
[link this pull request to that issue using 
keywords](<https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword>)
 to ensure automatic closure. -->
   
   Fixes #9616 
   
   ### Brief Description
   
   Master Node:
   - MetadataChangeObserver serves as a monitoring interface, extending two 
subclasses, NoopMetadataChangeObserver and SyncMetadataChangeObserver, for 
implementing no-op and synchronous message sending, respectively. Configuration 
map operations in configuration classes such as TimerMetrics, 
MessageRequestModeManager, ScheduleMessageService, ConsumerOffsetManager, 
SubscriptionGroupManager, and TopicConfigManager have been modified: Compute 
methods are used to ensure the atomicity of message sending and in-memory 
configuration updates, ensuring simultaneous success and failure to prevent 
data inconsistencies.
   
   - For the frequently updated consumerOffset, a dual buffering approach is 
implemented, with scheduled and buffer-full synchronous message sending 
strategies. This reduces the synchronous message sending burden caused by 
frequent consumerOffset updates. The scheduled strategy also mitigates the long 
inconsistency window caused by the buffer-full strategy in low-frequency 
updates.
   - A scheduled task is used to store the latest metadata snapshot, which 
contains the current metadata and the maximum offset of the corresponding 
system topic.
   - Methods for obtaining snapshots from the master node are defined in the 
AdminBrokerProcessor and BrokerOuterAPIs. 
   
   
   Slave nodes:
   - Use DefaultLitePullConsumer to set the starting consumption point for 
consuming synchronous messages
   <!-- Write a brief description for your pull request to help the maintainer 
understand the reasons behind your changes. -->
   
   ### How Did You Test This Change?
   broker config
   ```conf
   allowMetadataIncrementalSync = true
   ```
   
   Relevant work is already in progress. Proposal documentation is available 
here:
   
https://m0sgzrp00oj.feishu.cn/docx/CvbedEJXto7A2BxfYVXcLXATnbd?from=from_copylink
   <!-- In order to ensure the code quality of Apache RocketMQ, we expect every 
pull request to have undergone thorough testing. -->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to