@Mu Xu Thanks for reaching out.
When you scale out your Azure Functions, the load balancer distributes incoming requests across all available instances. However, the load balancer doesn't guarantee that each instance will receive an equal number of requests. Instead, it tries to balance the load based on the current capacity of each instance.
In your example, it's possible that the load balancer determined that some instances were already at capacity and couldn't handle any more requests, so it directed new requests to other instances. This could explain why your jobs were processed in waves/batches instead of all at once.
Regarding your question about having 1000 or more instances for an Azure Function application, it's possible to achieve this by using the Consumption plan. The Consumption plan automatically scales out to meet demand, so you don't have to worry about manually scaling up or down. However, keep in mind that there are limits to how many instances can be created in the Consumption plan, and you may need to consider other hosting options if you need to scale beyond those limits.
You can refer to this for Event-driven scaling in Azure Functions.
Let me know if you have any queries or concerns.
Please "Accept Answer" if the answer is helpful so that it can help others in the community.