精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

牲欧美videos精品| 午夜精品一区二区三区在线观看 | 国产国语亲子伦亲子| 少妇一区视频| fc2成人免费人成在线观看播放 | 亚洲伦理一区二区三区| 亚洲国产成人二区| 成人亚洲精品久久久久软件| 日韩小视频在线| 国产精品入口免费软件| 男人天堂网在线观看| 国产精品国产三级在线观看| 国产欧美1区2区3区| 国产成人精品一区二区在线| 强迫凌虐淫辱の牝奴在线观看| 午夜dj在线观看高清视频完整版| 国产原创一区二区| 精品国产依人香蕉在线精品| 亚洲精品午夜在线观看| avtt亚洲| 久久精品久久99精品久久| 尤物tv国产一区| 九九热99视频| а天堂中文在线官网| 国产九色精品成人porny| 久久国产精品免费视频| 亚洲AV成人精品| a级片免费在线观看| aa级大片欧美| 91久久久久久久久久久| 紧身裙女教师波多野结衣| 在线免费成人| 一区二区高清在线| 国产综合18久久久久久| 91美女免费看| 国产一区二区三区不卡视频网站| 欧美在线短视频| www亚洲国产| 性生活视频软件| 中文精品在线| 亚洲第一男人天堂| 国产精品无码一区二区在线| 久草视频在线看| 久久99久久99精品免视看婷婷 | 日本伊人色综合网| 日韩有码在线电影| 五月天精品视频| 欧美日韩免费观看视频| 欧美天堂在线观看| 亚洲高清视频一区二区| 国产露脸国语对白在线| 伊人久久大香线蕉综合热线 | 在线观看亚洲精品视频| 免费看啪啪网站| 老熟妇高潮一区二区高清视频| 另类天堂av| www.亚洲一区| 一区二区国产精品精华液| 天天色综合色| 精品中文视频在线| 亚洲国产欧美91| 亚洲精品在线影院| 欧美日韩综合在线| 国产av天堂无码一区二区三区| a黄色在线观看| 国产福利一区二区三区视频 | 日韩毛片在线视频| 欧美在线电影| 亚洲国产精品资源| www.五月天色| 激情亚洲影院在线观看| 欧美日韩卡一卡二| av黄色在线网站| 在线电影福利片| 国产精品色呦呦| 久久国产一区二区| www.黄色片| 免费成人小视频| 欧美在线视频免费| 国产小视频在线观看免费| 久久一区91| 亚洲少妇激情视频| 国产亚洲色婷婷久久99精品91| 亚洲春色h网| 欧美成人女星排行榜| 最新天堂在线视频| 亚洲高清在线一区| 91精品国产91热久久久做人人| 国产一区亚洲二区三区| 大黄网站在线观看| 亚洲丝袜美腿综合| 一本一本a久久| 国产在线一在线二| 最新国产成人在线观看| 一本色道婷婷久久欧美 | 欧美尤物巨大精品爽| 青娱乐免费在线视频| 97色伦图片97综合影院| 欧美精品第一页在线播放| 性色av无码久久一区二区三区| 在线欧美亚洲| 国产精品自拍视频| 久久精品国产亚洲av麻豆蜜芽| 亚洲制服av| 777777777亚洲妇女| 日韩精品国产一区二区| 麻豆传媒一区二区三区| 国新精品乱码一区二区三区18| 97超碰资源站| 九九九久久久精品| 久久99导航| 色婷婷在线播放| 在线一区二区三区四区| 中文成人无字幕乱码精品区| 欧美绝顶高潮抽搐喷水合集| 日韩精品免费在线视频观看| 香港三级日本三级| 91av精品| 欧美激情区在线播放| 久久精品国产av一区二区三区| 精品av久久久久电影| 91精品中国老女人| 91大神xh98hx在线播放| 日韩欧美亚洲成人| 男女一区二区三区| 国产精品www994| 91高清视频在线免费观看| 国产精品一区二区av白丝下载| 国产亚洲精品aa| 亚洲伊人婷婷| 欧美性理论片在线观看片免费| 亚洲国产精品久久久久秋霞蜜臀 | 日韩免费性生活视频播放| 不许穿内裤随时挨c调教h苏绵| 欧美顶级大胆免费视频| 国产精品美乳一区二区免费| 亚洲综合网av| 国产激情视频一区二区三区欧美| 日韩性感在线| 四虎亚洲精品| 日韩午夜在线观看视频| 99久久国产精| 99久久.com| 国产免费成人av| 97在线观看免费观看高清| 91久久国产最好的精华液| 亚洲免费黄色录像| 国产欧美自拍一区| 中文字幕亚洲综合| 国产一级黄色av| 国产成人鲁色资源国产91色综| 一区二区在线不卡| 男女啪啪999亚洲精品| 精品国产一区二区三区久久久蜜月 | 国产亚洲综合色| 成人亚洲视频在线观看| 向日葵视频成人app网址| 亚洲欧美www| 国产这里有精品| 久久久综合网| 91福利视频导航| 国产人成在线观看| 亚洲高清免费观看高清完整版在线观看 | 免费精品视频在线| 影音先锋亚洲视频| 欧美三级一区| 中文字幕日韩av| 国产精品久久777777换脸| 亚洲色图清纯唯美| 中文字幕天堂网| 这里只有精品在线| 国产成人激情小视频| 国产高清视频在线播放| 欧美日本视频在线| 精品少妇一二三区| 久久久久久麻豆| 亚洲熟妇无码一区二区三区导航| 欧洲亚洲精品久久久久| 亚洲美女av黄| 中文字幕视频在线播放| 久久久天堂av| 五月天中文字幕在线| 黄色一区二区三区四区| 欧美日韩在线观看一区二区三区| 黄色大片在线| 亚洲欧洲在线观看| 国产欧美日韩成人| 国产精品久久久久久久久免费桃花 | 日日夜夜免费精品| 国产有色视频色综合| 美女100%一区| 日韩精品欧美激情| 在线观看国产一区二区三区| 亚洲综合激情另类小说区| 国产人妻大战黑人20p| 国产乱码字幕精品高清av | 欧美人与性动交xxⅹxx| 日韩禁在线播放| 国产一区二区三区中文字幕| 五月激情综合色| 中文字幕 日本| 麻豆成人久久精品二区三区小说| 美女扒开大腿让男人桶| 国产精品午夜av| 国产精品视频久| 色多多在线观看| 亚洲美女福利视频网站| av网站免费大全| 日韩欧美国产黄色| 国产小视频在线观看免费| 中文字幕在线不卡| 97超碰在线免费观看| 日韩中文欧美在线| 阿v天堂2018| 亚洲激情五月| 亚洲精品视频一二三| 亚洲精品3区| 国产精品jizz视频| 高端美女服务在线视频播放| 精品网站999www| 亚洲精品一区二区三区区别| 欧美日韩久久久| 久久精品99北条麻妃| 欧美日韩另类视频| 人成免费在线视频| 寂寞少妇一区二区三区| 六月婷婷激情网| 久久久免费毛片| 国产ts人妖一区二区三区 | 西野翔中文久久精品国产| 91精品国产高清久久久久久91裸体| 成人午夜一级| 久久精品中文字幕| 在线激情小视频| 在线观看免费高清视频97| 日本一卡二卡四卡精品| 欧美色网站导航| 亚洲无码精品一区二区三区| 最好看的中文字幕久久| 人妻熟人中文字幕一区二区| 国产婷婷色一区二区三区四区| www.色天使| 久久久欧美精品sm网站| 美女被到爽高潮视频| 久久久99精品久久| 国产传媒国产传媒| 国产精品―色哟哟| 激情五月激情综合| av中文字幕不卡| 国产+高潮+白浆+无码| 9久草视频在线视频精品| 亚洲调教欧美在线| 久久亚洲综合色| 久久久久中文字幕亚洲精品| 国产剧情在线观看一区二区| 精品人妻人人做人人爽夜夜爽| 成人午夜av影视| 国产精品一区二区入口九绯色| k8久久久一区二区三区 | 国产精品九九九| 欧美人与牲禽动交com| 亚洲色图第三页| 成在在线免费视频| 日韩日本欧美亚洲| 日本最新在线视频| 亚洲美女av电影| 9色在线观看| 欧美成人精品一区二区| 国产美女福利在线观看| 欧美亚洲激情在线| 九七电影院97理论片久久tvb| 成人看片人aa| 日韩毛片在线| 欧美一级大片在线免费观看| 九九热线视频只有这里最精品| 91精品久久久久久久久久| 三妻四妾完整版在线观看电视剧 | 中文字幕第一区综合| 朝桐光av一区二区三区| 久久久久久免费网| 538任你躁在线精品视频网站| 亚洲高清中文字幕| 中文字幕乱码中文字幕| 日韩女同互慰一区二区| 毛片网站在线观看| 美日韩丰满少妇在线观看| 日韩激情电影免费看| 国产精品视频网址| 国产精品传媒| 中文字幕色一区二区| 一区二区视频欧美| www.久久91| 91在线视频在线| 中文字幕精品久久久| 国产欧美日韩在线| 久久视频免费在线观看| 欧美视频在线一区二区三区| 蜜桃视频在线观看www| 精品国产免费一区二区三区四区| 女人偷人在线视频| 欧美精品九九久久| 色综合一区二区日本韩国亚洲| 久草一区二区| 欧美女人交a| 成人性免费视频| 九九热在线视频观看这里只有精品| 免费a级黄色片| 伊人色综合久久天天人手人婷| 538精品在线观看| 日本道免费精品一区二区三区| 成人av一区二区三区在线观看| 在线观看中文字幕亚洲| 小h片在线观看| 国产日韩欧美一区二区三区四区| 我不卡影院28| 中国黄色片免费看| 国产中文字幕一区| 成人性生交大免费看| 欧美国产精品久久| 亚洲免费在线视频观看| 在线视频你懂得一区| 日批视频免费播放| 亚洲免费高清视频| 俺来俺也去www色在线观看| 91精品在线观看视频| 日本一区二区免费高清| 看一级黄色录像| 蜜臀av国产精品久久久久| aaaaa级少妇高潮大片免费看| 亚洲观看高清完整版在线观看| 国产激情视频在线播放| 久久精品国产清自在天天线| 成人免费视频观看| 天堂资源在线亚洲资源| 老司机亚洲精品| japanese中文字幕| 色婷婷综合久久久中文一区二区| 一级黄色片视频| 正在播放国产一区| 88xx成人网| 亚洲高清精品中出| 另类综合日韩欧美亚洲| 日本人亚洲人jjzzjjz| 欧美伊人久久大香线蕉综合69| 国产在线观看精品一区| 国产精品第10页| 人人狠狠综合久久亚洲婷婷| 手机在线成人免费视频| 1000精品久久久久久久久| 国产精品熟女久久久久久| 超碰日本道色综合久久综合| 天堂网在线最新版www中文网| 国产一区二区三区色淫影院| 中国女人久久久| 欧美激情aaa| 欧美日韩一二三区| 蜜桃视频在线观看免费视频网站www| 97国产在线视频| 外国成人毛片| 免费观看中文字幕| 国产·精品毛片| 国产激情无码一区二区三区| 欧美一级专区免费大片| 成人性生交大片免费看网站 | 美女搡bbb又爽又猛又黄www| 午夜精品久久久久久久久久 | 香蕉精品视频在线| 成人夜色视频网站在线观看| 麻豆久久久久久久久久| 中文字幕精品久久久久| 欧美成年网站| 国产免费一区二区三区视频| 国产精品丝袜久久久久久app| av中文字幕第一页| 91av网站在线播放| 第一社区sis001原创亚洲| 午夜免费视频网站| 欧美日韩一区二区在线| 免费在线观看黄| 国产专区一区二区三区| 麻豆成人综合网| 国产手机在线视频| 日韩一区二区三区电影在线观看| ririsao久久精品一区| 免费日韩av电影| 亚洲国产精品一区| 性高潮久久久久久| 中文字幕一区二区三| 亚洲精品免费在线观看视频| 国产成人av网| 好吊日精品视频| 国产又粗又猛又爽又黄av| 日韩欧美一二三四区| 欧美成人ⅴideosxxxxx| 只有这里有精品| 久久久久国产精品麻豆| 亚洲av色香蕉一区二区三区| 国产精品吹潮在线观看| 精品999网站| 久久高清内射无套|