iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

淺入淺出分散式儲存系列 第 11

Day11 Lab 1 - 簡單的Object storage系統

  • 分享至 

  • xImage
  •  

我們的第一個Lab就從Simple object system開始,程式碼我放在這

https://github.com/kaichiachen/python-simple-object-storage/tree/master/simple_obj_system

我們只需要兩個額外的library - flask和requests

可以透過pip安裝指令進行安裝

pip install flask requests

接下來講解Lab裡程式的部分

從前端開始講順便說我們Object storage的API接口,我們會提供什麼功能

前端的程式碼都在frontend.py裏面,用的是requests的http協議對後端進行request

我們的唯一功能就是根據參數object name和object content,利用post上傳一個object

server_url = f"http://{args.server}:{args.port}"
res = requests.post(f"{server_url}/{args.name}", files={'file': args.content})

如果上傳成功,就可以在後端看到有object被上傳成功並且存在電腦裡,接下來我們講後端的邏輯

後端

後端的程式碼在資料夾backend裏面,只有一個 run.py,短短40行不到的程式碼

Flask的基本用法我就不多說明了,我直接講系統的處理邏輯

一開始系統啟動後,會建立一個存object的資料夾,位在/tmp/objs

def prepareObjEnv():
   try:
     os.mkdir('/tmp/objs', 0o755)
   except Exception as e:
      # should be file exists
      print(e, flush=True)

   dir_path = os.path.join('/', 'tmp', 'objs')
   return dir_path

然後我們只有兩個API,監聽Get和Post method,我們接收到來自frontend的post object request後,會執行

f = request.files['file']
f.save(os.path.join(DIR_PATH, f"{escape(obj_name)}"))

直接把object存進去指定的資料夾下面

讀者可以試著在起動好後端程式後,執行前端程式

python frontend.py --name 'obj01' --content 'helloworld'

然後再後端看看上傳好的object的內容

#> cat /tmp/objs/obj01
helloworld

這個Lab真的非常非常簡單,下一個Lab我們會用將近十天的份量去講解他,今天這個看起來只是文件的上傳而已,下一個Lab就會是分散式儲存系統了


上一篇
Day10 Lab說明
下一篇
Day12 分散式儲存系統的必要功能
系列文
淺入淺出分散式儲存30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言