成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

App后臺api開發(fā)前的準備

laoLiueizo / 628人閱讀

摘要:負責從拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引搜索模塊工作流程如下模塊從中拉取數(shù)據(jù)模塊用經(jīng)過中文分詞后的數(shù)據(jù)建立索引客戶端向模塊發(fā)起搜索請求模塊查找索引中的數(shù)據(jù)模塊得到索引中符合要求的數(shù)據(jù)的等數(shù)據(jù)把數(shù)據(jù)返回給客戶端

(整理自《App后臺開發(fā)運維和架構(gòu)實踐》 作者:曾健生)

一、從業(yè)務邏輯中提煉API接口
此過程可分為六個階段:

業(yè)務邏輯思維導圖

功能——業(yè)務邏輯思維導圖

基本功能模塊關系

功能模塊接口UML(設計出API)

編寫API文檔

在設計稿中標注API

1. 業(yè)務邏輯思維導圖

抽象業(yè)務流程,列出結(jié)構(gòu)關系,相同的元素(推送、評論、圖片上傳)用同一種顏色標記。

2. 功能——業(yè)務邏輯思維導圖

列出功能模塊業(yè)務邏輯相結(jié)合。
功能模塊的劃分,可以按照“人”、“事”來劃分?!叭恕本褪且粋€大模塊,“事”要看有哪些事,相同的事就是一個模塊,人和事之間的關系,就是關系模塊 。

比如分析發(fā)消息這個業(yè)務:

我 (我是人?!叭恕笔且粋€模塊)

消息 (消息是“事物”?!跋ⅰ笔且粋€模塊)

我發(fā)消息 (發(fā)消息,是事件,不是事物,是人與物的關系,是一個關系模塊)

3. 基本功能模塊關系

理清各個模塊之間的依賴調(diào)用關系

4. 功能模塊接口UML (設計出API)

具體分析各個模塊的具體的功能(具體的API),再根據(jù)上一步驟整理的模塊間的關系,畫出UML圖

5. 編寫API文檔

提倡使用TDD(測試驅(qū)動)原則開發(fā),編寫在線API文檔,既是一份文檔,也是一個在線測試工具。
相關的開源工具:

swagger-ui

eolinker

sosoapi

http://www.easyapi.com/

6. 設計稿標注API

為了方便app端和web端的開發(fā)人員,快速理解和使用API,可以在設計圖中在相應的界面相應的元素上,標注出需要的API,這個工作可以分析編寫API文檔同時進行。

二、設計API的要點 1. 根據(jù)對象設計API

API設計中最重要的是根據(jù)對象而不是界面來設計API,提高API的可擴展性。

2. API的命名

API的命名務必要做到從API名稱就能明白這個API的作用。

3. API的安全性

涉及到登錄和支付功能的,使用HTTPS協(xié)議

使用URL簽名的方式驗證API請求的合法性

使用AES對稱加密的方式,保護API請求和返回中的所有數(shù)據(jù)
##### 更進一步的通信安全:

使用自定義的通信協(xié)議傳輸敏感數(shù)據(jù)

使用DES(非對稱加密算法)

使用邦邦加密、愛加密等第三方工具對APP進行加密

涉及到支付功能的,每一次都需要輸入密碼,密碼不在本地保存

使用自主開發(fā)的輸入控件輸入敏感信息

4. API返回的數(shù)據(jù)

APP客戶端主要開發(fā)語言java和objective-C都是強類型語言,所以絕對不允許返回null值。

數(shù)據(jù)庫設計時,所有字段都必須有默認值,不允許出現(xiàn)null。

app客戶端必須用全局的函數(shù)處理所有API返回的數(shù)據(jù),當返回的數(shù)據(jù)缺少某個值時,自動補上一個默認值。

使用PHP作為APP后臺的開發(fā)語言存在一個問題:PHP中數(shù)組和字典都屬于Array,但在java和objective-C中這兩者是不一樣的。

5. 圖片的處理

app開發(fā)中,通常需要一張圖片有多種尺寸,以適應app的不同版本和各異的客戶端。
建議:

App客戶端本地緩存常用圖片,緩存不能命中時才去請求服務器

App端需要的不同尺寸的圖片時,發(fā)送帶尺寸參數(shù)的請求到后臺,有后臺動態(tài)生成并緩存。

文件云存儲服務(七牛,又拍)和CDN都提供圖片的縮放功能,高速的文件上傳下載,有條件的情況下,推薦使用。

6. 返回的提示信息

最科學的情況是APP后臺只返回信息代碼,具體的文字由客戶端決定。
需要給App客戶端程序員返回的提示信息,要專業(yè)清晰,比如“少傳了什么參數(shù),哪個參數(shù)有問題”

7. 關于API的版本升級問題

App客戶端做了改版后,部分API不能滿足需求了,這時就需要升級API,要避免同一個App客戶端調(diào)用不同版本的API,一般會全部升級。例如:原來是“xxx.com/v1/getpost”, 升級為“xxx.com/v2/getpost”。
注意:

升級版本時,V2版本的API的Controller必須要繼V1版的Controller,這樣V2版本的API只重寫需要改動的API

完善文檔,在線API測試文檔中詳細說明,方便客戶端人員調(diào)試。

三、選擇合適的數(shù)據(jù)庫

內(nèi)存型還是硬盤型

內(nèi)存的讀取速度大概是硬盤的80倍。

內(nèi)存容量很有限。例如Ucloud服務器最多有64G內(nèi)存,硬盤可高達1000G。

Redis,MongoDB,mysql 讀寫數(shù)據(jù)的區(qū)別

存儲服務 類型 說明
Redis 內(nèi)存型 支持持久化保存到硬盤
mongoDB 混合 使用MMAP機制,操作內(nèi)存完成文件讀寫
Mysql 硬盤型

Redis,MongoDB,Mysql 查詢數(shù)據(jù)的區(qū)別

存儲服務 說明
Redis “鍵值對”存儲,讀寫速度快
MongoDB、 Mysql 有id或索引,效率高;無id或索引,效率低

Redis,MongoDB,Mysql 適用場景

存儲服務 適用場景
Redis 適合存儲讀寫頻率非常高,且知道“鍵”的數(shù)據(jù),比如用戶身份信息,在登錄或其他操作中都能用到
mongoDB 大尺寸、低價值的數(shù)據(jù);高伸縮性場景;地理坐標查詢功能強大,適用于LBS應用。劣勢:不支持事務,查詢功能遜于sql
Mysql 最常用的存儲服務,支持事務,支持復雜sql
四、選擇消息隊列 1. 消息隊列應用場景

消息隊列可以把大量的并發(fā)請求變成串行請求,起到減輕服務器負擔的作用。
有些小任務需要花很多時間,但是遲點完成也可以,就可以把這樣的任務交給消息隊列處理。比如一些不要求馬上完成的發(fā)送郵件,推送消息的任務。

2. 消息隊列介紹

消息隊列一般包括三個角色:隊列服務端,隊列生產(chǎn)者,隊列消費者。
常見的消息隊列產(chǎn)品:

消息隊列 介紹
RabbitMQ 重量級產(chǎn)品,支持大量協(xié)議,適合企業(yè)級開發(fā);支持路由,負載均衡,數(shù)據(jù)持久化;自帶web監(jiān)控界面,方便監(jiān)控。
Redis 輕量級,運維成本低
ZeroMQ 號稱最快,適合大吞吐量場景
五、搜索技術介紹

搜索的基本原理是“分詞”和“倒序索引”。
常見的開源搜索軟件:

Lucene
很受歡迎的免費java信息檢索程序庫
solr
基于Lucene,查詢語言更豐富,查詢性能更好,提供了完善的功能管理界面。對外提供類似于Web-service的API接口,用戶可以通過http請求向搜索引擎服務器提交一定格式的xml文件,生成索引;也可以通過http get操作提出查找請求,得到XML格式的返回結(jié)果。
ElasticSearch
它是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶的全文搜索引擎,基于RESTful Web接口。
Sphinx
Sphinx是一個基于Sql的全文檢索引擎,其結(jié)合MySQL、PostgreSQL做全文索引,可以提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能,使應用程序更容易實現(xiàn)專業(yè)化的全文索引。Sphinx特別為一些腳本語言設計搜索API接口,如PHP、Python、Perl、Ruby等,同時為MySQL也設計了一個存儲引擎插件。
CoreSeek
CoreSeek是一款中文全文索引/搜索軟件,基于Sphinx研發(fā),專攻中文搜索和信息處理領域,適用于行業(yè)/垂直搜索、論壇/站內(nèi)搜索、數(shù)據(jù)庫搜索、文檔/文獻檢索、信息檢索、數(shù)據(jù)挖掘等應用場景,用戶可以免費下載使用。
Coreseek有兩個核心模塊Indexer和Search。

Indexer: 負責從mysql拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引

Search: 搜索模塊

Coreseek工作流程如下:

Indexer模塊從MySQL中拉取數(shù)據(jù)

Indexer模塊用經(jīng)過中文分詞后的數(shù)據(jù)建立索引

客戶端向Search模塊發(fā)起搜索請求

Search模塊查找索引中的數(shù)據(jù)

Search模塊得到索引中符合要求的數(shù)據(jù)的id等數(shù)據(jù)

把數(shù)據(jù)返回給客戶端

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/23119.html

相關文章

  • App后臺api開發(fā)前的準備

    摘要:負責從拉取數(shù)據(jù)源,把數(shù)據(jù)源分詞,建立索引搜索模塊工作流程如下模塊從中拉取數(shù)據(jù)模塊用經(jīng)過中文分詞后的數(shù)據(jù)建立索引客戶端向模塊發(fā)起搜索請求模塊查找索引中的數(shù)據(jù)模塊得到索引中符合要求的數(shù)據(jù)的等數(shù)據(jù)把數(shù)據(jù)返回給客戶端 (整理自《App后臺開發(fā)運維和架構(gòu)實踐》 作者:曾健生) 一、從業(yè)務邏輯中提煉API接口 此過程可分為六個階段: 業(yè)務邏輯思維導圖 功能——業(yè)務邏輯思維導圖 基本功能模塊關系 ...

    yzzz 評論0 收藏0
  • 淺析微信支付:開發(fā)前的準備

    摘要:本文是淺析微信支付系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。淺析微信支付系列已經(jīng)更新兩篇了喲,沒有看過的朋友們可以看一下。開通微信支付需要注冊登陸微信商戶平臺,微信支付相關的信息都需要在這個平臺上進行操作。 本文是【淺析微信支付】系列文章的第三篇,主要會講一下在開發(fā)前的一些注意事項。 淺析微信支付系列已經(jīng)更新兩篇了喲~,沒有看過的朋友們可以看一下。 淺析微信支付:前篇大綱...

    yanest 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<