【筆記】《app後臺開發運維和架構實踐》

吹泡泡的星星koky發表於2018-02-08

【筆記】《app後臺開發運維和架構實踐》

參考點:

  • app後臺開發人員在設計稿上標註哪個介面呼叫了哪個api。(仍是根據物件設計api,並非根據頁面)
  • 返回資料空值不要null,app端易報錯,PHP返回字典及陣列均是array.
  • 客戶端不同圖片尺寸可以在資料庫中只儲存一份原圖:在客戶端的請求中帶上圖片尺寸需求,即使不同版本的需求不同,也可以資料庫不需要記錄多個圖片
  • API的版本升級:V2版本controller繼承V1版本controller,只重寫(同參同名)方法
  • API要表明應該返回的資料欄位和格式等。測試就可以先測介面

  • Redis,MongoDB,MySQL對比

    • Redis資料只存放在記憶體,讀寫速度開,適用於讀寫頻率高的資料,但成本高
    • MongoDB:適用於網站資料,實時性網站資料易複製及具有高度伸縮性。適用於LBS。適用於大尺寸底價值的資料。不適用於複雜計算
    • MySQL:事務性的系統(轉賬),複雜SQL問題
  • 搜尋:實現的關鍵是分詞和倒序索引。每行資料的關鍵字建立對映表,每個關鍵字出現在哪行記錄下來。搜尋只需要查對映表。

通訊安全

  • 涉及安全性的API要使用https協議
  • 使用token來代替每次都用賬號密碼輸入
  • token加在URL中,明文不安全,處理辦法:和請求url一起加密,生成sign來請求。(URL簽名只能保證token不洩漏)
  • 防止url被截獲後不斷請求(百度也有說防止重複請求、按照呼叫順序被處理、需要精確獲取客戶端時間,防止快取等原因):新增時間戳,進行相隔時間對比。(保證後臺與app時間同步,啟動時獲取後臺時間,儲存時間差)

除上述之外還要使用AES對稱加密,保障安全,更安全的方式有:非對稱加密DES,第三方工具加密,使用自定義通訊協議傳輸敏感資訊,使用自主研發的空間輸入密碼,密碼不儲存在app端。

Nginx

高效能的HTTP和反向代理伺服器,佔用記憶體小,併發能力強

  • Promise:非同步程式設計
  • Nodejs是一個讓JS執行在伺服器端的開發平臺

相關文章