For example, when running a standalone (without TLS enabled), only the
following configs are required:

```properties
brokerServicePort=6650
webServicePort=8080
allowLoopback=true
clusterName=standalone
managedLedgerDefaultEnsembleSize=1
managedLedgerDefaultWriteQuorum=1
managedLedgerDefaultAckQuorum=1
```

Actually only these two ports and `clusterName` are needed, other
configurations can be configured with a default values for standalone.
However, I found there are over 600 configurations in the
`standalone.conf`:

```bash
$ grep "^[^#]" conf/standalone.conf | wc -l
629
```

Thanks,
Yunze Xu

On Tue, Dec 13, 2022 at 8:53 PM Yunze Xu <y...@streamnative.io> wrote:
>
> Hi all,
>
> As more people joined the development of Pulsar and more PIPs are
> opened, I found the configurations became very large. At the moment
> for commit 9917aac, there are 426 configuration items in broker.conf,
> which is too many.
>
> ```bash
> $ grep "^[^#]" conf/broker.conf | wc -l
> 426
> ```
>
> For beginners, finding the real useful configs from the `broker.conf`
> is hard. For developers, it's also bad. For example, the IDE code
> completion works significantly slower for a method of
> `ServiceConfiguration` than other classes.
>
> Let's look at Apache Kafka, there are only 17 configs in the server
> configuration file.
>
> ```bash
> kafka_2.13-3.3.1$ grep "^[^#]" config/server.properties | wc -l
> 17
> ```
>
> I think this difference makes Pulsar far more complicated to customize
> than Kafka, or than Pulsar should be.
>
> I have an idea that we can split `ServiceConfiguration` into different
> configuration classes. Some configs that are not commonly used should
> be moved into another configuration file. Just a brainstorm, does
> anyone else have better ideas?
>
> Thanks,
> Yunze

Reply via email to