{'fraction_non_alphanumeric': 0.018893387314439947, 'fraction_numerical': 0.0, 'mean_word_length': 5.995283018867925, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An Automatic Scaling System for Online Application with Microservices Architecture

Auto-scaling is an efficient technique to handle fluctuations of application workloads by acquiring or releasing resources. However, performing auto-scaling in a microservice system for online applications faces critical challenges, including unpredictably massive microservice requests, without fine-granularity performance metrics, and complex dependencies among services. In this paper, we design a cost-efficient autoscaling system, which pinpoints the scaling-needed services as quickly as possible and makes decisions on the right resource amount allocation toward them. Specifically, we first propose a multi-level microservice monitoring mechanism to capture historical and latest service-level performance metrics, and detect the over-provisioning services and under-provisioning services via jointly considering the changes of latency and throughput. For the overload anomalies, a random walk method is further adopted for detecting the root causes based on the dependency topology of microservices. When anomalies are detected, we design a threshold-based method by incorporating the ARIMI method for predicting resource usage status to allocate or recycle the right number of computation resources for them. Extensive and systematic evaluations of different algorithm modules with real-world and simulated workload data confirm the superiority of our mechanism over multiple algorithms.