精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:你了解大廠的接口設計原則么?就會curd的我當場自閉

開發 前端
服務網格,服務與服務間的交互越來越復雜,如何優雅的設計一個接口,需要考慮哪些方面?特別是對公服務(比如BFF)需要對外提供公網域名的接口,安全性怎么保證,我整理了我工作以來一些常見的措施以及具體如何去實現。

背景

隨著業務的發展,系統架構從單體架構變為面向服務架構,水平分層架構;再變為微服務架構,

服務網格,服務與服務間的交互越來越復雜,如何優雅的設計一個接口,需要考慮哪些方面?特別是對公服務(比如BFF)需要對外提供公網域名的接口,安全性怎么保證,我整理了我工作以來一些常見的措施以及具體如何去實現:

數據有效性校驗

合法性校驗包括:常規性校驗以及業務校驗; 常規性校驗:包括必填字段校驗,長度校驗,類型校驗,格式校驗等; 業務校驗:根據實際業務而定,比如訂單金額不能小于0等;

冪等設計

所謂冪等,簡單地說,就是對接口的多次調用所產生的結果和調用一次是一致的。數據發生改變才需要做冪等,有些接口是天然保證冪等性的。

比如查詢接口,有些對數據的修改是一個常量,并且無其他記錄和操作,那也可以說是具有冪等性的。其他情況下,所有涉及對數據的修改、狀態的變更就都有必要防止重復性操作的發生。通過間接的實現接口的冪等性來防止重復操作所帶來的影響。

又比如我們電商比較常見的加減GMV同一個消息無論過來多少次結果都應該只加減一次,不然會導致金額錯誤甚至造成資損。

請求層面: 多次執行的結果是一致的 業務層面: 同一個用戶不重復下單,商品不超賣,MQ不重復消費

冪等的本質是分布式鎖的問題,分布式鎖正常可以通過redis或zookeeper實現;

在分布式環境下,鎖定全局唯一資源,使請求串行化,實際表現為互斥鎖,防止重復,解決冪等

安全性

1. 數據加密

我們知道數據在傳輸過程中是很容易被抓包的,如果直接傳輸比如http協議傳輸,那么數據在傳輸的過程中可能被任何人獲取。

所以必須對數據進行加密,常見的做法是對敏感數據比如身份證號進行md5加密。現在主流的做法是使用https協議,在http和tcp之間添加一層數數據安全層(SSL層),這一層負責數據的加密和解密。https如何配置和使用,大家翻閱我歷史文章自行去研究。

對稱加密: 密鑰在加密過程中和解密過程中是不變的,常見的算法有DES,AES;優點是加解密計算速度快;缺點是數據傳送前,服務雙方必須約定好密鑰,如果一方密鑰泄露,加密信息也就不安全了。

非對稱加密: 密鑰成對出現,一個密鑰加密之后,由另外一個密鑰來解密;私鑰放在服務端文件中,公鑰可以發布給任何人使用;優點是比對稱加密更安全,但是加解密的速度比對稱加密慢多了,廣泛使用的是RSA算法;

https的實現正好是結合了兩種加密方式,整合了雙方的優點,在安全性和性能方面都比較好。對稱加密和非對稱加密的代碼實現,jdk提供了相關的工具類可以直接使用,本文不過多介紹。

2. 數據簽名

介紹3種數據簽名安全策略:摘要[KEY] , 簽名[證書] , 簽名+加密[證書]

安全策略 描述 安全級別 摘要[Key] 將數據和Key(自定義契約密碼)組合后進行摘要 安全級別低,契約密鑰安全性非常低。在契約密鑰安全情況下能基本保障數據的不可篡改性。 簽名[證書] 使用證書和非對稱簽名算法對數據進行簽名 安全級別中,能夠保障數據的不可篡改性和不可抵賴性,但是不能保障數據的私密性 簽名-加密[證書] 使用證書和非對稱算法對數據簽名,使用一次一密的密鑰和對稱算法對數據進行加密 安全級別高,能夠保障數據的不可篡改性和不可抵賴性,而且能保障數據的私密性。

  • 機密性(Confidentiality): 未經許可不許看
  • 完整性(Integrity) : 不許篡改
  • 可用性(Availability) : 防止不可用
  • 不可抵賴性(Non-Repudiation): 用戶不能否認其行為

摘要[KEY]過程:將需要提交的數據通過某種方式組合成一個字符串,然后通過md5生成一段加密字符串,這段字符串就是數據包的簽名,比如:

 

  1. str:參數1={參數1}&參數2={參數2}&……&參數n={參數n}$key={用戶密鑰}; 
  2.  
  3. MD5.encrypt(str); 

摘要[KEY]原理:Hash算法不可逆,并且計算結果具有唯一性,在key 的隱私得到保證的情況下,可以保證完整性 摘要[KEY]缺陷:key的隱私性很難保證,明文傳輸

簽名[證書]過程:客戶端對明文做一個md5/SHA計算,對計算后的值通過私鑰加密得到密文,客戶端將明文和密文發送給服務端,服務端對密文通過公鑰解密得到值A,同時服務端對明文做一個md5/SHA計算得到值B,比較值A與值B,相同得驗證通過,能夠保障不可篡性和不可抵賴性,但是不能保障數據的私密性(明文傳輸)

 

面試官:你了解大廠的接口設計原則么?就會curd的我當場自閉

簽名+加密[證書]過程:客戶端生成一個隨機字符串,作為password,然后把這個password通過B公鑰加密生成密文C,把A明文通過password加密生成密文B, 同時把A明文做MD5/SHA計算后的值通過A私鑰加密得到簽名D, 把密文B和密文C和簽名D發給服務端,服務端通過私鑰解密文C得到password,然后通過password解密文B就可以得到A明文,同時簽名可以用來驗證發送者是不是A,以及A發送的數據有沒有被第三方修改過。

可以假設存在一個惡意的一方X,冒充了A,發送了密文B(password生成),密文C服務端收到數據后,仍然可以正常解密得到明文,但是卻無法證明這個明文數據是A發送的還是惡意用戶B發送的。簽名D的含義就是A自己簽名,服務端可以驗證。X由于沒有A的私鑰,這個簽名它無法冒充,會被服務端識別出來。

 

面試官:你了解大廠的接口設計原則么?就會curd的我當場自閉
加密-簽名

3. 時間戳機制

數據經過了加密處理,酒店抓取到了數據也看不到真實數據;但是有不法者不關心真實數據,拿到數據后直接進行惡意請求,這個時候簡單的做法可以考慮時間戳機制,在每次請求中加入當前時間,服務端會將報文中的時間與系統當前時間做比對,看是否在一個固定的時間范圍內比如5分鐘,惡意偽造的數據是沒法更改報文中時間的,超過5分鐘就可以當作非法請求了。

偽代碼如下:

 

  1. long interval=5*60*1000;//超時時間 
  2. long clientTime=request.getparameter("clientTime"); 
  3. long serverTime=System.currentTimeMillis(); 
  4. if(serverTime-clientTime>interval){ 
  5.     return new Response("超過處理時長"

4. AppId機制

大部分網站需要用戶名和密碼才能登陸,這其實是一種安全機制;對應的服務也可以使用這一機制,不是誰都可以調用,調用服務前必須先申請開通一個唯一的appid,提供相關的密鑰,在調用接口時需要提供appid+密鑰信息,服務端會進行驗證。

appid使用字母,數字,特殊符號等隨機生成,生成的唯一appid看系統實際要求是否需要全局唯一;不管是否全局唯一最好有以下屬性:

  • 趨勢遞增: 這樣在保存數據庫的時候,索引的性能更好
  • 信息安全: 隨機生成,不要是連續的,容易被發現規律
  • 關于全局唯一Id生成的方式常見的有snowflake方式等

snowflake

 

面試官:你了解大廠的接口設計原則么?就會curd的我當場自閉

以上示意圖描述了一個序列號的二進制組成結構。

第一位不用,恒為0,即表示正整數;接下來的41位表示時間戳,精確到毫秒。為了節約空間,可以將此時間戳定義為距離某個時間點所經歷的毫秒數(Java默認是1970-01-01 00:00:00)。

再后來的10位用來標識工作機器,如果出現了跨IDC的情況,可以將這10位一分為二,一部分用于標識IDC,一部分用于標識服務器;最后12位是序列號,自增長。

snowflake的核心思想是64bit的合理分配,但不必要嚴格按照上圖所示的分法。如果在機器較少的情況下,可以適當縮短機器id的長度,留出來給序列號。

5. 黑名單機制

如果此appid進行過很多非法操作,或者說專門有一個中黑系統,經過分析之后直接將此appid列入黑名單,所有請求直接返回錯誤碼;

我們可以給每個appid設置一個狀態比如包括:初始化狀態,正常狀態,中黑狀態,關閉狀態等等;或者我們直接通過分布式配置中心,直接保存黑名單列表,每次檢查是否在列表中即可;

限流機制

常用的限流算法包括:令牌桶限流,漏桶限流,計數器限流;

  • 令牌桶限流 令牌桶算法的原理是系統以一定速率向桶中放入令牌,填滿了就丟棄令牌;請求來時會先從桶中取出令牌,如果能取到令牌,則可以繼續完成請求,否則等待或者拒絕服務;令牌桶允許一定程度突發流量,只要有令牌就可以處理,支持一次拿多個令牌;
  • 漏桶限流 漏桶算法的原理是按照固定常量速率流出請求,流入請求速率任意,當請求數超過桶的容量時,新的請求等待或者拒絕服務;可以看出漏桶算法可以強制限制數據的傳輸速度;
  • 計數器限流 計數器是一種比較簡單粗暴的算法,主要用來限制總并發數,比如數據庫連接池、線程池、秒殺的并發數;計數器限流只要一定時間內的總請求數超過設定的閥值則進行限流;

具體基于以上算法如何實現,Guava提供了RateLimiter工具類基于基于令牌桶算法:

  1. RateLimiter rateLimiter = RateLimiter.create(5); 

以上代碼表示一秒鐘只允許處理五個并發請求,以上方式只能用在單應用的請求限流,不能進行全局限流;這個時候就需要分布式限流,可以基于redis+lua來實現;

總結

其實接口不管是設計還是開發,如果不是特別急的需求大家都可以多一點思考,這樣你的系統才會更穩定,上線和測試過程中bug更少,而且從個人提升角度來說,多思考總是一件好事。

很多時候大家都在抱怨:哎呀我公司小,我學校差這種環境得不到成長。傻瓜,很多時候高手也是這樣走過來的,不過一樣的事情每個人的態度不一樣,時間久了結果也就不一樣了。

好啦,現在大家應該都上班了,我熬夜值班還在大促現場(文章周末寫的,現在就寫個總結),我是敖丙,你知道的越多,你不知道的越多,我們下期見。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2022-04-10 18:10:24

CURD鏈表

2022-02-14 20:53:33

開源庫開發代碼

2019-12-25 11:22:19

負載均衡集群算法

2015-08-13 10:29:12

面試面試官

2021-04-01 08:12:20

zookeeper集群源碼

2021-02-25 07:08:30

JavaScript 前端面試題

2020-04-03 14:05:10

面試RedisJava

2024-09-09 08:30:56

代碼

2024-09-03 07:58:46

2020-09-26 22:04:32

數據安全傳輸HTTPSHTTP 協議

2021-01-20 07:16:07

冪等性接口token

2020-07-02 07:52:11

RedisHash映射

2023-09-26 00:37:38

Spring微服務框架

2015-08-24 09:00:36

面試面試官

2021-11-25 10:18:42

RESTfulJava互聯網

2024-05-11 15:11:44

系統軟件部署

2019-07-15 16:35:43

MySQL索引阿里

2025-01-13 09:24:32

2021-08-09 07:47:40

Git面試版本

2022-11-04 08:47:52

底層算法數據
點贊
收藏

51CTO技術棧公眾號

亚洲第一色网站| 147欧美人体大胆444| 屁屁影院国产第一页| 午夜影视一区二区三区| 久久精品一区二区| xxxxx91麻豆| 亚洲少妇一区二区| 欧美xxx网站| 亚洲丝袜精品丝袜在线| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 国产精品久久久久免费a∨| 貂蝉被到爽流白浆在线观看| 网站一区二区| 色噜噜狠狠成人网p站| 免费观看黄色的网站| 手机av免费在线观看| 麻豆专区一区二区三区四区五区| 精品久久久三级丝袜| 亚洲v国产v| 亚洲精品福利网站| 日本视频一区二区三区| 久久久久久久亚洲精品| 精品一区二区6| 美腿丝袜亚洲图片| 717成人午夜免费福利电影| 又粗又黑又大的吊av| 老司机在线看片网av| 99久久er热在这里只有精品15| 国产又爽又黄的激情精品视频| 欧美福利视频一区二区| 牛牛国产精品| 在线日韩日本国产亚洲| 久久久久久久无码| 亚洲网一区二区三区| 欧美日韩久久久久久| 国产女女做受ⅹxx高潮| 成年人视频免费在线播放| 亚洲色图在线播放| 亚洲国产精品日韩| 欧洲一区av| 99久久精品国产精品久久| 99re在线观看| 国产精品特级毛片一区二区三区| 日韩高清在线电影| 日本亚洲精品在线观看| 日本免费观看视| 国内久久视频| 亚洲精品成人免费| 亚洲熟妇一区二区| 国产95亚洲| 7777精品伊人久久久大香线蕉超级流畅| 日韩中文字幕免费在线| 韩国成人漫画| 欧美日韩中国免费专区在线看| 免费看毛片的网址| 手机av免费在线| 樱花影视一区二区| 亚洲一区 在线播放| 国产三区在线观看| 亚洲精品国产a| 欧美性猛交内射兽交老熟妇| 少女频道在线观看免费播放电视剧| 综合久久久久久久| 超碰在线免费观看97| 超碰个人在线| 一区二区三区蜜桃网| 三级在线免费观看| 美女精品视频| 精品久久久久久久久久久久| 久久国产乱子伦免费精品| 欧美大胆性生话| 欧美日韩在线综合| 国产成年人视频网站| av在线亚洲一区| 亚洲国产毛片aaaaa无费看| 奇米777四色影视在线看| 国内高清免费在线视频| 精品成人久久av| 92看片淫黄大片一级| 日韩av超清在线观看| 欧美日韩一区二区三区在线看| www.超碰97.com| 日本免费一区二区视频| 亚洲国产欧美在线成人app| 久久国产精品影院| 手机亚洲手机国产手机日韩| 欧美成人激情图片网| 日韩网红少妇无码视频香港| 日韩二区在线观看| 亚洲a在线观看| 手机看片福利永久| 国产精品素人视频| 成人午夜视频在线观看免费| 欧美一区国产| 欧美一区二区三区在线看| 亚洲视频在线播放免费| 激情五月综合网| 欧美国产日韩一区二区在线观看 | 久久久国产一区二区三区四区小说| 亚洲午夜精品久久| gogo久久| 欧美日韩国产一级二级| 亚洲一区二区三区黄色| 精品精品99| 日韩成人av网址| 婷婷综合在线视频| 亚洲无线一线二线三线区别av| 日韩av电影手机在线| 国产成人精品a视频| 久久麻豆一区二区| 免费看日b视频| 四虎影视4hu4虎成人| 欧美日韩中文在线观看| 天天操精品视频| 国产精品入口久久| 欧美老女人在线视频| 中文字幕一区二区人妻视频| 国产精品一色哟哟哟| 日韩一区二区三区高清| av女在线播放| 欧美一区二区三区在线看| 亚洲精品午夜视频| 99视频精品| 91免费在线视频| 黄色av网址在线免费观看| 亚洲国产cao| 免费看的av网站| 日韩激情免费| 国产精品1区2区在线观看 | 成人精品在线视频观看| 国产精品h视频| 97精品国产综合久久久动漫日韩| 日韩欧美国产不卡| 杨钰莹一级淫片aaaaaa播放| 日本不卡视频一二三区| 欧美精品一区二区视频| 阿v视频在线| 调教+趴+乳夹+国产+精品| 国产精品999.| 天天久久综合| 国产一区二区在线免费| www.中文字幕久久久| 色综合久久久久网| 少妇性l交大片| 五月综合久久| 欧美一级在线亚洲天堂| 无码精品在线观看| 午夜视频一区二区| 大尺度做爰床戏呻吟舒畅| 欧美日韩午夜| 国产精品亚洲综合| jizz一区二区三区| 亚洲激情在线观看| 国产精品国产三级国产专区52| www.日本不卡| 欧美 丝袜 自拍 制服 另类| 亚洲人成网站77777在线观看| 欧美在线中文字幕| 国产一级在线| 欧美人体做爰大胆视频| 日本中文在线视频| 亚洲精品九九| 久久精品日韩精品| 成人欧美一区二区三区的电影| 日韩h在线观看| 欧美一区免费看| 国产欧美精品一区| 97超碰国产精品| 国产厕拍一区| 色噜噜狠狠狠综合曰曰曰88av| 最近中文字幕av| 成人欧美一区二区三区在线播放| 不卡中文字幕在线观看| 欧美激情第10页| 精品日本一区二区三区| 电影亚洲精品噜噜在线观看| 中文字幕亚洲第一| 亚洲黄色在线播放| 欧美日韩在线第一页| 欧美xxxx精品| 国产精品中文欧美| 欧美视频免费播放| 午夜激情久久| 精品亚洲一区二区三区四区五区高| 香蕉视频亚洲一级| 久久成人综合视频| 亚洲人午夜射精精品日韩| 欧美亚洲一区二区在线观看| 欧美一区二区免费在线观看| 日韩精品视频网| 超级碰在线观看| 亚洲视频分类| 95av在线视频| 久久99久久99精品免观看软件| 精品国产一区二区三区久久久狼| 蜜桃视频污在线观看| 欧美日韩一区二区在线观看| 亚洲欧美在线观看视频| 国产精品国产馆在线真实露脸 | 久久久久久亚洲综合| 国产成人在线综合| 久久免费高清| 欧美性潮喷xxxxx免费视频看| 精品欧美激情在线观看| 国产精品区一区二区三在线播放 | 2024最新电影在线免费观看| 亚洲区免费影片| 粉嫩小泬无遮挡久久久久久| 欧美主播一区二区三区| 欧美成人aaaaⅴ片在线看| 狠狠色丁香久久婷婷综合丁香| av在线观看地址| 日韩欧美大片| 欧美日韩亚洲一区二区三区在线观看| 国产第一精品| 97精品久久久| 在线中文字幕视频观看| 亚洲欧美在线一区| 国产男男gay体育生网站| 狠狠躁夜夜躁人人爽超碰91| 久热这里有精品| 精品亚洲欧美一区| 91猫先生在线| 激情国产一区| 国产成人精品免费看在线播放| 日韩成人一区| 国产成人avxxxxx在线看| 午夜不卡视频| 国产一区二区三区在线免费观看| 欧美一区二区三区黄片| 欧美精品久久一区二区三区| 中文字幕男人天堂| 疯狂欧美牲乱大交777| 黑人操日本美女| 欧美激情中文不卡| 国产高清自拍视频| 亚洲在线一区| 久久大片网站| 911亚洲精品| 99久久久精品免费观看国产 | 午夜亚洲福利老司机| 娇小11一12╳yⅹ╳毛片| 99久久免费视频.com| 久久久高清视频| 丰满亚洲少妇av| 熟女人妻一区二区三区免费看| 精品在线亚洲视频| 亚洲精蜜桃久在线| 精品中文一区| 神马一区二区影院| 免费一区二区三区视频导航| 国产在线精品一区二区三区》 | 久久艹中文字幕| 嗯用力啊快一点好舒服小柔久久| 99免费在线视频观看| 2020国产精品极品色在线观看| 国产日韩欧美黄色| 日韩午夜视频在线| 成人激情视频在线| 国产精品3区| 亚洲aa在线观看| 色狠狠一区二区三区| 成人自拍性视频| 秋霞影院一区| 91在线短视频| 久久爱www.| 精品国产一二| 奇米狠狠一区二区三区| 国产视频99| 国产一区99| 亚洲欧洲久久| 亚洲第一偷拍| www.爱色av.com| 久久综合婷婷| av免费一区二区| 成人av网站免费观看| 亚洲色图14p| 国产亚洲美州欧州综合国| 日日操免费视频| 亚洲人成亚洲人成在线观看图片| 精品国产乱码久久久久久鸭王1| ...中文天堂在线一区| 久久久.www| 亚洲成人免费影院| 亚洲自拍一区在线观看| 91精品婷婷国产综合久久竹菊| 亚洲第一大网站| 亚洲国内精品视频| 日韩免费网站| 久久久久中文字幕2018| 中文字幕色婷婷在线视频| 国产日韩专区在线| 9l亚洲国产成人精品一区二三 | 国产精品一级二级| 日韩的一区二区| 香蕉视频在线看| 欧美丰满老妇厨房牲生活| 亚洲妇女成熟| 成人国产精品日本在线| 久久a爱视频| 欧美成ee人免费视频| 日韩久久久久| 99精品人妻少妇一区二区 | 欧美日韩中文一区二区| 老司机午夜网站| 午夜亚洲性色视频| 第一区免费在线观看| 久久久久九九视频| 黄色一级片在线| 在线观看av一区| 天天操天天干天天| 在线日韩日本国产亚洲| 2018av在线| 99在线观看视频| 日韩欧美午夜| 777久久久精品一区二区三区 | 91在线视频免费| 久久不见久久见国语| 国产精品无码电影在线观看| 日韩高清一级片| 天天插天天射天天干| 国产精品国产三级国产aⅴ无密码| 亚洲va在线观看| 欧美一级高清大全免费观看| 国产69久久| 日本久久亚洲电影| 久久夜色精品国产噜噜av小说| 亚洲欧洲日韩综合二区| 日韩精品视频网| 成年人网站免费看| 亚洲一区二区黄色| 成人黄色免费视频| 久久久精品国产| 国产a亚洲精品| 亚洲激情图片| 日本不卡123| 青青草视频播放| 欧美午夜女人视频在线| 成人久久精品人妻一区二区三区| 日韩中文字幕视频在线| 日韩精品三区| 欧美精品一区二区三区四区五区 | 国产精品国产自产拍在线| 波多野结衣在线电影| 日韩精品高清在线观看| xxxcom在线观看| 精品国产综合| 亚洲美女黄网| 欧美双性人妖o0| 欧美午夜激情在线| 美女做暖暖视频免费在线观看全部网址91 | 亚洲地区一二三色| 亚洲精品97久久中文字幕| 欧美乱大交xxxxx| 日韩中文字幕在线一区| 在线观看免费黄色片| 国产精品影视在线| 久久久精品91| 亚洲激情在线观看| 婷婷激情一区| 亚洲国产精品一区在线观看不卡 | 日产精品久久久久久久蜜臀| 久久国产精品99精品国产| 日本精品在线免费观看| 欧美蜜桃一区二区三区| 成人午夜在线观看视频| 国产欧美日韩精品在线观看| 久久亚洲成人| 国模大尺度视频| 亚洲自拍与偷拍| 婷婷在线免费观看| 国产精品对白刺激| 水蜜桃久久夜色精品一区| 中文字幕一区久久| 午夜伊人狠狠久久| 国产有码在线| 国产精品2018| 亚洲手机视频| 中文字幕在线观看网址| 在线观看日韩国产| 香蕉视频在线看| www.久久艹| 免费亚洲婷婷| 欧产日产国产v| 日韩高清中文字幕| www.成人在线.com| 国产原创popny丨九色| 久久精品亚洲乱码伦伦中文| 国产精品伦理一区| 国自在线精品视频| 精品少妇av| 国产chinesehd精品露脸| 在线看不卡av| 中文在线免费| 日韩影片在线播放| 成人丝袜18视频在线观看| 成人免费视频国产免费| 久久琪琪电影院| 日韩欧美1区| 丝袜美腿中文字幕|