主頁 > 資料庫 > 京東零售大資料云原生平臺化實踐

京東零售大資料云原生平臺化實踐

2022-12-04 06:58:37 資料庫

導讀: 今天為大家介紹京東零售大資料的云原生平臺化實踐,主要包括以下幾大方面內容:

  • 云原生的定義和理解

  • 云原生相關技術的演化

  • 京東大資料在云原生平臺化上的實踐

  • 云原生應用平臺的發展


分享嘉賓:劉仲偉 京東 架構師

編輯整理:張明宇 廣州某銀行

出品社區:DataFun


01/云原生的定義和理解

1. 云原生的定義

云原生這個概念大家已經很熟悉了,但是否有一個準確的定義呢?每個人都在說云原生,但大家對云原生的理解是不同的,

CNCF對云原生的定義如下:

image

很多時候,大家會想應用容器化就等于云原生化,應用上了Kubernetes是否等于云原生化,使用了Kubernetes的API是否等于云原生化?答案是不一定,因為云原生的定義在變化,

2015年CNCF成立,對云原生的定義如下:

image

Pivotal在2019年也對云原生做了定義,雖然Pivotal現在已經被收購,但其在云原生的定義和發展方面起了很大的作用,Pivotal對云原生的定義涉及幾個方面:Devops, Continuous Delivery, Microservices和Containers,

image

綜上所述,不同公司或不同的組織,對其定義不同,隨著時間的變化,云原生的定義也發生著變化,

2. 云原生的理解

我們今天所討論的云原生是大資料范疇內的云原生,云原生可以分為云和原生兩部分,

image

  • 云(Cloud)

image

云(Cloud)是什么?我們回顧云的發展,起初沒有云,只有Traditional On-Premises IT,經過后續的發展,云(上圖中深色部分)作為提供的基礎設施(或服務)變得越來越多,作為一個企業或企業的應用開發者,需要維護的東西越來越少,云會提供許多服務,

  • 原生(Native)

流行詞典中對native的定義如下:

image

如上圖中所示,native相當于土著,即在何處出生、生活,前幾年大家做的最多的是上云或遷移到云這個動作,即你的產品、應用并不是在云上設計的,而是在云還沒有提供服務之前就已經設計好了,Hadoop剛出來時,整個生態并不是為云設計的,如果云已經像今天這樣成熟的話,那么可能就是另外一個樣子了,因為Yarn做的很多事情是編排調度,現在,編排調度或容器化的服務,已經完全跟Hadoop當年提出時不同,所以從Hadoop生態來說,它其實并不是On the Cloud,

對于云原生,我提出這樣的理解:生于云,長于云,

image

生于云即應用或整個產品在設計時,是按照有云服務進行設計的,公有云、私有云或者混合云的形式,為應用或產品提供很多特性或服務,我要做的是專注于本身應用的特性和邏輯,把可擴展性、彈性、安全性等特性,放到云上或云提供的能力上來使用,而不是我的應用自己去做,

長于云是指除了在應用設計時利用云服務,在應用的維護和演程序序中,也會使用云提供的服務,隨著云服務能力的不斷壯大,應用的新需求也會考慮使用云服務新特性來實作,達到“長于云”,

大資料云原生意味著什么?容器化上Kubernetes的確是一種云原生,但如果現在新設計一些應用或產品,可能不只是上Kubernetes這么簡單,而是要考慮這個產品哪些部分是可以剝離出來的、不用在自己的應用里面去考慮的,以及哪些部分是可以直接依托于云廠商或平臺去做的,

02/云原生相關技術的演化

云原生技術有哪些?我這里列了一些時間點,

image

更早期的虛擬化技術我沒有列,因為那些技術屬于上一個時代的事情,我從docker開始,因為docker開始,大家對于容器化有了共同的認知,

2013年有了docker,2014年有了Kubernetes,但2014年Kubernetes剛發布時并未掀起太多風浪,2015年,CNCF正式成立,它把Kubernetes當成第一個專案去運作,2018年Kubernetes畢業時,云原生仿佛有了依托,上Kubernetes就變成了云原生,Kubernetes變成了一個事實性的標準,后面像Istio的發布,Knative的開源,這些技術的出現,相當于是在Kubernetes上添磚加瓦,讓Kubernetes變得更加豐富,Istio相當于容器間的通信者,Knative相當于無服務器的平臺框架,

如上圖下方所示,云原生從微服務時代發展到服務網格時代,最后步入Serverless時代,

2021年1月,KubeVela1.0發布,KubeVela 1.0可能沒有前面這幾個專案那么有名,一是因為推出的時間晚,二是因為不是由Google推出,kubeVela相當于是阿里云推出的一個專案,是作為應用PaaS層的一個框架,有點類似于Knative作為一個無服務器的平臺框架,

03/京東大資料在云原生平臺化上的實踐

1. 云原生技術選型

image

先看Knative這部分,上文中提到它是一個無服務的PaaS框架,對于京東大資料,Knative并不是好的選擇,因為它必須是一個無狀態的http服務,而且還不能掛載PVC,所以只能去做無服務器短時任務的調度,

image

再看Service Mesh,它通過Sidecar的方式去提供容器間通信,但這個通信有成本,因為它本來是兩個app之間的通信,變成了要通過sidecar去跳,那么這個跳就意味著通信成本的增加,所以也不是很好的選擇,因此,我們現在并沒有直接使Service Mesh來管理容器間的通信,

image

除了上述幾個技術之外,在開源界的另一選擇是在Kubernetes上面去做Operator,就像Operators Hub,大家可以看到有很多開源服務它本身已經提供了Operator,而且也方便用,但問題是每個Operator都是各個組織自己開發的,并沒有一個公共的抽象,我們想改的話,需要對每個Operator進行修改,成本很大,所以這也不是我們的選擇,

2. 京東大資料的實踐

接下來看一下我們在京東的云原生方式,

image

首先我們要定位,定位是一個PaaS層,但PaaS層是在Kubernetes的基礎之上去提供一些能力,包括資源、安全、API、應用組件配置等一系列管理能力,也包括控制能力,為什么單獨講控制能力呢?因為我們做的方式跟社區的Operator邏輯一致,但又有些不同,我們把它抽象成一個統一的模型來做,而不是每個產品都做一個Operator,

image

業務模型分成三層,第一層是組件,Yarn里面Node Manager或Resource Manager本身就一個程式,可以定義成一個組件,

第二層是應用模版,多個組件組合在一起就是一個應用,這個應用模板定義了一個應用,比如Yarn這個應用,它由多個組件組成,一個應用可能是單組件,也可能是多個組件,每個應用可以自己靈活組裝,提供了應用定義的靈活性,

第三層是系統模板,我們提供一個大資料的平臺,大資料平臺不是僅有一個Hadoop,而是帶著一系列產品,包括HBase、Yarn、Spark,還可以帶著資料傳輸、資料調度、資料管理、資料分析、甚至BI等一系列應用在一起,組合成一個大資料系統,

這個大資料系統可能會對不同的部門,或對不同的服務物件,可能存在不同的組合,有的可能是一個輕量級的,由最精簡的幾個應用組合成一個系統;有的可能很大規模,所以我們需要帶一系列標準,對于后面的使用者來說,只需要一個實體化的程序就可以使用,

image

上圖中可以看到我們有幾個主要的組件,一個是Portal,這部分是我們的管控臺,在這個管控臺里面去定義上文中說的應用,從組件開始定義,組件里面又包含了各個組件的組態檔、組件的鏡像image、一些動態配置,哪些配置項可以動態生成,在組件或者應用創建時,需要動態輸入,

另外,上文說的去組合成一個應用模板,以及組合成一個系列,這一系列都在合作區,由用戶來定義,定義之后會渲染出來Kubernetes里面一個應用crd,應用crd由controller負責生成應用,Resource Watcher也是一個重要的組件,是去watch Kubernetes上面各個資源的狀態,然后再更新到外部資料庫中,

我們用了Sidecar的模式提供很多應用特性,上文說到云原生的關鍵是可以提供一些平臺級的特性,這些特性我們是作為Sidecar來以平臺的方式統一提供,但是各個應用可以選擇性地去配置,當然每個特性其實都在于背后的一些服務,我們會作為一個平臺統一去提供,

這里其實是一個具體的翻譯程序,從用戶提供的具體鏡像,鏡像里面需要帶組態檔、一些腳本、一些二進制、包括Docker file,相當于是把這些應用的差異性下沉到應用組件里面,由組件內部去控制差異性,如果把每個應用組態檔都做在每個Operator里面,必然會導致整個Operator的膨脹,所以,我們的做法更多是將這些差異性放到每個組件內部,但是我們的控制器會負責呼叫這些腳本,由這些腳本把差異性實作出來,

image

整個程序與上文相同,從Portal里面產生Application的Yaml,這是我們自定義的一個資源格式,然后再由controller翻譯成Kubernetes里面的Service、Pod、Volume、ConfigMap等資源,

從這里可以看出,對于用戶來說,不管是應用的生產者,還是使用者,都不需要太關心Kubernetes的這些概念,因為對于整個行業的從業者來說,Kubernetes并非一個很簡單的東西,特別是隨之衍生出來的Knative或者Istio,很難讓大家都理解這些,并能熟練地應用所有的資源,只要我們能夠提供一層平臺,就可以把這些屏蔽掉,想要用哪個應用就用哪個,

image

再看一下應用crd的例子,

我們定義為cnp,我們內部的一個Cloud Native Platform,在這個Application里面我們可以看到它的volumes的定義,這個volumes跟Kubernetes里面的volumes不太相同,里面更多是具體的PVC的關聯宣告,Volumes template是我們自己獨創的一個概念,在這個模板里面,可以定義這個模板如何宣告,為每個Pod宣告出自己對應的volume,在每個Application里面有多個Components,我們這個components是一個抽象的邏輯概念,在Application里面分成多個Components,每個component可以有自己的定義,這個是對于HBase而言的,分成Master和Region Server,這里我們特意加了一系列的Sidecar containers,這是我們平臺提供的一個特性,里面提供一些監控或日志的能力,每個Sidecar會在Application里面根據Portal取得它的定義和選擇,把Sidecar定義進來,

大家如果熟悉KubeVela的專案,會看到我們在概念上有一些類似,比如我們都有統一的Application,也都有Components這樣的概念,但我們的特點在于我們是平臺直接構建Application的能力和特性,而不是一個開發框架,

因為我們是要提供一個平臺,京東內部會統一去使用,對外提供商業化服務時也是基于這個平臺提供大資料產品和應用,所以并不需要把這個平臺做成一個框架,

image

再介紹我們平臺中的一個特別點——協調作業流,

上文說到我們的controller跟云原生operation里面的controller是一致的,但也有不同,不同就在于引入了作業流的概念,我們使用宣告式的API來宣告,或者說創建一個Application的時候,并不是讓這個Application創建的程序完全變成一個controller內部的黑盒,我們是把這個controller協調的邏輯開放出來,展示給用戶看,整個Application是如何去協調出來的,包括存盤卷的檢查、申請和后面各個組件如何去做,然后在組件內部,依然可以結合成子作業流的方式,把內部的流程再一步步展露出來,

第二個目的是可以去做自定義的Hook,這是我們平臺可以支撐多個產品的一個原因,我們可以把一些Hook點暴露出來,讓各個產品有機會在這些節點上去做自己的定義,比如在多個組件都已經啟動后,會做集群的初始化動作,在這邊定義后,會把這個命令傳遞到集群各個Pod里面去,另外還可以支持組件之間的傳遞,比如component A創建或啟動之后,會產生一個dns,我們會把這個dns引數作為下一個組件的輸入,這個很常見,在大資料里面,比如需要啟動一個Zookeeper,啟動了Zookeeper這個多節點集群之后,這個Zookeeper會作為下一個服務輸入,比如Hbase或其它多個組件,

image

在Kubernetes的很多其他擴展work node中,不支持這種大資料里面的多shard概念,對于每個應用來說,pod相對來說是獨立或平等的,在大資料里面自然存在一種shard的概念,舉個例子,上了1、2、3,那1、2、3每個里面存在自己的replica,我們會支持shard的定義,既支持多shard,也支持單shard,如果存在多shard,我們會對每個shard做親和性和反親和性的支持,pod的命名比較有意思,對于一些多shard應用來說,我們的命名方式可以很清晰地看到這個pod是屬于哪個shard里面的第幾個副本分片,這也是我們的特點之一,

image

上圖是一個典型的應用場景,作為一個應用管理員,京東內部的這些大資料產品里面有很多團隊,每個團隊集成到應用平臺的時候,他來負責應用模板的定義和發布,發布到應用市場,對于用戶來說,他需要做的是應用的創建和使用,

京東內部有多個云臺盤,比如京東云,是對外開放的一個公有云市場,我們在京東云上面,自己申請資源去做開發和測驗的一些作業,Jdos是我們的一個生產環節的云,我們在這上面將多地區多集群進行部署,然后連到平臺上統一管理,但是我們現在還沒有去做跨集群的部署能力,這是后面會考慮的事情,我們現在更多是把應用放在單個集群,因為從需求優先級來說,在單機群上的效率會更高,后面如果考慮多集群的高可用支持,我們也會考慮到地域分布和集群間的通信,綜合考量如何去做多集群的高可用,

04/云原生應用平臺的發展

我們再來看一下過去十幾年PaaS的發展,也由此展望后續的發展方向,

image

  • Heroku

2009年提出,在推動云原生發展程序中起到了關鍵作用,不過Heroku在2010年就被Sales Force收購了,但現在Heroku仍然作為一個產品對外銷售,它是一個企業級的應用,平臺做得很成熟,但有一點很可惜,它是一個閉源的系統,你必須是一個資深的Heroku用戶,才能參與到開發和定制的作業,

  • Cloud Foundry

這是第一個開源的PaaS平臺,由Pivotal公司提供,

  • Openshift

Openshift是紅帽的,因為它們有自己的容器化技術,不是我們后面所認知的容器化標準,所以造成了它現在的生命力問題,雖然到15年的時候,Open shift第三版兼容了Docker,但很復雜,很難迭代,從開源或者社區角度來說,大家去選擇或模仿它的動力不足,

  • 國內專案

Rainbond、Kubesphere是青云提供的容器云概念,把現在流行的好用的組件都裝在了上面,但它并不是一個完整的應用抽象的概念,而是把一堆好用的組件集合在一起,

接下來是KubeVela,它提出的是云原生應用的概念,以應用為中心去做云原生,但它提供的是PaaS的開發框架,從我們自己的思考來看,我們并沒有完全使用這樣一個框架,因為我們有些思路和他們的定義并不完全一致,

我希望通過今天的這個分享引導大家去思考各自公司的云原生平臺該如何設計,主要有兩部分,一部分是它是否生于云,另一部分是這個平臺后續的發展是不是長在云上,

今天的分享就到這里,謝謝大家,


分享嘉賓:

image

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

標籤:大數據

上一篇:1.1 大資料簡介-hadoop-最全最完整的保姆級的java大資料學習資料

下一篇:1.2 Hadoop簡介-hadoop-最全最完整的保姆級的java大資料學習資料

標籤雲
其他(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