分布式服务模型
有m个server、n个client,client发出的请求被随机发送到某一个server上,client的请求为串行模式,即每个请求被处理完后才能发送下一个请求,server处理每个请求的时间为T,server每次只能处理一个请求,其他的请求将排队等待。求当client发送请求无限多时,每个请求的平均服务时间?
请求次数无限多时,可以认为请求被均匀分不到各个server上:
(1) 当n <= m 时,当请求足够多时,n个client发出的请求被均匀分布到m个server上,因为client请求时串行的,故m个server可能存在空闲的,此时每个请求将在T时间内完成,每个请求的平均服务时间为T。
(2) 当n > m时,每个服务器上分配n/m个请求,且队列的长度一直为n/m,除开始的几个请求外,后续请求的服务时间都将为n/m*T,故每个请求的平均服务时间为n/m*T。
仿真程序:
使用方法:
开启m个server,并在client的server_list中配置server的信息,运行client,参数为client个数(使用多线程模拟多个client),以及每个client发送的请求个数。
#gcc –o server server.c
#gcc –o client client.c –std=c99 –lpthread
启动3个server
#./server 127.0.0.1 12340 &
#./server 127.0.0.1 12341 &
#./server 127.0.0.1 12342 &
启动3个client线程,每个线程发送100个请求
#./client 3 100