Видение: предоставить пользователям наиболее простую, надёжную и эффективную распределённую файловую систему.
Go-FastDFS — это распределённая файловая система, основанная на протоколе HTTP. Она основана на концепции простоты. Весь простой дизайн делает её работу и расширение более простыми. Она обладает высокой производительностью, высокой надёжностью и не имеет централизации, не требует обслуживания и т. д.
Все беспокоятся о такой простой файловой системе. Не является ли она ненадёжной, можно ли её использовать в производственной среде? Ответ: да, она эффективна, потому что проста, и стабильна, потому что проста.
Если вы беспокоитесь о функции, то запустите модульный тест, если вы беспокоитесь о производительности, то запустите стресс-тест, проект поставляется с ним, запускайте более уверенно ^_^.
Примечание: пожалуйста, внимательно прочитайте эту статью перед использованием, особенно вики.
./fileserver
curl -F file=@http-index-fs http://10.1.xx.60:8080/upload
http://127.0.0.1:8080
import requests
url = 'http://127.0.0.1:8080/upload'
files = {'file': open('report.xls', 'rb')}
options={'output':'json','path':'','scene':''} #См. параметры загрузки браузера
r = requests.post(url, files=files)
print(r.text)
package main
import (
"fmt"
"github.com/astaxie/beego/httplib"
)
func main() {
var obj interface{}
req:=httplib.Post("http://10.1.5.9:8080/upload")
req.PostFile("file","path/to/file")
``` **Как можно использовать в рабочей среде?**
- Насколько можно доверять работе в рабочей среде?
Этот проект широко используется в рабочей среде, например, из-за опасений не соответствовать требованиям.
Вы можете провести стресс-тест его функций перед использованием, при этом:
**Любая проблема может быть упомянута напрямую.**
**Как запустить программу в фоновом режиме?**
How to run the program in the background?
Пожалуйста, используйте control для запуска программы позже следующим образом:
1. Сначала выполните команду chmod +x control.
2. Затем убедитесь, что control и fileserver находятся в одном каталоге.
3. Наконец, выполните ./control start|stop|status для запуска, остановки или просмотра статуса и т. д.
**Можно ли иметь несколько серверов на одной машине?**
Can I have multiple servers on one machine?
Нет, высокая доступность кластера была учтена в начале проектирования. Чтобы обеспечить истинную доступность кластера, он должен быть разным для ip, ip не может использовать 127.0.0.1. Ошибка «peers»: [«http://127.0.0.1:8080», «http://127.0.0.1:8081», «http://127.0.0.1:8082»]. Правильно «peers»: [«http://10.0.0.3:8080», «http://10.0.0.4:8080», «http://10.0.0.5:8080»].
**Что делать, если файлы не синхронизированы?**
What should I do if the files are not synchronized?
При нормальных обстоятельствах кластер автоматически синхронизирует файлы восстановления каждый час. (Производительность плохая, рекомендуется отключить автоматическую настройку при массовом восстановлении). Что касается ненормальной ситуации? Ответ: ручная синхронизация (желательно при низких пиках).
Http://172.16.70.123:7080/sync?date=20190117&force=1 (Примечание: должно выполняться на сервере с большим количеством файлов, связанных с отправкой на другой сервер). Описание параметра: дата указывает дату дня синхронизации. force 1 означает принудительную синхронизацию всех данных за день (низкая производительность), 0 означает синхронизацию только неудачных файлов.
Несинхронизированная ситуация:
1) Первоначально работает N наборов, теперь внезапно присоединяется один, чтобы стать N+1.
2) Первоначально работает N наборов, одна машина имеет проблему и становится N-1.
Что, если есть несоответствие данных в течение нескольких дней? Можно ли синхронизировать всё сразу? Ответ — да (желательно при низких пиках):
Http://172.16.70.123:7080/repair?force=1.
**Влияет ли рассинхронизация файлов на доступ?**
Does the file out of sync affect access?
Ответ: не влияет, файлы, которые не синхронизированы, будут автоматически восстановлены, когда доступ будет недоступен.
**Как проверить состояние системы и описание?**
How do I check the system status and description?
Http://172.16.70.123:7080/status (Примечание: Fs.Peers не оснащён этим блоком, если есть проблема с проблемой). Эта машина — Fs.Local. Sts[«Fs.ErrorSetSize»] = this.errorset.Cardinality() это вызовет увеличение памяти.
**Как скомпилировать (go1.9.2+}?**
How to compile (go1.9.2+)?
Git clone https://github.com/sjqzhang/go-fastdfs.git. Cd go-fastdfs. Mv vendor src. Pwd=`pwd`. GOPATH=$pwd go build -o fileserver fileserver.go.
**Как выполнить модульный тест (попробуйте сделать это под linux)?**
How to run a unit test (try to do it under linux)?
Git clone https://github.com/sjqzhang/go-fastdfs.git. Cd go-fastdfs. Mv vendor src. Pwd=`pwd`. GOPATH=$pwd go test -v fileserver.go fileserver_test.go.
**Как протестировать?**
How to test?
Шаги:
1. Создайте папку с файлами.
2. Скопируйте gen_file.py в папку с файлами, сгенерируйте большое количество файлов через python gen_file.py.
3. Поместите benchmark.py вне папки с файлами (то есть на том же уровне, что и папка с файлами), нажмите python benchmark.py (обратите внимание на ip в benchmark.py).
Сначала используйте gen_file.py для генерации большого количества файлов (обратите внимание, что если вы хотите генерировать большие файлы, вы можете умножить содержимое на большое число). Например:
# -*- coding: utf-8 -*-
Import os
j=0
For i in range(0,1000000):
If i%1000==0:
j=i
Os.system('mkdir %s'%(i))
With open('%s/%s.txt'%(j,i),'w+') as f:
F.write(str(i)*1024)
Затем используйте benchmark.py для измерения давления. Также можно одновременно проводить измерение давления на нескольких машинах, и все узлы могут одновременно читать и записывать данные.
**Почему код записан в файле?**
Why is the code written in a file?
Во-первых, текущий код всё ещё очень прост, нет необходимости усложнять его. Во-вторых, отдельные лица понимают, что модульность не является модульной, когда разделено несколько файлов. Вы можете использовать IDE для поиска.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )