主頁 > 資料庫 > Kerberos身份驗證在ChunJun中的落地實踐

Kerberos身份驗證在ChunJun中的落地實踐

2022-12-17 07:01:13 資料庫

Kerberos,在古希臘神話故事中,指的是一只三頭犬守護在地獄之門外,禁止任何人類闖入地獄之中,

那么在現實中,Kerberos指的是什么呢?

一、Kerberos介紹

01 Kerberos是什么

根據百度詞條釋義,Kerberos是一種計算機網路授權協議,用來在非安全網路中,對個人通信以安全的手段進行身份認證,Kerberos旨在通過密鑰加密技術為客戶端/服務器應用程式提供身份驗證,主要用在域環境下的身份驗證,

在此之前,通常只有服務器的運維管理人員在配置Active Directory之類的東西時才會接觸到Kerberos,但隨著大資料的流行,整個Hadoop生態圈在安全方面對于Kerberos愈發依賴,同時由于Kerberos認證必須入侵式改造代碼的特點,使得越來越多的大資料開發同學開始接觸到Kerberos,

02 Kerberos 解決了什么問題

目前用于身份密碼的驗證主要面臨兩個問題:首先是人工記憶的密碼混亂且易遺忘,一些比較簡單的密碼又容易被攻擊;其次是技術錯覺,在計算機上的輸入密碼時顯示的是一串星號,大家誤以為很安全,實際上計算機通過網路發送密碼基本是發送“明文”密碼,大部分密碼都處于“裸奔”狀態,

Kerberos的出現很好的解決了這個問題,它減少了每個用戶使用整個網路時必須記住的密碼數量——只需記住 Kerberos 密碼,同時Kerberos結合了加密和訊息完整性來確保敏感的身份驗證資料不會在網路上透明地發送,通過提供安全的身份驗證機制,Kerberos為最終用戶和管理員提供了明顯的好處,

03 Kerberos 基本概念

principal 是Kerberos 世界的用戶名,用于標識身份,每個用戶都會有一個 principal,如果 principal 失效或者不正確,那么這個用戶將無法訪問任何資源,principal 主要由三部分構成:primary,instance(可選) 和 realm,

file

● primary

主體,每個 principal 都會有的組成部分,代表用戶名(username)或服務名(service name),

● instance

用于服務主體以及用來創建用于管理的特殊主體,instance 用于服務主體時的一般會用于區分同一服務在不同服務器上的服務實體,因此與 primary 組成的 principal 一般用于 server 端,如:NameNode,HiverServer2,Presto Coordinator等,

instance 用來創建用于管理的特殊主體時,一般來區分同一個用戶的不同身份,如區分擔任管理員角色的 a 用戶與擔任研發的 a 用戶,

● realm

realm 是認證管理域名,用來創建認證的邊界,只有在同屬于一個認證服務的邊界內,這個認證服務才有權利認證一個用戶、主機或者服務,每個域都會有一個與之對應的 kdc 服務用于提供域內的所有服務的認證服務,

● keytab

"密碼本",包含了多個 principal 與密碼的檔案,用戶可以利用該檔案進行身份認證,

● ticket cache

客戶端與 KDC 互動完成后,包含身份認證資訊的檔案,短期有效,需要不斷renew,

file

04 Kerberos 的認證簡介

file

參與 Kerberos 認證程序中的角色:

  1. 訪問服務的 Client;

  2. 提供服務的 Server;

  3. DC是Domain Controller的縮寫,即域控制器;AD是Active Directory的縮寫,即活動目錄,DC中有一個特殊用戶叫做krbtgt,它是一個無法登錄的賬戶,是在創建域時系統自動創建的,在整個Kerberos認證中會多次用到它的Hash值去做驗證,

  4. KDC(Key Distribution Center)密鑰分發中心,在KDC中又分為兩個部分:Authentication Service(AS,身份驗證服務)和Ticket Granting Service(TGS)

  5. AD會維護一個Account Database(賬戶資料庫), 它存盤了域中所有用戶的密碼Hash和白名單,只有賬戶密碼都在白名單中的Client才能申請到TGT,

05 Kerberos詳細認證流程

1. Client with AS

客戶端(Client)向 AS(Authentication Service)發送請求獲取 TGT(ticket grant ticket)

file

2. Client with TGS

客戶端(Client)向 TGS(Ticket Granting Service,)發送請求獲取ST(Service Ticke)

file

客戶端(Client)向服務端(Server)發送認證請求進行認證,如果客戶端(Client)要求進行雙向認證,服務端(Server)額外發送認證請求至客戶端(Client)進行認證,

file

3.Kerberos 與 JAAS可插拔的認證模塊

JAAS jdk 在1.4引入的一種可插拔的認證模塊( Pluggable Authentication Module,PAM )的安全體系結構,這意味著可以通過改變模塊,支持從一種安全協議組件無縫的切換到另一個協議組件,

同時這種體系架構定義的介面無需修改代碼即可實作加入多種認證技術和授權機制,因為 JAAS API 定義了應用程式代碼與實際驗證邏輯之間的抽象,這個抽象不用重新編譯現有的應用程式代碼就可以作為登錄模塊的運行時替代,

這種實作方式是通過應用程式只呼叫 LoginContext 介面,而認證技術的實際提供程式則是基于 LoginModule 介面進行開發的,在運行時LoginContext 通過讀取組態檔確定使用哪些認證模塊來對應用程式進行認證,

file

二、ChunJun任務提交中的Kerberos認證

接下來我們來大家介紹下ChunJun任務提交中的 Kerberos 認證,我們可以參考ChunJun的 readme 檔案中的 yarn session 部分:

https://github.com/DTStack/chunjun/blob/master/README_CH.md

file

首先,我們需要啟動一個 yarn session 環境,進入 Flink 的 bin 目錄下執行 yarn-session 腳本啟動 flink session 并使用 -t 引數上傳 ChunJun 的依賴包,

file

當我們執行 yarn-session 時,腳本內部會呼叫 java 命令運行 FlinkYarnSessionCli 這個類的 main 方法,在 FlinkYarnSessionCli 的 main 方法中,首先需要安裝一個全程序的安全配置,然后獲得一個安裝后的背景關系,并且在背景關系中運行 run 方法,

file

在 run 方法中我們構建了一個 YarnClusterDescripter 物件,這個物件中封裝了 Flink 所依賴的組態檔和 jar 包等,而后再呼叫YarnClusterDescripter 物件的 DeploySessionClister 方法將任務提交到 yarn 集群,至此完成了 Flink session 到 Yarn 的一個提交,

file

我們再回顧下整體的提交流程:

file

● Flink => HDFS

Flink 需要將組態檔以及 session 所依賴的 jar 上傳至 HDFS,因此需要與 HDFS 進行通信

● Flink => Yarn

Flink 需要向 Yarn 申請資源,因此需要與 Yarn 進行通信

●Flink => Zookeeper

如果 Flink 配置了基于 zookeeper 的高可用,那么 JobManager 需要在 Zookeeper 注冊 leader 節點,客戶端還需要從 Zookeeper 上的 leader 節點獲取 webMonitorUrl,因此需要與 Zookeeper 通信

1.SecurityUtils.java

file

2.SecurityUtils#install 方法中首先通過 installModules 方法對 Flink 內部的安全模組進行了 install(其中包括Hadoop、Jaas、Zookeeper 模組)

file

3.SecurityUtils#installContext 方法對安全背景關系進行初始化(獲得 HadoopSecurityContext,其中包含這 hadoop 的認證憑證 ugi)

file

$Flink_HOME/conf/Flink-conf.yaml

security.Kerberos.login.use-ticket-cache: 是否從你的Kerberos ticket快取中讀取

security.Kerberos.login.keytab: 包含用戶憑證的Kerberos keytab檔案的絕對路徑,

security.Kerberos.login.principal: 與keytab相關的Kerberos principal名稱,

security.Kerberos.krb5-conf.path:指定 krb5.conf 檔案的本地位置,如果定義了,這個conf將被掛載到Kubernetes、Yarn和Mesos的JobManager和TaskManager容器/桶上,注意: 需要在容器內部可訪問到定義的 KDC 的地址,

security.Kerberos.login.contexts: 用逗號分隔的登錄背景關系串列,以提供Kerberos憑證(例如,Client,KafkaClient用于ZooKeeper認證和Kafka認證的憑證),

zookeeper.sasl.service-name: 默認為 "zookeeper",如果ZooKeeper quorum配置了一個不同的服務名稱,那么可以在這里提供,

zookeeper.sasl.login-context-name: 默認為 "Client",該值需要與 "security.Kerberos.login.contexts"中配置的值之一相匹配,

file

04 ChunJun 提交流程中的 Kerberos

執行 ChunJun-Yarn-session.sh 提交任務,ChunJun-Yarn-session.sh 實際上只是對任務的腳本路徑進行了檢查校驗,然后再執行 submit.sh 腳本啟動任務提交行程,

file

Launcher 的 main 方法中主要對不同的任務執行模式進行區分并交給各個模式具體的任務提交類去提交任務,

file

YarnSessionClusterClientHelper 將任務的配置以及依賴的 jar 進行組裝獲得 YarnClusterDescriptor 物件,再將任務提交到對應的 Flink session 上,

file

三、ChunJun Connector 中的Kerberos 認證

接下來為大家介紹 ChunJun Connector 中的 Kerberos 認證 ,

01ChunJun 插件中的 Kerberos

以 ChunJun HDFS Connector 為例:

插件在 openInputFormat 方法中會對任務的目標資料源 HDFS 是否開啟了 Kerberos 進行判斷,如果開啟了 Kerberos,則會根據配置的認證檔案進行認證并獲取認證后的 ugi,ugi 可以認為是之后插件與 HDFS 通信的用戶憑證,里面保存著用戶的認證資訊.

file

02 如何進行Kerberos 認證

● OpenInputFormat 方法

OpenInputFormat 方法是 Flink 對算子的每個實體進行初始化是都會執行的方法,ChunJun 的BaseRichInputFormat 也實作了該方法,我們開發插件也都會去實作該方法,

對于每個算子實體來說,Kerberos 認證只會進行一次(不包括認證過期后的重繪),因此 Kerberos 認證的代碼應該在該方法中實作.

file

● 開發 hadoop 生態中的資料源組件

一般而言,Hadoop 生態中的資料源組件如:HDFS、HBase、Hive 等都是用 ugi(UserGroupInformation) 進行 Kerberos 認證,

ChunJun 內部也提供了相關的工具類用于獲取登錄后的 ugi:com.dtstack.ChunJun.util.FileSystemUtil#getUGI

● 開發 Zookeeper、Kafka 等組件

這類組件開啟 Kerberos 認證后,用戶需要在插件端配置 jaas.conf 檔案,再通過各個組件提供的引數配置項配置組件所選用的 jaas.conf 的 entry,即可完成 Kerberos 配置,

03 如何排查 Kerberos 認證問題

$Flink_HOME/conf/Flink-conf.yaml

jvm 啟動引數中增加 “-Dsun.security.krb5.debug=true”

env.java.opts:用于配置啟動所有Flink行程的JVM 引數

env.java.opts.jobmanager:用來配置啟動 JobManager 的 JVM 引數

env.java.opts.taskmanager:用來配置啟動 TaskManager 的 JVM 引數

env.java.opts.historyserver:用來配置啟動 HistoryServer 的 JVM 引數

env.java.opts.client:用來配置啟動 Flink Client 的 JVM 引數

04 Kerberos 認證常見問題

1.javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

此訊息表明一個操作嘗試要求以Kerberos的user/host@realm身份認證的操作,但票據cache中沒有用于user/host@realm的票據,

用戶環境參考的策略/票證快取檔案丟失、不可讀(權限)、損壞或無效票證續簽壽命設定為零

票證授予票證(TGT)不存在,因為服務A需要將命令作為服務B運行,但尚未正確配置為允許模擬服務B

票證更新尚未執行/未成功,這可能是由于CDH 5.3之前的HBASE或CDH5.2之前的Hive / Sentry缺陷引起的

該用戶的憑據尚未在KDC中生成

執行了手動步驟,例如hadoop fs -ls,但是用戶從未通過Kerberos身份驗證

Oracle JDK 6 Update 26或更早版本無法讀取由MIT Kerberos 1.8.1或更高版本創建的Kerberos憑證高速快取,

某些版本的Oracle JDK 8可能會遇到此問題

2.javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)]

由JDK缺陷引起

票證訊息對于UDP協議而言太大

主機未正確映射到Kerberos領域

3.Found unsupported keytype(18)

確保正確安裝了與JDK相匹配的無限強度策略檔案的正確版本

確保對策略檔案(位于jdk目錄中,例如/usr/java/jdk1.7.0_67-cloudera/jre/lib/security/)的許可權能夠被所有用戶讀取,

確保檔案已部署到集群軟體正在使用的jdk中

有關詳細資訊,使用以下的(鏈接以匹配關鍵字型別號18在該實體中)將其加密型別http://www.iana.org/assignments/Kerberos-parameters/Kerberos-parameters.xml(AES256-CTS-HMAC-此示例為sha1-96)

4.GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - UNKNOWN_SERVER)

hostname或要訪問的URL與keytab中列出的主機之間發生主機名不匹配,造成這種情況的原因多種多樣,包括但不限于:

多網卡(NIC)服務器,以使來自主機的資料包的IP地址與通過主機決議回傳的IP不匹配

負載平衡器和后續的主機名決議問題

DNS和主機名決議問題/不一致

反向DNS(必需)主機名決議問題/不一致

在krb5.conf中主機正在映射到引數[domain_realm]的錯誤域,這或者是通過其他的krb5.conf配置,或者是通過KDC配置,默認引數情況下,除非使用[domain_realm]等進行顯式配置,否則主機名(例如:“ crash.EXAMPLE.com ”)將映射到域“ EXAMPLE.com ” ,請參見MIT Kerberos檔案:[domain_realm]

如果嘗試在Cloudera Manager中執行“ Generate Credentials ”步驟(在更高版本中重命名為“ Generate Missing Credentials ”)時發生此錯誤,則可能是由于匯入到Cloudera Manager資料庫中的管理員帳戶詳細資訊不再與主機匹配,例如Cloudera Manager服務器的主機名在上一次匯入后隨后更改了,

視頻回放&PPT獲取

  • 視頻回看:

https://www.bilibili.com/video/BV1mD4y1h7ce/?spm_id_from=333.999.0.0

  • 課件獲取:

關注公眾號“ChunJun”,后臺私信“課件”獲得直播課件

想了解或咨詢更多有關袋鼠云大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠云官網:https://www.dtstack.com/?src=https://www.cnblogs.com/DTinsight/archive/2022/12/16/szbky

同時,歡迎對大資料開源專案有興趣的同學加入「袋鼠云開源框架釘釘技術qun」,交流最新開源技術資訊,qun號碼:30537511,專案地址:https://github.com/DTStack

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/540183.html

標籤:其他

上一篇:openGemini v0.2.0版本正式發布:5大特性全面增強

下一篇:openGemini v0.2.0版本正式發布:5大特性全面增強

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more