The Billing service is responsible for end to end billing; from the scheduling of bill runs, through invoice generation, payments and collections. The Billing service is multi-threaded and utilizes a queuing architecture to distribute the billing load evenly. Once a bill run has been initiated, the billing service will spawn multiple queues; each queue is responsible for a billing operation such as transactions, invoices and payments.
Each queue will in turn spawn additional queues to parallelize the processing of account packages via dedicated package biller threads. In a multi-CPU environment, the threads can be allocated across CPUs. This offers multiple layers of scaling; as the number of CPU cores grow, the amount of processing that can be done will scale as well.
In addition to Billing and Rating, the EngageIP application server spawns off several other running services such as Event Manager, Notifications Service, etc. With the exception of the Billing and Rating service, most of the other services involve relatively low system overhead.