Hi Heesung. Is it possible to send the promoted value to the topic again to achieve eventual consistency? For example:
We have 3 brokers, broker-a, broker-b, and broker-c The message for leader election could be "own: broker-b", "own: broker-c", "own: broker-a" The broker-b will win in the end. The broker-b can write a new message "own: broker-b" to the topic. After the topic compaction. Only the broker-b will be present in the topic. Does it work? Maybe I missed something. Thanks, Penghui On Thu, Oct 20, 2022 at 1:30 AM Heesung Sohn <heesung.s...@streamnative.io.invalid> wrote: > Oops. > I forgot to mention another important item. I added it below(in bold). > > Pros: > - It supports more distributed load balance operations(bundle assignment) > in a sequentially consistent manner > - For really large clusters, by a partitioned system topic, BSC can be more > scalable than the current single-leader coordination solution. > - The load balance commands(across brokers) are sent via event > sourcing(more reliable/transparent/easy-to-track) instead of RPC with > retries. > *- Bundle ownerships can be cached in the topic table-view from BSC. (no > longer needs to store bundle ownership in metadata store(ZK))* > > Cons: > - It is a new implementation and will require significant effort to > stabilize the new implementation. > (Based on our PoC code, I think the event sourcing handlers are easier to > understand and follow the logic. > Also, this new load balancer will be pluggable(will be implemented in new > classes), so it should not break the existing load balance logic. > Users will be able to configure old/new broker load balancer.) > > On Wed, Oct 19, 2022 at 10:17 AM Heesung Sohn < > heesung.s...@streamnative.io> > wrote: > > > Hi, > > > > On Wed, Oct 19, 2022 at 2:06 AM 丛搏 <congbobo...@gmail.com> wrote: > > > >> Hi, Heesung: > >> I have some doubts. > >> I review your PIP-192: New Pulsar Broker Load Balancer. I found that > >> unload topic uses the leader broker to do, (Assigning, Return) uses > >> the lookup request broker. why (Assigning, Return) not use a leader > >> broker? > >> I can think of a few reasons: > >> 1. reduce leader broker pressure > >> 2. does not strongly depend on the leader broker > >> > >> Yes, one of the goals of the PIP-192 is to distribute the load balance > > logic to individual brokers (bundle assignment and bundle split). > > > > If (Assigning, Return) does not depend on the leader, it will bring > > the following problems: > > > >> If (Assigning, Return) does not depend on the leader, it will bring > >> the following problems: > > > > I assume what you meant by `(Assigning, Return) does not depend on the > > leader` is the distributed topic assignment here(concurrent bundle > > assignment across brokers). > > > > 1. leader clear bundle op and (Assigning, Return) will do at the same > >> time, It will cause many requests to be retried, and the broker will > >> be in chaos for a long time. > > > > I assume `leader clear bundle op` means bundle unloading, and `many > > requests` means topic lookup requests(bundle assignment requests). > > The leader unloads only high-loaded bundles in the "Owned" state. So, the > > leader does not unload bundles that are in the process of assignment > states. > > Even if there are conflict state changes, only the first valid state > > change will be accepted(as explained in Conflict State Resolution(Race > > Conditions section in the PIP)) in BSC. > > > > Also, another goal of this PIP-192 is to reduce client lookup retries. In > > BSC, the client lookup response will be deferred(max x secs) until the > > bundle state becomes finally "Owned". > > > > > > > > > >> 2. bundle State Channel(BSC) owner depends on the leader broker, this > >> also makes topic transfer strongly dependent on the leader. > >> > > BSC will use separate leader znodes to decide the owner brokers of the > > internal BSC system topic.As described in this section in the PIP-192, > > "Bundle State and Load Data TableView Scalability", > > We could use a partitioned topic(configurable) for this BSC system topic. > > Then, there could be a separate owner broker for each partition > > (e.g. zk leader znodes, /loadbalance/leader/part-1-owner, part-2-owner, > > ..etc). > > > > > > > >> 3. the code becomes more complex and harder to maintain > >> > >> What tradeoffs are the current implementations based on? > >> > >> Here are some Pros and Cons of BSC I can think of. > > > > Pros: > > - It supports more distributed load balance operations(bundle assignment) > > in a sequentially consistent manner > > - For really large clusters, by a partitioned system topic, BSC can be > > more scalable than the current single-leader coordination solution. > > - The load balance commands(across brokers) are sent via event > > sourcing(more reliable/transparent/easy-to-track) instead of RPC with > > retries. > > > > Cons: > > - It is a new implementation and will require significant effort to > > stabilize the new implementation. > > (Based on our PoC code, I think the event sourcing handlers are easier to > > understand and follow the logic. > > Also, this new load balancer will be pluggable(will be implemented in new > > classes), so it should not break the existing load balance logic. > > Users will be able to configure old/new broker load balancer.) > > > > > > Thank you for sharing your questions about PIP-192 here. But I think this > > PIP-215 is independent of PIP-192(though PIP-192 needs some of the > features > > in PIP-215). > > > > Thanks, > > Heesung > > > > > > > > > > > >> Thanks, > >> bo > >> > >> Heesung Sohn <heesung.s...@streamnative.io.invalid> 于2022年10月19日周三 > >> 07:54写道: > >> > > >> > Hi pulsar-dev community, > >> > > >> > I raised a pip to discuss : PIP-215: Configurable Topic Compaction > >> Strategy > >> > > >> > PIP link: https://github.com/apache/pulsar/issues/18099 > >> > > >> > Regards, > >> > Heesung > >> > > >