一、下載配置thrift
從Thrift官網(wǎng) http://thrift.apache.org/ 下載thrift,然后進(jìn)行安裝。
筆者是windows系統(tǒng),所以直接下載解壓就有一個(gè)thrift的運(yùn)行文件,我把它加入了環(huán)境變量。

運(yùn)行thrift --version,如果能正確顯示版本,證明thrift安裝成功。

二、信息服務(wù)開發(fā)
由于信息服務(wù)只是一個(gè)很簡單的公共服務(wù),為了驗(yàn)證thrift的跨語言特性,我打算用python來開發(fā)信息服務(wù),建立好工程,創(chuàng)建好thrift文件,定義好接口方法

我們寫一個(gè)簡單的shell腳本來自動化運(yùn)行thrift生成代碼的命令。

只需要運(yùn)行這個(gè)shell腳本就可以自動生成代碼了。先簡單實(shí)現(xiàn)發(fā)送郵件和發(fā)送短信的接口,啟動python thrift service。

控制臺已經(jīng)打印出python thrift service啟動輸出。檢查9090端口是否監(jiān)聽,netstat -na |grep 9090,發(fā)現(xiàn)端口成功監(jiān)聽

接下來補(bǔ)全信息服務(wù)的實(shí)現(xiàn),因?yàn)榘l(fā)送短信是需要收費(fèi)的,所以這里對它只做一個(gè)簡單打印,主要是用163實(shí)現(xiàn)發(fā)送郵件功能,這里需要一個(gè)授權(quán)碼,申請一個(gè)163郵箱,然后設(shè)置開通授權(quán)碼才可使用。

接著我們創(chuàng)建一個(gè)java api模塊,然后增加shell腳本,生成java api代碼。

接著修改pom文件,加入thrift的依賴。

三、用戶服務(wù)開發(fā)
首先創(chuàng)建一個(gè)用戶服務(wù)api的module,然后編寫thrift文件,再編寫腳本生成api代碼。

接著再創(chuàng)建實(shí)現(xiàn)模塊,由于我們是在user-thrift-service里實(shí)現(xiàn)api,所以pom文件中需要引入api模塊。

接著開始創(chuàng)建數(shù)據(jù)庫,我是直接用docker運(yùn)行mysql的,在apps文件夾里面有redis,mysql等等中間件。用一個(gè)啟動腳本,掛載本地配置文件和數(shù)據(jù)到mysql容器中,然后開始創(chuàng)建數(shù)據(jù)庫。

為了方便,我是直接用navicat創(chuàng)建數(shù)據(jù)表。

接著開始寫mapper代碼,我這里采用的是mybatis。

接著要開始構(gòu)建thrift server,這里需要和python的api保持一致,選擇幀傳輸協(xié)議,用非阻塞io,然后啟動tsocker server,用spring boot啟動項(xiàng)目,項(xiàng)目啟動成功。

四、用戶EdgeService開發(fā)
首先建立edge-service工程,再把依賴引入,因?yàn)閑dge-service對外是提供rest接口的,所以在pom里面需要引入spring-boot-starter-web.接著創(chuàng)建provider類,獲取client,這樣我們就可以用client調(diào)用user-service提供的服務(wù)了。

接著開始寫controller,對外提供http接口,首先要驗(yàn)證用戶名和密碼,密碼是md5加密的,接著生成token,token用redis存儲,接著返回token。

啟動user-thrift-service和user-edge-service,接著啟動postman開始請求。

測試成功!可以看到thrift生成的api是成功的,user-edge-service成功的請求到了user-thrift-service提供的data查詢接口。
具體代碼請到我的github查看:https://github.com/jauhwan/micro-service