吳 沖趙夢娜花向紅戚瀚文
1武漢大學(xué)測繪學(xué)院,湖北 武漢,430079
2武漢融云科技有限責(zé)任公司,湖北 武漢,430079
3武漢大學(xué)災(zāi)害監(jiān)測與防治研究中心,湖北 武漢,430079
電子商務(wù)行業(yè)快速發(fā)展,促使物流快遞行業(yè)的需求量迎來爆發(fā)式的增長。但增長背后,也有諸多問題亟待解決:如物流流通不透明、信息溯源難、事故責(zé)任不清、企業(yè)間數(shù)據(jù)不共享等。并且還存在著環(huán)節(jié)多、時間跨度長、空間跨度大,導(dǎo)致監(jiān)管困難、假冒偽劣等問題均難以根除。而食品安全的關(guān)鍵在于采購?fù)该骰?,可追溯的食品來源信息,以保障公眾對自己所食用食品的知情?quán)。要建設(shè)食品溯源信息體系,目前最大的問題是物流環(huán)節(jié)信息采集的脫環(huán),因此需要建立一個透明可信的農(nóng)貿(mào)產(chǎn)品物流平臺。
區(qū)塊鏈技術(shù)是一種互聯(lián)網(wǎng)數(shù)據(jù)庫技術(shù),其特點是去中心化、數(shù)據(jù)防篡改和可溯源,讓每個人均可參與數(shù)據(jù)庫記錄。歐洲鹿特丹港等機(jī)構(gòu)搭建了世界首個針對物流領(lǐng)域的區(qū)塊鏈物流研究聯(lián)盟[1]探索區(qū)塊鏈技術(shù)的物流領(lǐng)域?qū)嶋H應(yīng)用。Hackius等[2]的研究驗證了區(qū)塊鏈技術(shù)在物流行業(yè)中具有深遠(yuǎn)的促進(jìn)意義。Tian[3]構(gòu)建了基于RFID(radio frequency identification)技術(shù)和區(qū)塊鏈技術(shù)的可溯源的農(nóng)產(chǎn)品供應(yīng)鏈系統(tǒng),實現(xiàn)可信信息的可追溯性,從而有效地保證食品安全。寧卓等[4]提出了一種基于聯(lián)盟區(qū)塊鏈的物流業(yè)信息平臺系LIP-Chain(logistics information platform chain),解決了物流快遞行業(yè)中多方共同參與物流業(yè)務(wù)的協(xié)調(diào)問題。何黎明[5]、汪傳雷等[6]等認(rèn)為區(qū)塊鏈可以改變供應(yīng)鏈體系中的物流、信息流、資金流的共享以及交互方式,改變產(chǎn)品從生產(chǎn)、存儲、運(yùn)輸?shù)剿瓦_(dá)消費(fèi)者的整條供應(yīng)鏈,從而使整個供應(yīng)鏈條變得更加透明、開放、有效以及大規(guī)模協(xié)同合作。本文將眾包的思想融入到物流領(lǐng)域中來,讓物流不再是某個公司或組織的專屬,而是具有運(yùn)力提供能力的社會組織乃至個體均可參與的社會經(jīng)濟(jì)團(tuán)體性活動,從底層構(gòu)建共享物流平臺的交易和存儲方式,利用區(qū)塊鏈技術(shù)的數(shù)據(jù)不可篡改特性,構(gòu)建分布式數(shù)據(jù)存儲中心,建設(shè)一個基于區(qū)塊鏈技術(shù)的眾包式農(nóng)貿(mào)產(chǎn)品物流平臺。
平臺架構(gòu)的設(shè)計以車輛資源管理為核心,注重車輛資產(chǎn)數(shù)據(jù)化和車輛運(yùn)行動態(tài)化兩個方向發(fā)展的規(guī)律,設(shè)計原則包括親密性[7]、對齊[8]、對比、重復(fù)、簡化交互[9]、引用過度、即時反應(yīng)等。平臺總架構(gòu)包括:客戶端、展示層、業(yè)務(wù)層、數(shù)據(jù)層、底層、數(shù)據(jù)庫和運(yùn)行環(huán)境7層,如圖1所示。

圖1 眾包式農(nóng)貿(mào)產(chǎn)品物流平臺架構(gòu)Fig.1 Logistics Platform Architecture of Crowd Sourcing Agricultural Products
客戶端即前端是人機(jī)交互的載體,是運(yùn)力需求者(有發(fā)送貨物需求的人或團(tuán)體)和提供者(具有運(yùn)力提供能力的組織或個體)使用系統(tǒng)功能的入口和參與眾包式物流體系的渠道。監(jiān)控調(diào)度后臺是系統(tǒng)維護(hù)者使用的監(jiān)控終端。
展示層是連接前端和后端的中間層,包含界面渲染和數(shù)據(jù)交互兩個環(huán)節(jié),數(shù)據(jù)交互采用Socket實時通信,界面渲染方面該平臺最終不提供Web端客戶端,而采用移動應(yīng)用的方式設(shè)計,故不提供相應(yīng)的渲染模塊。
業(yè)務(wù)層控制整個系統(tǒng)的邏輯組織和交互,對外負(fù)責(zé)處理來自客戶端(用戶)的請求,對內(nèi)負(fù)責(zé)組織協(xié)調(diào)各業(yè)務(wù)層單元功能模塊,以高效完成敏捷地響應(yīng)客戶請求。
數(shù)據(jù)層和數(shù)據(jù)庫,數(shù)據(jù)源源不斷從客戶端(用戶)上傳到后臺,系統(tǒng)將實時響應(yīng)數(shù)據(jù)請求,其中響應(yīng)請求的環(huán)節(jié)中,數(shù)據(jù)層會將大量的數(shù)據(jù),或經(jīng)過處理加工后將數(shù)據(jù)存儲到數(shù)據(jù)庫。本平臺使用MongoDB作為平臺業(yè)務(wù)數(shù)據(jù)庫,選擇Redis搭建數(shù)據(jù)緩存服務(wù)實時保存用戶登錄狀態(tài)、車輛狀態(tài)和訂單狀態(tài),采用InfluxDB作為時序數(shù)據(jù)庫,保存一系列的訂單位置數(shù)據(jù),采用LevelDB作為區(qū)塊鏈數(shù)據(jù)庫,保存執(zhí)行區(qū)塊的讀寫操作。
底層包括身份驗證機(jī)制(基于數(shù)字簽名技術(shù)[10])、數(shù)據(jù)區(qū)塊(包括區(qū)塊頭和區(qū)塊體,每次寫入數(shù)據(jù),就是創(chuàng)建一個區(qū)塊)、分布式時間戳服務(wù)[11](利用時間戳實現(xiàn)在時間上有序的鏈條,將一個個區(qū)塊按時序組成鏈),HASH算法(構(gòu)成“內(nèi)容-索引”的對應(yīng)關(guān)系)和基于帶擾動學(xué)習(xí)的同態(tài)加密技術(shù)[12](加密后的數(shù)據(jù)只有用戶自身可以進(jìn)行解密)。
本平臺核心功能模塊包括:車輛模塊、用戶模塊、訂單模塊、實時GPS模塊、實時GIS模塊和數(shù)據(jù)區(qū)塊鏈化模塊,如圖2所示。

圖2 系統(tǒng)功能結(jié)構(gòu)Fig.2 Functional Structure of the System
車輛模塊是本項目系統(tǒng)對運(yùn)力管理的模塊,設(shè)計按運(yùn)力提供者分類來進(jìn)行抽象管理;用戶模塊是本項目系統(tǒng)對用戶管理的模塊,以用戶為核心;訂單模塊是運(yùn)力需求(用戶)和運(yùn)力提供(車輛)的結(jié)合,維護(hù)著整個訂單全生命周期;實時GPS模塊,主要運(yùn)行在數(shù)據(jù)緩存中心,圍繞運(yùn)力提供者(運(yùn)力提供)實時的地理位置數(shù)據(jù);實時GIS模塊,在用戶下單尋找匹配運(yùn)力資源時展示需求流和運(yùn)力流的地理信息可視化;數(shù)據(jù)區(qū)塊鏈化是指本平臺中,需進(jìn)行保密和不可篡改的數(shù)據(jù),主要圍繞在訂單的狀態(tài)變化數(shù)據(jù)。如訂單創(chuàng)建時的信息結(jié)構(gòu)將作為第一個區(qū)塊,成為初始區(qū)塊鏈,訂單運(yùn)力匹配時,將匹配信息作為第二個區(qū)塊連接到上一個區(qū)塊上去,以此類推,每當(dāng)訂單發(fā)生狀態(tài)發(fā)生改變時將寫入訂單區(qū)塊鏈中。利用區(qū)塊鏈的不可篡改特性來保證數(shù)據(jù)的安全,保證訂單溯源數(shù)據(jù)的真實可靠。
選用MongoDB作為平臺業(yè)務(wù)數(shù)據(jù)庫,存儲常規(guī)業(yè)務(wù)數(shù)據(jù)包括用戶、車輛、訂單、位置、收貨地址等數(shù)據(jù)信息等。
用戶信息:包括索引字段,所屬靜態(tài)信息字段,地理信息字段。車輛信息:包括索引字段,車輛靜態(tài)數(shù)據(jù)字段,車輛所屬信息字段。訂單信息:包括訂單基礎(chǔ)字段,收貨人信息字段,發(fā)貨人信息字段,快遞信息字段,貨物信息字段,車輛信息字段及通用字段。位置信息:訂單實時狀態(tài)模型,是記錄訂單發(fā)貨環(huán)節(jié)的時空數(shù)據(jù),采用時序數(shù)據(jù)庫保存,保存后返回的記錄索引,將作為區(qū)塊寫入到訂單鏈中,以實現(xiàn)全程可追蹤可溯源。收貨地址信息:收貨地址模型是用戶常用且進(jìn)行收藏操作的收貨人信息。
本平臺后端開發(fā)使用了JavaScript語言,其具備快速響應(yīng),易于升級的能力,開發(fā)工作的完成借助于Node.JS平臺。Node.JS是讓JavaScript運(yùn)行在服務(wù)端的開發(fā)平臺,采用事件驅(qū)動和非堵塞I/O模型,是輕量和高效的web平臺,非常適合構(gòu)建數(shù)據(jù)密集型分布式實時應(yīng)用[13],為JavaScript提供了操作文件、創(chuàng)建HTTP服務(wù)、TCP/UDP服務(wù)等接口,可以完成其他后臺語言(Python、PHP等)能完成的工作。
微服務(wù)架構(gòu)技術(shù)是大型異構(gòu)系統(tǒng)的發(fā)展的關(guān)鍵架構(gòu)[14],設(shè)計思路是將整個應(yīng)用分解成一個個獨(dú)立的服務(wù)單元,各單元之間通過REST API通信,服務(wù)器端不能直接訪問,而是通過API Gateway來傳遞請求,API Gateway負(fù)責(zé)服務(wù)路由、負(fù)載均衡、緩存、訪問控制和鑒權(quán)等工作。在本文中選用了騰訊開源的微服務(wù)框架Tars.js作為微服務(wù)架構(gòu)的構(gòu)建工具,完成后臺系統(tǒng)(即平臺服務(wù)器端)的構(gòu)建,將整個系統(tǒng)服務(wù)拆分為各個獨(dú)立專一的服務(wù),讓各服務(wù)獨(dú)立運(yùn)行。
LBS技術(shù)也就是基于位置的服務(wù)技術(shù),通過電信移動運(yùn)營商的無線電通訊網(wǎng)絡(luò)或外部定位方式(GPS/北斗)獲取客戶端用戶的位置信息[15]。本項目是眾包式物流平臺的設(shè)計,對于用戶而已就是基于位置的物流服務(wù),因此本質(zhì)上屬于LBS技術(shù)應(yīng)用的范疇,平臺中的一些功能的實現(xiàn)包括附近車輛(運(yùn)力)展示、運(yùn)力匹配、地理信息可視化等模塊都用到了LBS技術(shù)。
使用IBM推出的企業(yè)級區(qū)塊鏈開源架構(gòu)方案Hyperledger Fabric做為區(qū)塊鏈底層基礎(chǔ)框架。Fabric已經(jīng)定義了鏈、Peer、通道、共識服務(wù)等概念,已經(jīng)具備區(qū)塊鏈技術(shù)的基礎(chǔ)功能,本文主要將這些功能應(yīng)用在區(qū)塊數(shù)據(jù)存儲流程上。
1)生成創(chuàng)建訂單信息:平臺為每個訂單創(chuàng)建信息生成一對公鑰和私鑰地址,使用事先初始化的主公鑰地址向注冊的公鑰地址發(fā)起信息,生成區(qū)塊寫入?yún)^(qū)塊鏈中,完成物流訂單信息的創(chuàng)建登記。
2)上傳狀態(tài)變化信息到區(qū)塊上:訂單狀態(tài)信息主要分為訂單環(huán)節(jié)變化的信息和時空變化的信息,這兩種信息分別存入分布式數(shù)據(jù)庫,返回的索引ID寫入到指定訂單區(qū)塊鏈中,確保返回到索引ID只寫入?yún)^(qū)塊鏈,使區(qū)塊鏈層作為業(yè)務(wù)層和數(shù)據(jù)層的中間安全性轉(zhuǎn)化樞紐。
3)物流信息溯源:用戶根據(jù)訂單ID和私鑰上傳到業(yè)務(wù)層,業(yè)務(wù)層首先將私鑰傳向區(qū)塊層進(jìn)行合法性檢測,再傳入訂單ID到區(qū)塊層同私鑰一起組成結(jié)構(gòu)體,區(qū)塊層將結(jié)構(gòu)體解密成對應(yīng)真實數(shù)據(jù)的索引ID,同時區(qū)塊層從數(shù)據(jù)層將索引得到的數(shù)據(jù)填充到結(jié)構(gòu)體并覆蓋索引ID,最后將其返回給業(yè)務(wù)層和用戶。利用區(qū)塊層屏蔽隨機(jī)存儲的數(shù)據(jù)索引ID來實現(xiàn)數(shù)據(jù)的安全性。
本平臺的實現(xiàn)使用NodeJS技術(shù)[16],利用Visual Studio Code開發(fā)工具進(jìn)行開發(fā)工作,使用Photoshop作圖工具來繪制圖標(biāo)、切圖和配色等,采用Sketch軟件完成UI(user interface)排版、原型設(shè)計等工作,使用Postman測試和調(diào)試后臺系統(tǒng)服務(wù),系統(tǒng)客戶端均采用微信小程序技術(shù)棧,因此使用微信的開發(fā)語言和開發(fā)工具。
服務(wù)器端即后臺系統(tǒng),用來為用戶(客戶端A)和司機(jī)(客戶端B)提供整體的分配、調(diào)度和存儲信息的服務(wù),如圖3所示,其架構(gòu)采用微服務(wù)架構(gòu)設(shè)計,將整個系統(tǒng)服務(wù)拆分為各個獨(dú)立專一的服務(wù),讓各服務(wù)獨(dú)立運(yùn)行,包括訂單服務(wù)、車輛服務(wù)、用戶服務(wù)、地圖服務(wù)和系統(tǒng)服務(wù)。接口路由是連接客戶端的第一層,負(fù)責(zé)響應(yīng)客端的所有請求,負(fù)責(zé)轉(zhuǎn)發(fā)請求到各項服務(wù)和數(shù)據(jù)緩存工作。請求從客戶端到接口層,接口層根據(jù)需求將數(shù)據(jù)存儲到緩存中心,包括用戶登錄態(tài)信息和車輛實時位置等數(shù)據(jù)。

圖3 服務(wù)器端Fig.3 Server Side
1)訂單服務(wù)。圍繞訂單創(chuàng)建、查詢、更新和刪除等操作進(jìn)行訂單全生命周期管理,制定統(tǒng)一操作接口,同一服務(wù)只做唯一接口,以方便管理和維護(hù)。
2)車輛服務(wù)。圍繞車輛信息的注冊創(chuàng)建、查詢、更新和刪除等操作進(jìn)行車輛服務(wù)管理,包括司機(jī)用戶注冊,信息真實性驗證等。
3)用戶服務(wù)。圍繞用戶賬號的創(chuàng)建、查詢、更新和刪除等操作進(jìn)行用戶信息管理,包括用戶登錄,真實性驗證。
4)地圖服務(wù)。地圖服務(wù)分為空間計算模塊(如附近3 km緩沖帶計算和最小距離計算等)、高德地圖web地理編碼服務(wù)(如位置解析,位置自動填充)、騰訊地圖(如地圖可視化,導(dǎo)航路徑計算等)。
5)系統(tǒng)服務(wù)。系統(tǒng)服務(wù)包括其他零碎不常用的服務(wù),如驗證短信、用戶登錄態(tài)驗證、數(shù)據(jù)清洗等工具集。
客戶端用戶版面向普通用戶,即運(yùn)力需求者的客戶端,專注于運(yùn)力提供服務(wù),采用單一化用戶設(shè)計,能更加精準(zhǔn)挖掘和解決用戶需求。具體設(shè)計和實現(xiàn)如圖4所示。

圖4 客戶端用戶版Fig.4 Client User Version
司機(jī)版客戶端專注于運(yùn)力收集服務(wù),以收集運(yùn)力資源為核心的設(shè)計理念,解決司機(jī)用戶運(yùn)力資源變現(xiàn)的用戶需求。具體設(shè)計和實現(xiàn)如圖5所示。

圖5 客戶端司機(jī)版Fig.5 Client Driver Version
用戶版首頁是用戶長時間停留和主要服務(wù)的入口,其中包含能直觀生動體現(xiàn)給用戶的附近實時車輛展示和預(yù)約用車服務(wù)的核心系統(tǒng)服務(wù),實時運(yùn)力是用戶能夠看到自己周圍3 km內(nèi)所有可用車輛資源的實時位置。
用戶版?zhèn)€人中心是用戶的個人數(shù)據(jù)和其他次要服務(wù)的入口,其目的是減輕首頁服務(wù)承載的服務(wù)量。其頁面包括:手動登錄的入口、我的訂單、地址管理、收費(fèi)標(biāo)準(zhǔn)和設(shè)置。
司機(jī)版首頁包括:運(yùn)力需求掃描圖,為司機(jī)搜索其附近運(yùn)力需求;物流導(dǎo)航,根據(jù)匹配物流訂單,自動生成導(dǎo)航路線;獲客設(shè)置,是給予司機(jī)設(shè)置篩選客戶的設(shè)置,給予供需雙方雙向選擇的權(quán)利。
司機(jī)版?zhèn)€人中心是司機(jī)的個人數(shù)據(jù)和其他次要服務(wù)的入口。
該眾包式物流平臺完成后能夠?qū)崿F(xiàn)用戶通過微信小程序(客戶端用戶版)下單,司機(jī)通過微信小程序(客戶端司機(jī)版)接單,并根據(jù)自動生成的最佳配送路徑進(jìn)行配送,同時客戶可以實時查看下單產(chǎn)品的所在位置和狀態(tài)直到產(chǎn)品送到自己手中。由于該物流平臺使用了區(qū)塊鏈技術(shù),在保證客戶能實時監(jiān)控產(chǎn)品動態(tài)的同時也能夠保證產(chǎn)品的安全和客戶數(shù)據(jù)的安全,以及產(chǎn)品的相關(guān)數(shù)據(jù)的可溯源。另外,運(yùn)輸車輛模塊可以根據(jù)產(chǎn)品的數(shù)量和運(yùn)輸距離合理性選擇相應(yīng)的運(yùn)輸方式。具體平臺展示如圖6、圖7所示。

圖6 首頁Fig.6 Home Page

圖7 獲取的地圖界面Fig.7 Gets the Map Interface
本文旨在解決農(nóng)貿(mào)產(chǎn)品物流方面關(guān)于食品安全、食材溯源、缺乏透明性和運(yùn)力不足及運(yùn)力成本過高等問題,引入眾包理念,充分整合社會運(yùn)力資源,鼓勵社會多方參與物流體系,建立了泛化物流的共享物流平臺。完成了最小的完整性眾包式物流平臺的設(shè)計和實現(xiàn),同時也嘗試基于區(qū)塊鏈技術(shù)來進(jìn)行設(shè)計開發(fā),在測試環(huán)境下部署,能夠?qū)崿F(xiàn)正常的業(yè)務(wù)流程。同時,由于技術(shù)難度過大,該平臺仍存在很多不足,主要是暫時無法利用和釋放出區(qū)塊鏈技術(shù)的價值,仍停留在借助開源的區(qū)塊鏈框架進(jìn)行測試階段。