The existing dynamic load balancing algorithms usually monitor load on servers and allocate requests to the least loaded server. But load between monitoring intervals is unknown because the monitoring is not real-time. And most of them can not differentiate services. This paper proposes a predictive dynamic load balancing algorithm which takes services types into consideration. The scheduler monitors resource utilization and number of active requests in each server. Considering service's preference for different resources, the average resource overhead of each service can be calculated using multiple reverse differentials. During request allocation, the appropriate server node is chosen to achieve optimal load balancing. Moreover, the resource utilization of each server node between monitoring intervals can be real-time predicted. The results demonstrate that the proposed algorithm can achieve shorter response time, fewer failed requests and more balanced load compared with existing dynamic load balancing algorithms.