2012-05-28 2 views
4

Я пишу код для развертывания с использованием Fabric на всех веб-машинах и задавался вопросом, как rsync vs. upload project работает с точки зрения распараллеливания и кратчайшего времени.Ткань: Масштабируемость rsync_project vs upload_project

Есть ли тесты?

Могу ли я rsync на 100 машин параллельно? Какой ограничивающий фактор?

rsync_project(
     env.root, 
     exclude=RSYNC_EXCLUDE, 
     delete=True, 
     extra_opts=extra_opts, 
    ) 

Аналогичным образом, что является ограничивающим фактором для upload_project? Каков предел sftp по количеству?

@parallel 
def testapp(): 
    with cd('~/projects'): 
     upload_project('./receiver', '/home/sysadmin/projects') 

С точкой догадки стенда, проект загрузки должен быть лучше, так как смолы должны быть сделаны только один раз, а затем его SFTP. Или это несколько раз для примера, показанного выше?

Ткань делает что-то вроде дросселирования, чтобы сеть не задыхалась до предела?

Может кто-нибудь помочь в этом?

ответ

2

Перед тестированием rsync и upload_project вы должны знать, что rsync передает только differential data. Rsync станет очень эффективным, чем upload_project, когда ваше развертывание содержит лишь незначительные изменения.

delete = True означает, что удаленные файлы удалены удаленно. Вероятно, это то, что вы хотите.

Если вы настаиваете, я должен сказать, что результат теста будет зависеть от номеров файлов и их размера. Например, если у вас есть 1K-размер файла 1G, rsync будет намного медленнее, чем upload_project. Поскольку более поздняя версия всегда содержит tar/gzip, а затем передает этот большой файл.

В конце концов, ткань не имеет «деготь кэша», он будет повторять деготь на каждом развертывание, потому что the code записывается как:

finally: 
     run("rm -f %s" % tar_file) 
finally: 
    local("rm -rf %s" % tmp_folder) 

Но вы могли бы добавить кэш или просто закомментируйте их вручную ,

Для сетевой вещи ткань оставляет их в sftp, которые имеют Окно перегрузки, чтобы сделать уверен, что сеть не задыхается.

+14

delete = True не превратит rsync в scp. Это означает, что удаленные файлы удаляются удаленно. Вероятно, это то, что вы хотите. – MiniQuark

+0

@MiniQuark Я изменил ответ в соответствии с вашими соображениями о delete = true. – gagarine