溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP成長記(二) —— SOA&RESTful軟件架構(gòu)

發(fā)布時(shí)間:2020-10-24 22:57:09 來源:網(wǎng)絡(luò) 閱讀:5327 作者:村長愛技術(shù) 欄目:軟件技術(shù)

     你有沒有遇到過,同一個(gè)數(shù)據(jù)庫的數(shù)據(jù),每次做一個(gè)產(chǎn)品都要重新實(shí)現(xiàn)一遍同樣的功能,每一個(gè)產(chǎn)品都要單獨(dú)寫一相同的功能模塊(比如登錄,獲取產(chǎn)品列表等),很多以前寫的功能模塊到現(xiàn)在都不能復(fù)用了,工作幾年下來,公司里沒有沉淀出可以復(fù)用的東西……

     如果你遇到過相似的情況,也許你應(yīng)該關(guān)注一下SOA(Service-Oriented Architecture)—— 面向服務(wù)的體系結(jié)構(gòu),這不是一中具體的技術(shù),只是一個(gè)設(shè)計(jì)思想,他的主要思想就是把服務(wù)從項(xiàng)目中分離出來,做成接口的形式供其他項(xiàng)目調(diào)用,這樣的好處很明顯,第一、只要約定好接口形式,任何語言都可以相互調(diào)用;第二、最大化的復(fù)用功能模塊;第三、可以橫向和縱向擴(kuò)展,等等。這時(shí)大家可能想起來Web Service來了,它主要機(jī)遇基于SOAP通過HTTP協(xié)議進(jìn)行調(diào)用,這種形式有很多弊病,比如開發(fā)麻煩,要生成一個(gè)非常大的WSDL文件,生成的數(shù)據(jù)格式很復(fù)雜,有沒有一種既簡單又安全的方式呢,當(dāng)然有了,那就是RESTful(Representational State Transfer)描述了一個(gè)架構(gòu)樣式的網(wǎng)絡(luò)系統(tǒng),很多公司的API都是通過該形式開發(fā),比如微博API,QQ開放平臺(tái),淘寶開發(fā)平臺(tái)等等,那它有什么好處呢,首先它基于HTTP協(xié)議,通過即 POST、GET、HEAD、PUT 、DELETE、OPTIONS、TRACE等請求方式處理資源,然后返回通用數(shù)據(jù)格式,例如XML/JSON等,這樣不管是B/S,C/S架構(gòu)都能很好的支持。下面講解一下RESTful架構(gòu)設(shè)計(jì)。

      首先架構(gòu)圖如下:

PHP成長記(二) ——  SOA&RESTful軟件架構(gòu)

需要為每個(gè)程序分配一個(gè)appKey和一個(gè)appSecret, 然后通過URL訪問服務(wù),最后服務(wù)返回?cái)?shù)據(jù)(JSON / XML格式)。


   可能遇到的問題:

1、安全性

   當(dāng)請求端發(fā)送請求的時(shí)候,服務(wù)端要驗(yàn)證合法性,那該如何驗(yàn)證呢,大多數(shù)方案都是遵循OAuth(現(xiàn)在普遍都升級(jí)的到了OAuth3.0)。下面是我設(shè)計(jì)一種簡單方式,在小應(yīng)用上可以采用。

PHP成長記(二) ——  SOA&RESTful軟件架構(gòu)

       2、請求控制

              接口不能無限制的調(diào)用,不然服務(wù)會(huì)被跑慢,所以需要限制請求,方法很多,可以采用Nginx的limit模塊,限制用戶的調(diào)用頻率和最大連接數(shù)等。


       3、服務(wù)擴(kuò)展

              首先對于以后服務(wù)的升級(jí),需要對接口進(jìn)行非常好的設(shè)計(jì),避免后續(xù)改變URL,這里建議多應(yīng)用設(shè)計(jì)模式來進(jìn)行程序設(shè)計(jì),而隨著服務(wù)的訪問量不斷增加,需要對服務(wù)進(jìn)行框架升級(jí),這個(gè)可以參考我的《項(xiàng)目成長記》專題文章。


           SOA架構(gòu)目前已經(jīng)很成熟,大家可以多進(jìn)行研究討論。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI