перейти мономерные языковые объекты, хранящиеся системы хранения распределенных объектов

 

Хранение объекта

Основная концепция

Есть три типа основного хранения: блок хранения, и память для хранения файлов объекта

  • NAS (хранение файлов): Сетевое устройство хранения данных, предоставляя возможности хранения данных и веб-сервер файловой системы, клиент может получить доступ к файловой системе на NAS, вы также можете загружать и скачивать файлы, используя протоколы: SMB, NFS и AFS, такие как сетевой файловой системы соглашение для клиента является файл-сервер в сети.
  • SAN (блок хранения): Storage Area Network, а разница между NAS является SAN обеспечивает только хранение блок, и файловая система абстракции клиенту управлять использованием протокола: Волокно \ Channel, ISCSI \ ATA над Ethnet и HyperSCSI, для клиентов это конец диска, вы можете отформатировать его, создавать файловые системы и смонтировать.
  • Хранилище объектов: относится к объектно-ориентированным объектам, преимущество и сбор блоки хранения файлов, имеет высокую скорость доступа, большую емкость и другие характеристики. И легко сопрягать облачные вычисления, это новая архитектура сети хранения данных.

Хранение объектов системы (Object-Based System Storage), которая сочетает в себе преимущества NAS и SAN, а также имеет прямой доступ к высокоскоростному SAN и NAS обмена данными и другие преимущества, обеспечивая высокую надежность, обмен данными кросс-платформенной и безопасное хранение архитектура.

Для того, чтобы лучше проиллюстрировать различия трех, у меня есть аналогии, предположим, что у вас есть три человека хотят получить от А до Б, теперь есть три режима транспортировки. Выбранный автомобиль, автобус ацетат выбора, пропионат выбран метро. Блок хранение, как автомобили, быстрая скорость, но малая мощность (седан занимает всего несколько людей), для хранения файлов похожи на автобус, медленно (есть автобусная станция и светофоры должны быть рассмотрены), но большая емкость (и больше не могут сидеть меньше люди); хранение объекта похоже на метро, ​​высокая скорость, большая емкость.

 

 

 

 

Различные управления данными

  • NAS, данные в виде файла управления.
  • SAN, управление данными в виде блоков данных, причем каждый блок имеет свой собственный адрес, никакой дополнительной справочной информации.
  • Объект хранения, посредством объекта управления данными, один объект включает в себя: данные, метаданные, глобальный идентификатор.
Объекты данных, как правило, неструктурированные данные, такие как: фотографии, видео или другие документы, объекты метаданных это относится к соответствующему описанию объекта, такие как: размер изображения, владелец документа и т.д .; идентификатор объекта является глобальным уникальный идентификатор, используемый для различения объектов.

 

Различные способы доступа к данным

  • NAS, доступ к файлам, хранящиеся на удаленном сервере с помощью сетевых протоколов, таких как NFS
  • SAN, доступ к блокам данных по адресу SAN блока данных по
  • хранения объекта через веб-служб REST для доступа к объекту
Объект хранения, простой способ получить доступ к объекту, объект должен работать через интерфейс REST с HTTP глаголов (GET, POST, PUT, DELETE и т.д.) , описанных операций. Кроме того, существует метод доступа является использование основных поставщиков облачных клиента для работы объекта. 
Например: s3cmd Amazon, Али облака osscmd / ossutil, Tencent облака coscmd и так далее.

  

 

Преимущества хранения объекта и недостатки

Позвольте мне говорить о преимуществах, вероятно, до следующего упоминания:

  • Высокая масштабируемость: хранение объект может расширить пропускную способность десятков до сотен EB, чтобы воспользоваться преимуществами памяти высокой плотности;
  • Эффективность: плоская структура, система каталогов не сложные эффекты на производительность;
  • Вы должны мигрировать: система хранения данных объекта представляет собой шкалу, по мере увеличения мощности, данные автоматически распределяются на все узлы в соответствии с алгоритмом хранятся объектами;
  • Высокий уровень безопасности: аутентификация хранения ключей объекта , как правило , с HTTP называет себя обеспечивает хранение объектов для обеспечения доступа к данным, легкий доступ: поддерживает не только (S) протокола HTTP, используя REST API вызова и извлечения данных, а также увеличивает NFS и SMB поддержка; стоимость относительно низка: по сравнению с объемным хранением, объект магазин наиболее экономически эффективным типа хранения данных и облачные вычисления с, свойством объекта , сохраненным в этой игре больше всего.

Упоминание Минусы:

  • Окончательные консистенции: Из-за различные позиции различных узлов, синхронизация данных может быть какой-то время задержка или ошибка;
  • Не легко сделать базу данных: объекты, хранящиеся более подходит для хранения этих файлов были немного изменены даже то же самое, и для приложений, таких как хранение базы данных необходимы непосредственно друг с другом отображением голого диска или хранение блока является более подходящим.

 

 

Единая архитектура хранения объекта для достижения

архитектура хранения одного объекта

 

идти язык

пакет основного 

импорта ( 
	"Ио" 
	"чистый / HTTP" 
	"Os" 
	"Журнал" 
	"строка" 
) 

Func основного () { 
	http.HandleFunc ( "/ объекты /", Handler) 
	Println ( "сервер ...") 
	журнал. Фатальная (http.ListenAndServe ( "127.0.0.1:8006", ноль)) 
} 

функ Handler (ш http.ResponseWriter, г * http.Request) { 
	Println (г) 
	м: = r.Method 
	если т == http.MethodPut { 
		Помещенный (ш, г) 
		возвращение 
	} , 
	если т == http.MethodGet { 
		Get (ш, г) 
		возвращение 
	} 
	w.WriteHeader (http.StatusMethodNotAllowed) 

} 

функ Помещенный (ш http.ResponseWriter, г * HTTP.Запрос){
	// C: \ Users \ Administrator \ перейти \ SRC \ awesomeProject \ test_fileClose () 
	io.Copy (ш, е)
	е, е: = os.Create (( "C: / Users / Администратор / перейти / SRC / awesomeProject / test_file" + "/ объекты /" + strings.Split (r.URL.EscapedPath (), "/") [ 2])) , 

	если е! = ноль { 
		log.Println (е) 
		w.WriteHeader (http.StatusInternalServerError) 
		возвращение 
	} 
	отложить f.close () 
	io.Copy (F, r.Body) 
} 


функ Get (ш http.ResponseWriter , г * http.Request) { 

	е, е: = os.Open (( "C: / Users / администратор / перейти / SRC / awesomeProject / test_file" + "/ объекты /" + strings.Split (r.URL.EscapedPath (), "/") [2])) , 

	если е! = ноль { 
		log.Println (е) 
		w.WriteHeader (http.StatusNotFound) 
		возвращение 
	} 
	отложить f.close ()
}

  

детализированный

Основная функция, зарегистрировать обработчик HTTP и начать прослушивание порта.

Http.HandleFunc роль заключается в регистрации обработчиков HTTP Handler, если доступ к службе клиентской машины HTTP и к «/ объектов /» в начале, то запрос будет отвечать за обработку Handler.

http.ListenAndServer формального прослушивания порта, при нормальных обстоятельствах было бы слушать, не-нормальные обстоятельства, log.Fatal будет за ошибки и выйти из программы.

http.HandleFunc ( "/ объекты /", Handler) 
Println ( "сервер ...") 
log.Fatal (http.ListenAndServe ( "127.0.0.1:8006", ноль))
 

Функция Handler, запрос HTTP и самый важный ответ ответа, параметр запроса, в зависимости от режима запроса клиента, выполняют различные функции обработки: Помещенная и получить функции функции.

Обработчик FUNC (ш http.ResponseWriter, г * http.Request) { 
	Println (г) 
	м: = r.Method 
	если т == http.MethodPut { 
		Помещенный (ш, г) 
		возвращение 
	} , 
	если т == http.MethodGet { 
		Получить (ш, г) 
		возвращение 
	} 
	w.WriteHeader (http.StatusMethodNotAllowed) 

}

 

Поместите функцию, r.URL переменные записи запроса URL-адрес HTTP, метод EscapedPath для получения результатов последующего участка пути эвакуации, путь в виде: / объекты / <имя_объект>, и функция разделено strings.Split / объекты / < object_name>, делится на «», «объекты», <object_name>, перейдите к третьему элементу массива <object_name>, os.Create е создать тот же файл в корневой каталог локальной файловой системы хранения данных, создать успех будет r.Body запись в файл F с io.Copy.

FUNC Помещенный (ш http.ResponseWriter, г * http.Request) { 
	// C: \ Users \ Administrator \ идут \ SRC \ awesomeProject \ test_file 
	е, е: = os.Create (( "C: / Users / Администратор / перейти /src/awesomeProject/test_file"+"/objects/"+strings.Split(r.URL.EscapedPath(),"/")[2])) , 

	если е! = ноль { 
		log.Println (е) 
		w.WriteHeader (http.StatusInternalServerError) 
		возвращение 
	} 
	отложить f.close () 
	io.Copy (F, r.Body) 
}

Получить подобную функцию с функцией Пут.
Эта статья распространяется хранение объектов - для достижения первой главе обобщаются принципы, архитектуры и языка Go


рекомендация

отwww.cnblogs.com/-wenli/p/11434347.html