0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于機(jī)器學(xué)習(xí)的密碼強(qiáng)度評(píng)測(cè)微服務(wù)實(shí)現(xiàn)

1ujk_Tencent_TE ? 來(lái)源:騰訊技術(shù)工程官方號(hào) ? 2019-12-08 10:46 ? 次閱讀

本文是繼《微服務(wù)架構(gòu)系列一:關(guān)鍵技術(shù)與原理研究》的后續(xù),系列一中論述了微服務(wù)研究的背景和意義,主要調(diào)研了傳統(tǒng)架構(gòu)的發(fā)展以及存在的問(wèn)題和微服務(wù)架構(gòu)的由來(lái),然后針對(duì)微服務(wù)架構(gòu)的設(shè)計(jì)原則、容器技術(shù)、服務(wù)發(fā)現(xiàn)、通信機(jī)制、持續(xù)集成等方面進(jìn)行了分析與研究,并簡(jiǎn)單講述了谷歌Kubernetes的相關(guān)組件和原理。系列二依據(jù)系列一中講述的相關(guān)技術(shù),進(jìn)行了業(yè)務(wù)原理分析和建模,然后一步步實(shí)現(xiàn)了基于機(jī)器學(xué)習(xí)的密碼強(qiáng)度評(píng)測(cè)服務(wù),搭建相關(guān)環(huán)境并部署編排服務(wù)和進(jìn)行了相關(guān)驗(yàn)證,最后對(duì)微服務(wù)架構(gòu)設(shè)計(jì)進(jìn)行了總結(jié)和展望,并簡(jiǎn)單概述了后續(xù)系列的工作。

基于機(jī)器學(xué)習(xí)的密碼強(qiáng)度評(píng)測(cè)微服務(wù)實(shí)現(xiàn)

隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,在數(shù)據(jù)信息日益敏感的當(dāng)下,網(wǎng)絡(luò)安全問(wèn)題也變得日益嚴(yán)峻。加上數(shù)字化和網(wǎng)絡(luò)化在生活中的普及,防止數(shù)據(jù)遭到未經(jīng)授權(quán)訪(fǎng)問(wèn)變得越來(lái)越重要,由于便于理解,使用簡(jiǎn)單和部署成本低,自從互聯(lián)網(wǎng)誕生以來(lái),文本密碼幾乎應(yīng)用于需要保護(hù)我們的數(shù)據(jù)的每一個(gè)地方,盡管它們有許多已知的缺陷[1][2][3]。評(píng)測(cè)密碼強(qiáng)度的方式有很多,除了常規(guī)的基于字符種類(lèi)規(guī)則,也有借助猜測(cè)熵和最小熵對(duì)密碼強(qiáng)度進(jìn)行估計(jì)的研究[4],基于模糊概率上下文無(wú)關(guān)語(yǔ)法的密碼強(qiáng)度估計(jì)[5]。

機(jī)器學(xué)習(xí)是人工智能領(lǐng)域中最能體現(xiàn)智能的分支,從歷史看,機(jī)器學(xué)習(xí)也是人工智能領(lǐng)域發(fā)展最快的分支之一[6]。本章節(jié)會(huì)通過(guò)機(jī)器學(xué)習(xí)方法去對(duì)密碼強(qiáng)弱進(jìn)行分類(lèi),并通過(guò)Python把對(duì)應(yīng)算法即K最近鄰算法,決策樹(shù)算法實(shí)現(xiàn)成微服務(wù),供上游調(diào)用,以組成整體微服務(wù)架構(gòu)中核心業(yè)務(wù)部分。另外因?yàn)闄C(jī)器學(xué)習(xí)相關(guān)算法研究及實(shí)現(xiàn)不是本文重點(diǎn),同時(shí)鑒于時(shí)間和篇幅,對(duì)于樸素貝葉斯、多層感知器、支持向量機(jī)等其它適用于密碼強(qiáng)度評(píng)測(cè)的機(jī)器學(xué)習(xí)算法,在本文就不做討論和相關(guān)具體實(shí)現(xiàn)了,而且已經(jīng)有相關(guān)研究對(duì)其它幾種算法進(jìn)行了可行性論述[7][8],后續(xù)可能會(huì)通過(guò)發(fā)起Github上的開(kāi)源項(xiàng)目去繼續(xù)研究和探討。

1. K-最近鄰算法

K 最近鄰算法(k-Nearest Neighbor),簡(jiǎn)稱(chēng)KNN,是一個(gè)在理論上比較成熟的算法,也是目前最簡(jiǎn)單的機(jī)器學(xué)習(xí)算法之一,它是一種惰性學(xué)習(xí)算法(分類(lèi)器不需使用訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練的時(shí)間復(fù)雜度為0,有利有弊,與其它惰性學(xué)習(xí)算法一樣,KNN的計(jì)算復(fù)雜度會(huì)隨著訓(xùn)練集的空間大小增大而增大,也就是說(shuō)分類(lèi)復(fù)雜度為O(n)),是在1968年由 Cover 和Hart 提出的。該算法的思想是:如果一個(gè)樣本它的特征空間中,有K個(gè)最相似也就是最鄰近的樣本的大多數(shù)都屬于一個(gè)分類(lèi),那么這個(gè)樣本也屬于這個(gè)分類(lèi)。當(dāng)然算法的前提是,所選的K個(gè)樣本都是經(jīng)過(guò)正確分類(lèi)過(guò)的,一般K是不大于20的整數(shù)。一句話(huà)概括就是找到離自己最近的K個(gè)點(diǎn)中的大多數(shù)同一分類(lèi)的類(lèi)別作為自己的類(lèi)別。

距離計(jì)算數(shù)學(xué)描述:

對(duì)于任意的特征向量x:

ar(x)表示實(shí)例x的第r個(gè)屬性值,兩個(gè)實(shí)例xi和xj之間的距離定義為d(xi xj)

根據(jù)歐式距離公式:

訓(xùn)練算法:

對(duì)于每個(gè)訓(xùn)練實(shí)例,把這個(gè)樣本加入訓(xùn)練實(shí)例列表中

分類(lèi)算法:

給定一個(gè)要分類(lèi)的查詢(xún)實(shí)例xq,在訓(xùn)練實(shí)例列表中選出最鄰近xq的k個(gè)實(shí)例,并用x1…xk來(lái)表示,定義離散目標(biāo)函數(shù)

V是有限集合{v1,v2... vs},則

其中如果a=b那么

否則

對(duì)前面的K最近鄰算法做一下簡(jiǎn)單修改,使其能被用于逼近連續(xù)值的目標(biāo)函數(shù),為了達(dá)到此目標(biāo),我們只需要讓算法計(jì)算K個(gè)最臨近實(shí)例的平均值,而不再是計(jì)算其中的最普遍的值,定義實(shí)值目標(biāo)函數(shù)

2. 決策樹(shù)

決策樹(shù)(Decision Tree),顧名思義,是一種樹(shù)——依托策略抉擇而建立的樹(shù)。在機(jī)器學(xué)習(xí)里面,它是一個(gè)預(yù)測(cè)模型,它所代表的是一個(gè)對(duì)象的屬性和值之間的映射關(guān)系。決策樹(shù)是應(yīng)用最廣的歸納推理算法之一,屬于監(jiān)督學(xué)習(xí)中的一種,所謂監(jiān)督學(xué)習(xí),就是給定一定數(shù)量的都有屬于自己的一些屬性以及類(lèi)別的樣本。其中類(lèi)別是根據(jù)數(shù)據(jù)本身屬性確定的,然后,通過(guò)對(duì)樣本數(shù)據(jù)進(jìn)行訓(xùn)練學(xué)習(xí)得到一個(gè)分類(lèi)器,得到的分類(lèi)器可以對(duì)新出現(xiàn)的實(shí)例進(jìn)行分類(lèi),這種機(jī)器學(xué)習(xí)方式就被稱(chēng)為監(jiān)督學(xué)習(xí)。

我們可以用下面的箭線(xiàn)圖1-1來(lái)形象的表示決策的過(guò)程的各個(gè)階段之間的聯(lián)系。

圖1-1決策樹(shù)決策過(guò)程關(guān)系圖

選擇分割的方法可以有很多,但最終目的一致:也就是對(duì)目標(biāo)類(lèi)嘗試進(jìn)行最佳分割,由于從根到葉子有多條路徑,一條規(guī)則對(duì)應(yīng)一條路徑,很明顯,決策樹(shù)是一顆二叉樹(shù)或多叉樹(shù)。

決策樹(shù)有四種構(gòu)成要素,決策結(jié)點(diǎn)、狀態(tài)節(jié)點(diǎn)、方案枝、概率枝。決策結(jié)點(diǎn)也叫方塊結(jié)點(diǎn);狀態(tài)結(jié)點(diǎn)又叫圓形結(jié)點(diǎn);決策結(jié)點(diǎn)引出若干條分支每條分支代表一個(gè)方案,故稱(chēng)方案枝;狀態(tài)結(jié)點(diǎn)又會(huì)引出很多分支,代表不同的狀態(tài),由于上面會(huì)反映客觀狀態(tài)和出現(xiàn)的頻率,每個(gè)分支又被稱(chēng)為概率枝,在概率枝的末端會(huì)有該狀態(tài)下所達(dá)到結(jié)果也就是權(quán)重值。如圖1-2所示。

圖1-2決策樹(shù)圖標(biāo)示例

決策樹(shù)分類(lèi)的思想跟大學(xué)報(bào)志愿類(lèi)似,我們會(huì)考慮,學(xué)校層次是名校、985還是211等,然后地域是南方還是北方、專(zhuān)業(yè)是否熱門(mén)等因素,不同的因素不同的人會(huì)有不同的側(cè)重,所謂因人而異,那么就需要具體情況具體分析和決策。如果把每一個(gè)未知的選項(xiàng)都?xì)w類(lèi)到已有的分類(lèi)類(lèi)別中就形成了一顆決策樹(shù)。

3. 訓(xùn)練數(shù)據(jù)準(zhǔn)備

訓(xùn)練數(shù)據(jù)是利用了2014年俄羅斯黑客在網(wǎng)上公布的近500萬(wàn)Gmail郵箱及對(duì)應(yīng)密碼,再加上密碼強(qiáng)度分類(lèi)——把這部分密碼重新請(qǐng)求谷歌密碼強(qiáng)度驗(yàn)證服務(wù)https://accounts.google.com/RatePassword得到的與相應(yīng)密碼對(duì)應(yīng)的密碼強(qiáng)度數(shù)據(jù)。技術(shù)上是通過(guò)PHP來(lái)抓取的,因?yàn)?a href="http://ttokpm.com/analog/" target="_blank">模擬請(qǐng)求比較簡(jiǎn)單,主要是用Curl偽造User-Agent等相關(guān)Header,借助于multi_exec,并發(fā)100,速度還是比較快的,不到一天就抓完了。需要注意的是谷歌服務(wù)器對(duì)IP訪(fǎng)問(wèn)有一定的限制,所以這部分操作是事先在網(wǎng)絡(luò)上尋找免費(fèi)的代理IP,集合到共享內(nèi)存,然后用另外一個(gè)腳本去取IP并用此IP訪(fǎng)問(wèn)百度,如果HTTP請(qǐng)求在一秒鐘返回200,在給當(dāng)前IP權(quán)值加1,一秒鐘未返回或返回非200,則減1,加1最大到7,減1最小到-3,一段時(shí)間后,就會(huì)有一個(gè)相對(duì)活躍的IP池,供抓取腳本隨機(jī)選取利用。

之所以抓取谷歌密碼強(qiáng)度數(shù)據(jù),是因?yàn)樵谡{(diào)研了包括12306注冊(cè),百度賬號(hào)注冊(cè),騰訊QQ注冊(cè),阿里的淘寶注冊(cè),Microsoft Bing,F(xiàn)acebook賬號(hào)注冊(cè),Google Gmail注冊(cè)等相對(duì)較大的網(wǎng)站后發(fā)現(xiàn),除了Facebook對(duì)于非法或簡(jiǎn)單密碼是通過(guò)服務(wù)端返回比較有意思的"請(qǐng)選擇更安全的密碼。密碼必須多于 6 個(gè)字符,并且對(duì)你意義獨(dú)特,使其他人難以猜出。"信息,Google是通過(guò)前端返回最短長(zhǎng)度提示以及服務(wù)端返回弱,一般,較強(qiáng),強(qiáng)的密碼強(qiáng)度提示外,其它網(wǎng)站及應(yīng)用都是通過(guò)純前端的規(guī)則來(lái)進(jìn)行限制和提示,比如字符的長(zhǎng)短,數(shù)字,大小寫(xiě),特殊字符的種類(lèi)多少等。

4. 數(shù)據(jù)預(yù)處理

密碼按長(zhǎng)度和字符類(lèi)型劃分為五個(gè)維度,分別是密碼長(zhǎng)度,是否含有數(shù)字,是否含有大寫(xiě)字母,是否含有小寫(xiě)字母,是否含有特殊字符。程序簡(jiǎn)單實(shí)現(xiàn)如圖1-3所示。

圖1-3數(shù)據(jù)預(yù)處理python主要代碼

5. 算法實(shí)現(xiàn)

5.1 K最近鄰算法密碼評(píng)測(cè)

對(duì)未知密碼強(qiáng)度密碼實(shí)施KNN分類(lèi)算法偽代碼如下:

1)計(jì)算已知密碼強(qiáng)度數(shù)據(jù)計(jì)算密碼強(qiáng)度向量與當(dāng)前密碼向量之間的距離

2)對(duì)上一步計(jì)算結(jié)果按照距離遞減排序

3)選出與當(dāng)前密碼向量距離最小的Top K個(gè)密碼向量,K為20

4)確定Top K個(gè)向量所在類(lèi)別占數(shù)據(jù)集或抽樣數(shù)據(jù)集密碼強(qiáng)度的比例

5)返回Top K個(gè)向量比例最高的密碼強(qiáng)度為當(dāng)前密碼向量密碼強(qiáng)度

經(jīng)過(guò)數(shù)據(jù)打散,抽樣,并按等同比例獲取四種密碼強(qiáng)度數(shù)據(jù),用Matplotlib畫(huà)散點(diǎn)圖如圖1-4所示,從圖中密碼強(qiáng)度分布中,大致可以看出符號(hào)種類(lèi)越多越強(qiáng),密碼位數(shù)越多越強(qiáng)的規(guī)律。

圖1-4 KNN數(shù)據(jù)建模呈現(xiàn)圖

5.2 決策樹(shù)算法密碼強(qiáng)度評(píng)測(cè)

對(duì)未知密碼強(qiáng)度密碼實(shí)施決策樹(shù)分類(lèi)算法偽代碼如下:

1)創(chuàng)建唯一的影響密碼強(qiáng)度分類(lèi)的因素列表

2)計(jì)算每種劃分方式下密碼強(qiáng)度數(shù)據(jù)的香農(nóng)熵

3)找出最好的信息增益計(jì)算方式

4)因?yàn)樘卣髦涤卸鄠€(gè),一次劃分后可以再次劃分?jǐn)?shù)據(jù),需要遞歸劃分?jǐn)?shù)據(jù)

5)存儲(chǔ)訓(xùn)練數(shù)據(jù)得到的樹(shù),并能夠解析決策樹(shù),以供新密碼向量遍歷

6)比較當(dāng)前密碼向量的與樹(shù)節(jié)點(diǎn)的值,如果到達(dá)葉子節(jié)點(diǎn),返回這個(gè)葉子節(jié)點(diǎn)的密碼強(qiáng)度分類(lèi)。

經(jīng)過(guò)數(shù)據(jù)打散,抽樣,并按等同比例獲取四種密碼強(qiáng)度數(shù)據(jù),通過(guò)上述算法實(shí)現(xiàn)后得到如下決策樹(shù):

{'密碼字符種類(lèi)': {1: {'密碼長(zhǎng)度': {8:弱, 9:一般, :一般, 11:一般, 12:弱, 13:弱, 14:一般, 15:弱, 16:一般}}, 2: {'密碼長(zhǎng)度': {8:弱 , 9:弱, :一般, 11:較強(qiáng), 12:一般, 13:一般, 14:一般, 15:強(qiáng), 16:一般}}, 3: {'密碼長(zhǎng)度': {8:一般, 9:較強(qiáng), :較強(qiáng), 11:強(qiáng), 12:較強(qiáng), 13:強(qiáng), 14:強(qiáng), 15:強(qiáng), 16:強(qiáng)}}, 4: {'密碼長(zhǎng)度': {8:強(qiáng), 9:較強(qiáng), :強(qiáng), 11:較強(qiáng), 12:強(qiáng), 13:強(qiáng), 14:強(qiáng), 15:強(qiáng), 16:強(qiáng)}}}

用Matplotlib展示如圖1-5所示(其中葉結(jié)點(diǎn)的阿拉伯?dāng)?shù)字1,2,3,4分別代表密碼強(qiáng)度弱,一般,較強(qiáng)強(qiáng))。通過(guò)決策樹(shù)我們更能清晰地觀察到,密碼強(qiáng)度與密碼種類(lèi)強(qiáng)相關(guān),密碼種類(lèi)越多,相同密碼位數(shù)的密碼強(qiáng)度越強(qiáng)。

圖1-5密碼強(qiáng)度決策樹(shù)

環(huán)境搭建,測(cè)試實(shí)驗(yàn)

搭建Kubernetes的方式有很多,在研究過(guò)程中,經(jīng)過(guò)從最初的在本地虛擬機(jī)原生搭建1.6,在阿里云服務(wù)器上用Kubeadm搭建1.8,本地虛擬機(jī)Kubeadm搭建1.10,本地Vagrant搭建1.11,谷歌云服務(wù)器Kubernets Engine直接搭建1.12等實(shí)驗(yàn)。發(fā)現(xiàn)本地原生搭建是最麻煩的,因?yàn)榧捍罱ㄟ^(guò)程中需要通過(guò)自創(chuàng)建各種證書(shū),一步步的安裝各個(gè)組件和啟動(dòng)各個(gè)節(jié)點(diǎn),較繁瑣。谷歌云直接用Kubnernets引擎搭建是最迅捷的,只需要選擇需要版本就可以。綜合考慮研究部分步驟的必要性及通用性?xún)r(jià)值,最終選擇在阿里云服務(wù)器采用Kubeadm搭建,Kubeadm是官方提供的自動(dòng)化安裝工具,自動(dòng)配置了必要的服務(wù)和安全的認(rèn)證,主要組件都變成Pod而非操作系統(tǒng)進(jìn)程,這樣可以不斷檢測(cè)其狀態(tài)并且進(jìn)行相應(yīng)的容錯(cuò)處理,本章主要內(nèi)容就是借助Kubeadm搭建高可用Kuberntes集群,并講述了在部分核心資源不可獲取時(shí)如何應(yīng)對(duì)[10]。

1. Docker及Docker-Registry搭建

1.1 安裝Docker

Docker安裝相對(duì)Etcd比較簡(jiǎn)單,可以選擇如下三種方式之一:

1)通過(guò)配置軟件源安裝:

官方源:

為了確認(rèn)所下載軟件包的合法性,需要添加軟件源的 GPG 密鑰,命令參考如下:

curl -fsSL https://download.docker.com/linux/debian/gpg> key.gpgapt-keyaddkey.gpg

然后,我們需要向 source.list 中添加 Docker CE 軟件源:

sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable"

國(guó)內(nèi)源:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"

然后執(zhí)行更新安裝

apt-get updateapt-get install docker-ce

2)腳本安裝:

Docker官方為了簡(jiǎn)化安裝流程,提供了一套便捷的安裝腳本

curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh --mirror Aliyun

執(zhí)行此命令后,腳本就會(huì)自動(dòng)將一切準(zhǔn)備工作做好,并把 Docker CE 的 Edge 版本安裝在系統(tǒng)中。

3)二進(jìn)制安裝:

下載,解壓,復(fù)制相關(guān)文件到指定目錄:

wget https://get.docker.com/builds/Linux/x86_64/docker-17.05.0-ce.tgztar -xvf docker-17.05.0-ce.tgzcp docker/docker* /usr/local/bin/cp docker/completion/bash/docker /etc/bash_completion.d/

配置/etc/systemd/system/docker.service:

[Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.io [Service] Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin" EnvironmentFile=-/run/flannel/docker ExecStart=/usr/bin/dockerd --log-level=error $DOCKER_NETWORK_OPTIONS ExecReload=/bin/kill -s HUP $MAINPID Restart=on-failure RestartSec=5 LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target

啟動(dòng):

systemctl enable dockersystemctl start docker

1.2 Docker-Registry搭建

有了Docker,搭建Docker-Registry就更簡(jiǎn)單了,借助于Registry鏡像,可以用如下命令一鍵搭建:

docker run -d -p 5000:5000 -v /opt/registry/data:/var/lib/registry --restart=always --name registry registry

除此外可以利用Nginx作為反向代理打造私有registry,還可以順帶定制化域名訪(fǎng)問(wèn),比如localtest.registry..com:9000,如下就是nginx反向代理做的簡(jiǎn)單登錄認(rèn)證相關(guān)命令及配置:

htpasswd -c /etc/nginx/docker-registry.passwd passwordserver { listen 9000; auth_basic "Dokcer-registryAccess"; auth_basic_user_file /etc/nginx/dokcer-registry.passwd; location / { proxy_pass http://ip:5000; }}

當(dāng)然除此外如果需要外網(wǎng)訪(fǎng)問(wèn)并對(duì)安全有更高要求,依然可以通過(guò)Nginx添加SSL證書(shū),開(kāi)啟相關(guān)配置使用HTTPS方式請(qǐng)求。

這里需要注意的是,搭建好Kubernetes后需要添加本地指定的Docker-registry,使用如下命令,不然默認(rèn)是連接docker.hub。

kubectl create secret docker-registry--docker-server=localtest.registry.com:9000--docker-username=username--docker-password=password--docker-email=username@xxmail.com

2. Etcd集群搭建

前面已經(jīng)提到了Etcd的原理和用途,在這里Ectd作為Kubernetes集群中非常重要的組件,用以存儲(chǔ)集群中所有的網(wǎng)絡(luò)配置及相關(guān)對(duì)象的狀態(tài)信息。

2.1二進(jìn)制模式安裝

下載二進(jìn)制文件,解壓,然后拷貝到指定目錄,命令參考如圖2-1。

圖2-1 Etcd二進(jìn)制下載相關(guān)命令

分別在三個(gè)服務(wù)器節(jié)點(diǎn)按圖2-2所示命令進(jìn)行配置。

圖2-2 Etcd二進(jìn)制安裝命令

上述配置,name是節(jié)點(diǎn)名稱(chēng),initial-advertise-peer-urls是集群其他節(jié)點(diǎn)地址,listen-peer-urls是用于與其他節(jié)點(diǎn)通訊的監(jiān)聽(tīng)地址,advertise-client-urls是知客戶(hù)端地址,initial-cluster-token 是集群的ID,initial-cluster是集群中所有節(jié)點(diǎn),initial-cluster-state是集群狀態(tài)是初始化還是已存在。除此外還有很多參數(shù),比較重要的比如data-dir 指定節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)目錄,這些數(shù)據(jù)包括節(jié)點(diǎn)ID,集群ID,集群初始化配置,Snapshot文件等。再就是可以通過(guò)安全相關(guān)參數(shù)即ca-file,cert-file,key-file配置TLS模式,實(shí)現(xiàn)更安全的模式。

集群建立后,可以通過(guò)curl http://10.0.30.101:2379/v2/members或etcdctl命令查看集群信息,具體如圖2-3所示。

圖2-3 Etcd集群狀態(tài)信息

2.2 Docker模式搭建

Docker方式跟二進(jìn)制方式大同小異,只是每個(gè)ectd節(jié)點(diǎn)運(yùn)行在一個(gè)docker容器中,具體命令如圖2-4所示。

圖2-4 Docker搭建Etcd命令(1)

圖2-4 Docker搭建Etcd命令(2)

3. Kubernetes集群搭建

3.1 安裝Kubeadm、Kubelet、Kubectl

網(wǎng)絡(luò)正常及有正常可用apt源的時(shí)候很簡(jiǎn)單,就是簡(jiǎn)單的如下更新安裝:apt-get update&&apt-get install Kubeadm Kubelet Kubectl,這里額外介紹一種在研究初期無(wú)安裝源及無(wú)可用命令行翻墻配置時(shí)的方式。

1)翻墻下載packages索引

https://packages.cloud.google.com/apt/dists/Kubernetes-xenial/main/binary-amd64/Packages

這里選擇1.8版本,具體索引如下:

2)根據(jù)Filename下載對(duì)應(yīng)的deb

https://packages.cloud.google.com/apt/pool/Kubeadm_1.8.0-00_amd64_22842ddc6d1ffabc04718f384ac001ffa56324cc61e6c3a7c991337bf3e39e06.debhttps://packages.cloud.google.com/apt/pool/Kubectl_1.8.0-00_amd64_9bd409d2a0300d4b550cd2a7fd2eca6437ea0767805f6fd807912b245ec949ed.debhttps://packages.cloud.google.com/apt/pool/Kubelet_1.8.0-00_amd64_00b7c77c924d654c7def52c83cfeb9a3d1836c1e7b40683c3fe8207b0bd299d1.deb

3)構(gòu)建本地軟件源并更新安裝

dpkg-scanpackages ./| gzip - > ./Packages.gzapt-get updateapt-get install Kubeadmapt-get install Kubeletapt-get install Kubectl

4)配置kubeadm init的配置文件

由于在新版本中,kubeadm init已經(jīng)廢棄了--external-etcd-endpoints參數(shù),所以要引用外部高可用Etcd集群,我們需要手動(dòng)為Kubeadm創(chuàng)建yaml配置文件kube-config.yaml,然后執(zhí)行kubeadm init --config=kube-config.yaml,Ectd相關(guān)配置如圖2-5所示:

圖2-5 Kubeadm初始化時(shí)Kube-config.yaml配置文件

3.2 Kubeadm初始化

1)準(zhǔn)備相關(guān)鏡像

因?yàn)镵ubeadm在初始化集群時(shí)候拉取gcr.io中的鏡像也要求能夠科學(xué)上網(wǎng),雖然目前已經(jīng)有一些網(wǎng)站提供相關(guān)鏡像,但為了更快速尤其是用到指定版本或最新版本,這里借助于dockerhub的Configure Automated Builds,依據(jù)Github的Dockerfile轉(zhuǎn)存谷歌容器倉(cāng)庫(kù)(gcr.io)的鏡像,轉(zhuǎn)存命令很簡(jiǎn)單,以調(diào)度器為例:

FROM gcr.io/google_containers/kube-scheduler-amd64:v1.6.0,具體Dockerhub配置如圖2-6所示。

圖2-6 Dockerhub配置Github自動(dòng)構(gòu)建圖

之后通過(guò)命令拉取下來(lái)重新打一下標(biāo)簽就行:

docker pull raysail/kube-scheduler-amd64:v1.8.0dockertag raysail/kube-scheduler-amd64:v1.8.0gcr.io/google_containers/kube-scheduler-amd64:v1.8.0

需要轉(zhuǎn)存的鏡像鏡像列表如下:

gcr.io/google_containers/kube-scheduler-amd64:v1.8.0gcr.io/google_containers/kube-apiServer-amd64:v1.8.0gcr.io/google_containers/kube-controller-manager-amd64:v1.8.0gcr.io/google_containers/kube-proxy-amd64:v1.8.0gcr.io/google_containers/k8s-dns-Kube-dns-amd64:1.14.5gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5

不同版本對(duì)應(yīng)相關(guān)鏡像不一樣,具體可以參照生成的相關(guān)Manifests或者打印出的日志以及初始化時(shí)的日志或通過(guò)Kubectl logs查看對(duì)應(yīng)的pod日志。

另外,為了使Flannel正常工作,Kubernetes官方文檔指出,在Kubeadm init 時(shí)候必須要追加--pod-network-cidr=10.244.0.0/16參數(shù)[10]。因?yàn)樯厦嬖谝胪獠扛呖捎肊tcd集群時(shí)已經(jīng)采用了Kubeadm的配置文件方式,且Flannel的CIDR配置參數(shù)不能用--config同時(shí)存在,所以需要在Kube-config.yaml文件中增加如下兩行配置:

networking: podSubnet: 10.244.0.0/16

Kubeadm初始化成功后,可以用命令檢查組件狀態(tài)

kubectl get componentstatuses,執(zhí)行結(jié)果如圖2-7所示。

圖2-7 Kubernetes集群初始化后組件健康信息

3.3安裝Flannel

因?yàn)橐呀?jīng)安裝了Kubectl,F(xiàn)lannel可以直接用Kubernetes的形式安裝,命令如下:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.0/Documentation/kube-flannel.yml

需要注意的是跟如上鏡像一樣,到https://hub.docker.com的Configure Automated Builds中轉(zhuǎn)存一下quay.io/coreos/flannel:v0.9.0-amd64。

3.4 加入Nodes

Kubeadm初始化后會(huì)生成一個(gè)token,用此token通過(guò)命令:kubeadm join --token 86d22a.123582ce916b31fc 10.0.30.104:6443加入節(jié)點(diǎn),分別在Master之外的兩臺(tái)機(jī)器執(zhí)行上述命令后,Kubelet會(huì)分別在兩臺(tái)Node上啟動(dòng)Flannel和Kube-proxy,如圖2-8所示。

圖2-8 Kuberntes集群搭建完成pod示例圖

4. 密碼評(píng)測(cè)微服務(wù)搭建部署

4.1 構(gòu)建服務(wù)鏡像

因?yàn)閮蓚€(gè)基于機(jī)器學(xué)習(xí)的密碼強(qiáng)度評(píng)測(cè)算法都是用Python實(shí)現(xiàn)的,而其中因?yàn)樯婕暗胶芏鄶?shù)組或矩陣的運(yùn)算,所以需要Python的NumPy(Numerical Python)庫(kù)的支持,NumPy是Python 的一個(gè)擴(kuò)展程序庫(kù),支持高維數(shù)組和矩陣運(yùn)算,除此外也對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。安裝Numpy的方式有很多,可以用Pip或Apt-get 等進(jìn)行安裝,因?yàn)槌诉@個(gè)庫(kù)還有一些依賴(lài)庫(kù),比如Matplotlib等,這里我們使用數(shù)據(jù)分析較常用的Anaconda這個(gè)支持 Linux, Windows 和 Mac 系統(tǒng),用于大規(guī)模數(shù)據(jù)處理,預(yù)測(cè)分析和科學(xué)計(jì)算并致力于簡(jiǎn)化包的管理和部署的Python免費(fèi)發(fā)行版。

Anaconda的安裝比較簡(jiǎn)單,這里就不做贅述,為了方便直接使用Dockerhub上比較受歡迎的continuumio/anaconda鏡像作為基礎(chǔ)鏡像構(gòu)建我們的微服務(wù)鏡像,Dockerfile如圖2-9和圖2-10所示。

圖2-9基于K最近鄰密碼強(qiáng)度評(píng)測(cè)Dockerfile

構(gòu)建鏡像:docker build -t localtest.registry..com:9000/knnpassord:v1 .

運(yùn)行測(cè)試:docker run -d -p 6666:6666 raysail/knnpassord:v1

提交倉(cāng)庫(kù):docker push localtest.registry.com:9000/knnpassord:v1

圖2-10基于決策樹(shù)密碼強(qiáng)度評(píng)測(cè)Dockerfile

構(gòu)建鏡像:docker build -t localtest.registry..com:9000/dtpassord:v1 .

運(yùn)行測(cè)試:docker run -d -p8888:6666 raysail/dtpassord:v1

提交倉(cāng)庫(kù):docker push localtest.registry.com:9000/dtpassord:v1

4.2 Kubnerntes中運(yùn)行為服務(wù)

分別創(chuàng)建副本數(shù)為3的knn-password Deployment ,descisiontree-password Depoyment ,如圖2-11和圖2-12,并分別創(chuàng)建兩個(gè)service如圖2-13和圖2-14:

圖2-11基于KNN的密碼強(qiáng)度評(píng)測(cè)微服務(wù)Deployment

圖2-12基于決策樹(shù)的密碼強(qiáng)度評(píng)測(cè)微服務(wù)Deployment

圖2-13基于KNN的密碼強(qiáng)度評(píng)測(cè)微服務(wù)Service

圖2-14基于決策樹(shù)的密碼強(qiáng)度評(píng)測(cè)微服務(wù)Service

kubnerntes資源查看如圖2-15。

圖2-15密碼評(píng)測(cè)微服務(wù)創(chuàng)建后kubnertes pod和service視圖

用kubectl describe 命令查看服務(wù)可以看到每個(gè)服務(wù)后端掛載有三個(gè)pod,以實(shí)現(xiàn)容災(zāi)和負(fù)載均衡,具體如圖2-16所示。

圖2-16 kubectl describe命令查看服務(wù)視圖

4.3 驗(yàn)證服務(wù)可用性及準(zhǔn)確性

兩個(gè)密碼強(qiáng)度評(píng)測(cè)微服務(wù)的protobuf定義如圖2-17和圖2-18所示。

圖2-17 K最近鄰密碼強(qiáng)度評(píng)測(cè)Protobuf定義

圖2-18決策樹(shù)密碼強(qiáng)度評(píng)測(cè)Protobuf定義

分別用golang和php的客戶(hù)端測(cè)試基于Knn的密碼強(qiáng)度評(píng)測(cè)微服務(wù)和基于決策樹(shù)的密碼強(qiáng)度評(píng)測(cè)微服務(wù)可以正常返回。用如下命令分別生成golang客戶(hù)端樁函數(shù)和php客戶(hù)端樁函數(shù):

protoc --go_out=plugins=grpc:./ ./password.protoprotoc --php_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin ./password.proto

5. 持續(xù)集成和滾動(dòng)更新實(shí)現(xiàn)

5.1 基于Gitolite的Hook技術(shù)

主要算法思想是利用Git的服務(wù)端Hook——post-receive來(lái)觸發(fā)Push代碼后的操作,也就是提交代碼后可以根據(jù)分支以及具體的Log中的關(guān)鍵字來(lái)相應(yīng)的執(zhí)行包括但不限于單元測(cè)試,構(gòu)建鏡像,自動(dòng)部署等操作。

具體可參加如下Shell腳本(處理階段的自動(dòng)化腳本處理和Jenkins觸發(fā)處理注釋了,可選擇其中一種或別的方式)

#!/bin/bashbranch=""services=("KNNPasswordService" "DTPasswordService")while read oldrev newrev refdo branch=`echo $ref | cut -d/ -f3` if [ $branch != "master" ]; then echo "-----not master, exit post receive shell------" exit; fi echo "-----shell start------" gitLog=`git log --name-status -1` for var in ${services[@]}; do if [[ -n `echo $gitLog |grep $var` ]]; then sh /home/raysail/Kubeauto/autopublish.sh $var & #curl -X POST http://10.0.30.202:8900/job/PasswdService/build fi donedone

5.2 基于Kubeapi的滾動(dòng)升級(jí)

具體主要Shell Code如圖2-19所示。

圖2-19 Kubeapi主要Shell code

總結(jié)與展望

本文歷經(jīng)近半年,拋開(kāi)公司內(nèi)已有組件,盡可能從源頭出發(fā),經(jīng)過(guò)閱讀相關(guān)文獻(xiàn),專(zhuān)著,開(kāi)源網(wǎng)站及相關(guān)技術(shù)源碼,以及平時(shí)工作中的實(shí)踐演練和相關(guān)同學(xué)的討論,理論聯(lián)系實(shí)踐,經(jīng)過(guò)業(yè)務(wù)抽象,最終實(shí)現(xiàn)以K近鄰算法和決策樹(shù)算法為算法依據(jù)的基于機(jī)器學(xué)習(xí)的密碼評(píng)測(cè)微服務(wù),并把微服務(wù)部署到Kubenrnetes集群上及進(jìn)行了可行性和正確性驗(yàn)證。從微服務(wù)的單一職責(zé),自治性,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)等設(shè)計(jì)原則開(kāi)始,研究了其相關(guān)技術(shù)棧,包括但不限于容器虛擬化技術(shù),服務(wù)發(fā)現(xiàn)注冊(cè)技術(shù),異構(gòu)系統(tǒng)通信機(jī)制,持續(xù)集成交付部署等,文中很多組件的原理圖都是在基于理論和實(shí)踐后的原創(chuàng)繪制,對(duì)于很多大型的系統(tǒng)架構(gòu)設(shè)計(jì)及軟件基礎(chǔ)架構(gòu)設(shè)計(jì)這些都是可以借鑒的資料。

在以上研究基礎(chǔ)上,經(jīng)過(guò)學(xué)習(xí)考試,通過(guò)了Google和CNCF(Cloud Native Computing Foundation)聯(lián)合推出的CKA(Certified Kubernetes Administrator)認(rèn)證,通過(guò)備考的大量實(shí)踐演練,進(jìn)一步加深了自動(dòng)部署、擴(kuò)展和管理容器化的開(kāi)源框架Kubernetes原理的認(rèn)知,也更加相信未來(lái)此系統(tǒng)會(huì)被大規(guī)模采納并應(yīng)用到更多的企業(yè)和技術(shù)領(lǐng)域。此外在云計(jì)算和大數(shù)據(jù)迅猛發(fā)展的今天,機(jī)器學(xué)習(xí)被越來(lái)越多的應(yīng)用到各行各業(yè)中,而機(jī)器學(xué)習(xí)應(yīng)用的工程化,自動(dòng)化和平臺(tái)化亟需普及和建設(shè),這也是依托Kubernetes集群進(jìn)行基于機(jī)器學(xué)習(xí)的微服務(wù)實(shí)踐的原因,當(dāng)然密碼作為一直都很重要的安全行業(yè)的重要組成部分,作為本文技術(shù)架構(gòu)下的核心業(yè)務(wù)部分也是本文的重點(diǎn)工作。

當(dāng)然本文還有很多優(yōu)化和后續(xù)工作需要做,主要是如下幾點(diǎn)。性能方面:借助Golang語(yǔ)言特性重構(gòu)訓(xùn)練模型,進(jìn)行計(jì)算性能優(yōu)化;應(yīng)用Traefik Ingress等K8S負(fù)載均衡技術(shù),對(duì)外提供服務(wù)的同時(shí)并提升優(yōu)化負(fù)載能力。業(yè)務(wù)方面:采用機(jī)器學(xué)習(xí)Tensorflow等庫(kù)或框架,讓平臺(tái)的機(jī)器學(xué)習(xí)應(yīng)用多樣化,標(biāo)準(zhǔn)化;引入單元測(cè)試、集成測(cè)試、功能測(cè)試、性能測(cè)試等多維度測(cè)試保證服務(wù)可靠性。部署方面:應(yīng)用支持眾多組件及自定義腳本的Jinkens使持續(xù)集成可視化;Kubernetes高可用部署,多Master集群,進(jìn)一步提高容災(zāi)能力。監(jiān)控方面:應(yīng)用Prometheus相關(guān)技術(shù)對(duì)集群進(jìn)行進(jìn)一步日志及狀態(tài)監(jiān)控;應(yīng)用Alertmanger等技術(shù)對(duì)集群異常進(jìn)行微信,短信郵件等告警;架構(gòu)方面:Service Mesh(istio)技術(shù)應(yīng)用,解耦服務(wù)的重試、監(jiān)控、追蹤,發(fā)現(xiàn)等。除了上述優(yōu)化和后續(xù)工作,對(duì)于多服務(wù)下的分布式事物和服務(wù)治理相關(guān)以及熔斷、限流、降級(jí)等相關(guān)問(wèn)題的應(yīng)用會(huì)在下一期講述,敬請(qǐng)期待。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    46671

    瀏覽量

    237114
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8353

    瀏覽量

    132315
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    328

    瀏覽量

    60474

原文標(biāo)題:微服務(wù)架構(gòu)系列二:密碼強(qiáng)度評(píng)測(cè)的實(shí)現(xiàn)與實(shí)驗(yàn)

文章出處:【微信號(hào):Tencent_TEG,微信公眾號(hào):騰訊技術(shù)工程官方號(hào)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    微服務(wù)架構(gòu)與容器云的關(guān)系與區(qū)別

    微服務(wù)架構(gòu)與容器云密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器云基于容器技術(shù),為微服務(wù)提供構(gòu)建、發(fā)布和運(yùn)行的平臺(tái)。區(qū)別在于,
    的頭像 發(fā)表于 10-21 17:28 ?148次閱讀

    入門(mén)級(jí)攻略:如何容器化部署微服務(wù)?

    第一步理解容器化基礎(chǔ),第二步創(chuàng)建Dockerfile,第三步構(gòu)建推送鏡像,第四步部署微服務(wù),第五步管理微服務(wù)、第六步優(yōu)化更新。容器化部署微服務(wù)是現(xiàn)代軟件開(kāi)發(fā)中的一種高效方法,可提供良好的可移植性、可擴(kuò)展性和管理性。容器化部署
    的頭像 發(fā)表于 10-09 10:08 ?103次閱讀

    NVIDIA NIM微服務(wù)帶來(lái)巨大優(yōu)勢(shì)

    服務(wù)通過(guò)熱門(mén) AI 模型為數(shù)百萬(wàn)開(kāi)發(fā)者帶來(lái)高達(dá) 5 倍的 token 效率提升,使他們能夠立即訪(fǎng)問(wèn)在 NVIDIA DGX Cloud 上運(yùn)行的 NIM 微服務(wù)。
    的頭像 發(fā)表于 08-23 15:20 ?428次閱讀

    采用OpenUSD和NVIDIA NIM微服務(wù)創(chuàng)建精準(zhǔn)品牌視覺(jué)

    全球領(lǐng)先的創(chuàng)意和制作服務(wù)機(jī)構(gòu)率先采用 OpenUSD 和 NVIDIA NIM 微服務(wù)來(lái)創(chuàng)建精準(zhǔn)的品牌視覺(jué)。
    的頭像 發(fā)表于 08-01 14:33 ?378次閱讀

    全新 NVIDIA NeMo Retriever微服務(wù)大幅提升LLM的準(zhǔn)確性和吞吐量

    企業(yè)能夠通過(guò)提供檢索增強(qiáng)生成功能的生產(chǎn)就緒型 NVIDIA NIM 推理微服務(wù),充分挖掘業(yè)務(wù)數(shù)據(jù)的價(jià)值。這些微服務(wù)現(xiàn)已集成到 Cohesity、DataStax、NetApp 和 Snowflake 平臺(tái)中。
    的頭像 發(fā)表于 07-26 11:13 ?768次閱讀
    全新 NVIDIA NeMo Retriever<b class='flag-5'>微服務(wù)</b>大幅提升LLM的準(zhǔn)確性和吞吐量

    名單公布!【書(shū)籍評(píng)測(cè)活動(dòng)NO.35】如何用「時(shí)間序列與機(jī)器學(xué)習(xí)」解鎖未來(lái)?

    ,視為放棄本次試用評(píng)測(cè)資格! 在人工智能領(lǐng)域,大語(yǔ)言模型(Large Language Models,LLM)特指那些具有大量參數(shù)、需要巨大計(jì)算資源來(lái)訓(xùn)練和運(yùn)行的深度學(xué)習(xí)模型。 近年來(lái),隨著計(jì)算能力
    發(fā)表于 06-25 15:00

    【算能RADXA微服務(wù)器試用體驗(yàn)】Radxa Fogwise 1684X Mini 規(guī)格

    通過(guò)網(wǎng)絡(luò)可以了解到,算能RADXA微服務(wù)器的具體規(guī)格: 處理器:BM1684X 算力:高達(dá)32Tops INT8峰值算力 內(nèi)存:16GB LPDDR4X 內(nèi)存 存儲(chǔ):64GB eMMC 編程框架
    發(fā)表于 02-28 11:21

    通過(guò)Python腳本實(shí)現(xiàn)WIFI密碼的自動(dòng)猜解

    本文將記錄學(xué)習(xí)下如何通過(guò) Python 腳本實(shí)現(xiàn) WIFI 密碼的自動(dòng)猜解。
    的頭像 發(fā)表于 01-25 10:46 ?3243次閱讀
    通過(guò)Python腳本<b class='flag-5'>實(shí)現(xiàn)</b>WIFI<b class='flag-5'>密碼</b>的自動(dòng)猜解

    Java微服務(wù)隨機(jī)掉線(xiàn)排查過(guò)程簡(jiǎn)析

    我們的業(yè)務(wù)共使用 11 臺(tái)(阿里云)服務(wù)器,使用 SpringcloudAlibaba 構(gòu)建微服務(wù)集群, 共計(jì) 60 個(gè)微服務(wù), 全部注冊(cè)在同一個(gè) Nacos 集群。
    的頭像 發(fā)表于 01-13 17:41 ?889次閱讀
    Java<b class='flag-5'>微服務(wù)</b>隨機(jī)掉線(xiàn)排查過(guò)程簡(jiǎn)析

    超微gpu服務(wù)評(píng)測(cè)

    微GPU服務(wù)器進(jìn)行評(píng)測(cè)。 一、超微GPU服務(wù)器概述 超微GPU服務(wù)器是一種基于超微服務(wù)器平臺(tái)與GPU技術(shù)相結(jié)合的高性能計(jì)算設(shè)備。它采用了超微
    的頭像 發(fā)表于 01-10 10:37 ?1220次閱讀

    游戲公司不使用微服務(wù)架構(gòu)的原因

    微服務(wù)基本只有 request/response 的模式。做不了 streaming?微服務(wù)通常要求應(yīng)用是無(wú)狀態(tài)的才能做到水平擴(kuò)展。streaming 本身就是加入了狀態(tài)
    的頭像 發(fā)表于 12-29 11:18 ?401次閱讀

    如何構(gòu)建彈性、高可用的微服務(wù)?

    基于微服務(wù)的應(yīng)用程序可實(shí)現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計(jì)劃,對(duì)于開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),這種架構(gòu)十分重要。那么,如何來(lái)構(gòu)建彈性、高可用的微服務(wù)呢?RedisEnterprise給出了一個(gè)完美的方案。文況速覽
    的頭像 發(fā)表于 11-26 08:06 ?440次閱讀
    如何構(gòu)建彈性、高可用的<b class='flag-5'>微服務(wù)</b>?

    設(shè)計(jì)微服務(wù)架構(gòu)的原則

    微服務(wù)是一種軟件架構(gòu)策略,有利于改善整體性能和可擴(kuò)展性。你可能會(huì)想,我的團(tuán)隊(duì)需不需要采用微服務(wù),設(shè)計(jì)微服務(wù)架構(gòu)有哪些原則?本文會(huì)給你一些靈感。文章速覽:微服務(wù)設(shè)計(jì)的要素
    的頭像 發(fā)表于 11-26 08:05 ?538次閱讀
    設(shè)計(jì)<b class='flag-5'>微服務(wù)</b>架構(gòu)的原則

    docker微服務(wù)架構(gòu)實(shí)戰(zhàn)

    隨著云計(jì)算和容器化技術(shù)的快速發(fā)展,微服務(wù)架構(gòu)在軟件開(kāi)發(fā)領(lǐng)域中變得越來(lái)越流行。微服務(wù)架構(gòu)將一個(gè)大型的軟件應(yīng)用拆分成多個(gè)小型的、獨(dú)立部署的服務(wù),每個(gè)服務(wù)負(fù)責(zé)獨(dú)立的業(yè)務(wù)功能。其中,Docke
    的頭像 發(fā)表于 11-23 09:26 ?618次閱讀

    springcloud微服務(wù)架構(gòu)

    和可擴(kuò)展的微服務(wù)應(yīng)用。 微服務(wù)架構(gòu)通過(guò)將一個(gè)大型應(yīng)用拆分成一系列小型的、獨(dú)立可部署的服務(wù)來(lái)提供解決方案。每個(gè)服務(wù)都有自己的數(shù)據(jù)存儲(chǔ)、業(yè)務(wù)邏輯和界面。這種架構(gòu)能夠使開(kāi)發(fā)人員更加關(guān)注
    的頭像 發(fā)表于 11-23 09:24 ?1168次閱讀