1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sjqzhang-go-fastdfs

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README-en.md

Видение: предоставить пользователям наиболее простую, надёжную и эффективную распределённую файловую систему.

Go-FastDFS — это распределённая файловая система, основанная на протоколе HTTP. Она основана на концепции простоты. Весь простой дизайн делает её работу и расширение более простыми. Она обладает высокой производительностью, высокой надёжностью и не имеет централизации, не требует обслуживания и т. д.

Все беспокоятся о такой простой файловой системе. Не является ли она ненадёжной, можно ли её использовать в производственной среде? Ответ: да, она эффективна, потому что проста, и стабильна, потому что проста.

Если вы беспокоитесь о функции, то запустите модульный тест, если вы беспокоитесь о производительности, то запустите стресс-тест, проект поставляется с ним, запускайте более уверенно ^_^.

Примечание: пожалуйста, внимательно прочитайте эту статью перед использованием, особенно вики.

Поддерживаемые функции:

  1. Поддержка загрузки с помощью команды curl.
  2. Поддержка загрузки через браузер.
  3. Поддержка HTTP-загрузки.
  4. Поддержка автоматической синхронизации между несколькими машинами.
  5. Поддержка загрузки по точкам останова.
  6. Поддержка автоматического создания конфигурации.
  7. Поддержка автоматического объединения небольших файлов (уменьшение занимаемой площади inode).
  8. Поддержка второго прохода.
  9. Поддержка междоменного доступа.
  10. Поддержка миграции одним щелчком мыши.
  11. Поддержка параллельного опыта.
  12. Поддержка возобновления по точкам останова (tus).
  13. Поддержка развёртывания в Docker.
  14. Поддержка самоконтроля и сигнализации.
  15. Поддержка масштабирования изображения.
  16. Поддержка кода аутентификации Google.
  17. Поддержка пользовательской аутентификации.
  18. Поддержка просмотра информации о файлах кластера.
  19. Использование универсального протокола HTTP.
  20. Отсутствие необходимости в специальном клиенте (поддержка wget, curl и т.д.).
  21. Класс FastDFS.
  22. Высокая производительность (использование leveldb в качестве библиотеки kv).
  23. Высокая надёжность (дизайн чрезвычайно прост, используются зрелые компоненты).
  24. Нет централизованного дизайна (все узлы могут одновременно читать и писать).

Преимущества:

  • Отсутствие зависимостей (один файл).
  • Автоматическая синхронизация.
  • Автоматическое восстановление после сбоя.
  • Удобное обслуживание с помощью каталога талантов.
  • Поддержка различных сценариев.
  • Автоматическая дедупликация файлов.
  • Настройка каталога.
  • Сохранение исходного имени файла.
  • Генерация уникальных имён файлов.
  • Загрузка через браузер.
  • Просмотр информации о кластерных файлах.
  • Мониторинг кластера и электронная сигнализация.
  • Объединение небольших файлов (снижение занимаемой площади inode).
  • Второй проход.
  • Масштабирование изображения.
  • Код аутентификации Google.
  • Пользовательская аутентификация.
  • Междоменный доступ.
  • Очень низкие накладные расходы на ресурсы.
  • Возобновление по точкам останова (tus).
  • Развёртывание в Docker.
  • Миграция одним щелчком (миграция из других системных файловых систем).
  • Параллельный опыт (параллельный опыт с существующей файловой системой, подтверждение ОК и затем миграция одним щелчком).
  • Поддержка токена для загрузки (token=md5(file_md5+timestamp)).
  • Простота эксплуатации и обслуживания, только одна роль (в отличие от fastdfs, где есть три роли: Tracker Server, Storage Server, Client), конфигурация генерируется автоматически.
  • Одноранговая сеть (упрощённое управление и обслуживание).
  • Все узлы могут читать и записывать одновременно.

asciicast

Запуск сервера (компиляция, загрузка опыта):

./fileserver

Команда загрузки:

curl -F file=@http-index-fs http://10.1.xx.60:8080/upload

Загрузка через веб-браузер (открытие браузера):

http://127.0.0.1:8080

Загрузка кода (параметры см. в разделе «Загрузка через браузер»):

Python:

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)

Golang:

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 reliable can it be used in a production environment?
Этот проект широко используется в рабочей среде, например, из-за опасений не соответствовать требованиям.

Вы можете провести стресс-тест его функций перед использованием, при этом:

**Любая проблема может быть упомянута напрямую.**

**Как запустить программу в фоновом режиме?**

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 )

Вы можете оставить комментарий после Вход в систему

Введение

**go-fastdfs** — это простая распределённая файловая система, написанная на Golang. Она обладает такими преимуществами, как отсутствие централизации, высокая производительность, надёжность и отсутствие необходимости обслуживания. Система поддерживает функции: * продолжения передачи после разрыва соединения; * поблочной загрузки файлов; * объедин... Развернуть Свернуть
Unlicense
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/sjqzhang-go-fastdfs.git
git@gitlife.ru:oschina-mirror/sjqzhang-go-fastdfs.git
oschina-mirror
sjqzhang-go-fastdfs
sjqzhang-go-fastdfs
master