国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

大白話聊聊微服務——人人都能看懂的演進過程

開發 架構
那么,什么是微服務呢?你不一定知道微服務,但是你一定知道麥某勞,而且知道麥某勞有個甜品站。你可能會問,甜品站和微服務有什么關聯呢?

 [[341109]]

本文轉載自微信公眾號「SH的全棧筆記」,作者leonhlh 。轉載本文請聯系SH的全棧筆記公眾號。

這篇博客的本意是希望看到這篇文章的讀者能夠很輕松的理解我想表達的意思。但程序向的分享經常會不經意間就貼上了代碼,很可能就會讓人看的很懵。而且我認為分享一個東西,只有對方真正明白了其中的邏輯,才是有意義的分享。所以接下來我會嘗試用大家都能理解的語言來聊一聊”微服務“。

【寫在前面】

那么,什么是微服務呢?你不一定知道微服務,但是你一定知道麥某勞,而且知道麥某勞有個甜品站。你可能會問,甜品站和微服務有什么關聯呢?

讓我們先假設不把甜品站獨立出來,而是普通的麥某勞店。經營一段時間你會發現,這個地方雖然人流量很大,也有顧客,但是顧客的需求80-90%都集中在甜品,導致甜品供不應求,而其余的菜品則沒多少人購買。但是把這個店關了嗎?那也不行,始終是有流量的。

所以綜合考慮下來,方案就是把甜品這個“模塊”從整個店中獨立出來,單獨對外提供服務。這樣既能保住流量,也能避免浪費。

微服務也是一樣的,比如電商的服務,假設里面耦合了商品、庫存、訂單、用戶的服務,但是訂單這個模塊可能會訪問的特別頻繁,而用戶和商品被訪問的頻率沒有那么高,如果為了同時給更多用戶提供服務,而再部署一個包含了商品、庫存、訂單和用戶的服務,有兩個模塊的資源其實沒有被充分利用到。

跟甜品站的思路是一樣的,如果把商品、庫存、訂單和用戶分成四個服務模塊,每個服務只負責處理的自己的事情,就像甜品站只賣甜點一樣,如果訂單的訪問量大, 那也只需要再部署一個訂單的模塊,而不會造成資源利用不充分、耦合性強的情況。

最開始的“整家麥某勞”店對應的概念就是單體應用,后面獨立出的“甜品站”就是從單體應用中抽離出的“微服務”。不知道什么是單體應用和微服務是什么沒關系,不知道單體應用為什么、以及如何轉變成微服務的也沒關系,讓我們通過一個故事來完整的理解這個概念。

假設正在閱讀這篇文章的你,擁有一家飯店。

0.【夢開始的地方】

你盤下了一個店面想賣炸雞和甜品,于是你簡單的把店裝修了一下,購置了相關的設備,然后雇了廚師、服務員等相關的工作人員,就開始掛上招牌對外營業了,

0.1 店面

就是我們平常去使用的各種C端產品,如果你沒有一個概念,那么可以直接把它理解成釘釘、微信這樣一個我們日常都在用的APP就好,它們就是C端產品。

店的招牌(比如肯打雞和麥某勞)就可以理解為我們平常APP里所能看到的,所能使用的東西,我們叫它客戶端。

整個實體店就可以理解為開篇提到的“單體應用”,為客戶提供實際的服務。

0.2 裝修和購置設備

對應的是我們的開發團隊,從產品經理接到客戶的需求開始,根據需求整理好原型圖,不停的跟客戶溝通交流細節,反復的修改原型圖,最終定下來的需求。

然后我們的UI同學介入,根據原型圖出UI圖,并最終確定下來。然后就是前端和后端的開發同學根據原型圖中的邏輯,和UI圖的樣式細節開始迭代開發,并最終將產品上線。

0.3 炸雞和甜品

有了前面麥某勞的例子,這個應該很好理解。炸雞和甜品其實就是作為一個C端產品,提供給用戶的不同種類的服務。

例如我們日常在用的釘釘,可以用來聊天、開視頻會議和預定會議室。

1.【漸入佳境】

隨著你不斷的推出新的菜品,以及分量足,性價比高,朋友之間口口相傳—“那家蒼蠅館子還可以”,也留住了大量回頭客。慢慢的,來店里吃飯的客人越來越多,后廚漸漸忙不過來了。很多慕名而來的客人由于等了太長時間仍然沒有上菜,更有甚者連座位沒有。客人對美食的渴望轉化成了失望和憤怒,于是反手就是一個超級差評。

1.1 不斷的推出新的菜品

代表我們的產品迭代,不斷的推出新功能,以此來為用戶提供更多元化的服務,吸引更多的用戶來使用我們的產品。例如疫情期間,釘釘在在線學習這塊推出了很多新的功能。

1.2 朋友間的口口相傳

則代表的是部分用戶開始代替廣告這種傳播途徑,開始了社群內的用戶自傳播。這是很多產品都想達到的目的,把產品的潛力挖掘到極致,讓產品說話,為自己代言。

比起漫天飛的廣告,這種來自朋友們的推薦,更加受到用戶的信任。

1.3 關于差評

“后廚忙不過來”是指用戶數量上漲,日常的請求數就會隨之增多,而單個服務實例在某個時間單位內能夠處理請求的數量是有限的(也就是后廚人數有限,就那么幾個廚師,能做的菜數量也有限),這也直接導致了部分用戶請求十分緩慢,甚至直接無法訪問(后廚實在忙不過來了,有些客人就要等很久)。而用戶對于產品的耐心是十分有限的,出現這種情況會導致部分甚至大量用戶流失。

2.【蜂擁而至】

隨著差評越來越多,你漸漸坐不住了。你覺得再這么下去你可能就要涼了,于是你想,廚師不夠用那就多招幾個嘛,于是雷厲風行的你貼出了招聘啟事,然后順利的招到了人。

人的問題解決了,那還有座位的問題。之前你沒有想到會有這么人多來光顧,所以店里面的桌子和椅子擺的很寬松,但是實際上重新規劃一下,還是能夠多放好幾張桌子的,這樣一來就能夠同時容納更多人在店里用餐。

2.1 多招人

我們每個服務所能使用的資源是有限制的,例如你可以給你的JVM設置最大堆內存為1G,也可以加到2G。啊?什么是JVM?不重要,讓我們重新理解前面一句話。2個廚師一分鐘可以做5個菜,你轉手再招2個廚師,那一分鐘就可以做10個菜,這對應的概念是擴容,也就是增加服務器能夠支配的運行資源,服務器就能夠處理更多的請求,服務更多的用戶。

這里的擴容是針對CPU和內存

2.2 重新規劃桌椅擺放

剛開始開發時沒有到用戶會有這么大體量,所以大部分的API沒有做什么優化,整個服務端應用的框架也搭建的很隨意,因為上線的時間很緊,這可能會造成應用在維護性、擴展性和性能上的弊端。

通俗點來說就是,當時為了店里擺放好看,追求ins風,桌椅之間擺的太寬了,但是后來人多了,外面一堆人排隊,店里面卻熙熙攘攘,但是實際上你卻是已經“坐滿了”。

這種情況十分不利于后續的迭代的。所以對應到開發中的概念就是,對代碼和框架進行重構,優化算法,讓API盡量少占用系統資源,降低響應延遲,從而提高整個服務的服務能力。這樣一來,服務實例就能扛住更多的請求。

不過有的時候,降低延遲和少占用系統資源不可兼得。如果對響應速度要求很高,就可能會多占一些系統資源,用空間來換時間。

就像你把店里重新擺放了,店里容納的人多了(占用資源多了),這個時候服務的響應時間可能就會變慢(上菜就會變慢),那么用空間換時間是什么呢?就是你會提前準備很多食材、甚至是半成品的食材堆在那里,這樣以來,只需要花平時一半的時間就可以把菜做好(比如提前準備好熟油,各種輔料等等)。

3.【山窮水盡】

雖然多招了幾個廚師,也重新規劃了店里桌椅擺放,但是隨著時間的推移,每天來店里吃飯的人還是越來越多,廚師已經不能再招了,已經沒有那么多灶臺了。之前的“差評熱潮”又開始在店里上演。你想著,雖然店里火爆是好事,但是每天有那么多的人來店里看到沒有位置就走了,這不是有錢賺不了嗎?

而且很多目標用戶在第三方網站上看到了這些差評,將會直接影響到客戶是否愿意來店里,這會使你喪失大量的隱藏客戶。于是你開始了轟轟烈烈的開分店業務,在附近又開了一家店。還是一樣的配方,就是這個味~

3.1 開分店

開分店對應的概念是多實體部署,就是把一個同樣的服務再部署一個,這樣一來來自用戶的流量就從一個服務扛變成了兩個服務扛。

分店就可以把原本要把總店塞爆的流量給接過去,緩解了壓力。

4.【柳暗花明】

隨著時間的推移,分店越開越多,生意自然也是蒸蒸日上。但是你作為一個能夠不只看表面的布局者,你發現了實際上的情況并沒有表現出來的那么好。

有些區域人流量大,而有些區域雖然人流量大,但是對店感興趣的人不多,甚至分店周圍根本沒有什么人。而有些地方的分店則異常火爆。雖然熱門的店賺的錢能夠抵上冷門的店的虧損,但是追求完美的你認為這種情況必須要得到改善,因為這始終是存在對資源的浪費。

所以經過一番調研,你決定在中心區域開一個顧客中心,所有想來餐廳的人都統一的來顧客中心,由顧客中心的人根據各個分店的火爆情況來分批次的把顧客送過去。這樣一來,也就解決了有些店火爆,而有些店冷清的情況了。

4.1 人流量分布不均勻

這種情況主要發生在服務端運行了多個實例,那也就對于多個IP地址,而要調用哪個是由客戶端來決定的,如果設計的不夠好,就會出現某些時候某些實例成為熱點實例,甚至出現“差評”實例這種情況,而其余實例則沒有承擔多少來自用戶的流量。

說人話就是,我要是顧客,我去哪家店不是看我心情嗎?我想去哪家店就去哪家店。當然實際情況沒有這么夸張,客戶端會有自己的策略。

而且同時維護如此多的服務端地址也是很麻煩的一件事,如果服務端此時又增加了實例,客戶端則需要同步的更新。但是如果用戶體量大的話,因為這種問題頻繁的發包讓用戶更新,會對用戶造成不好的體驗。

4.2 顧客中心

這個比喻有些夸張,現實中有人這么干可能早破產了。“顧客中心”就是我們說的“網關”。有了網關,客戶端就不用關心服務有多少個實例,也不用去維護所有的HOST,所有的請求直接從網關走,由網關來決定將當前請求分發到哪個實例。

“客戶中心分批次根據情況送顧客”其實對應到的概念是負載均衡,什么意思呢?就是要讓客戶端產生的流量對所有實例雨露均沾。其實現的方式也有很多,大致分為隨機、輪詢、一致性哈希、加權等等。

而網關除了負載均衡,還有很多其他的特性。例如,動態的路由、限流、認證、日志、熔斷、可編程插件配置等等。

5. 【微服務的關注點】

看完了這個故事,你可能會覺得沒有什么,但是實際上你已經了解了一個應用從單體應用架構轉為微服務的架構生命周期以及過程。這其中也包括為什么需要轉為微服務架構,和轉到微服務架構的好處在哪里。如果你都沒有意識到自己理解了這個概念,可以再閱讀一遍上面的小故事。

其實實際上的微服務要比上面故事所呈現出來的復雜很多,微服務中需要關注的點要比傳統的單體應用多的多。在微服務中我們需要關注服務的發現、負載均衡,統一的配置管理,微服務集群的自愈和彈性伸縮,服務的調度和發布,微服務中的調用鏈監控,包括Metrics監控,日志監控,服務的安全考慮,API的統一管理等等。

首先把強耦合在一起的代碼有條理的拆分出來就是一件很復雜的事情,微服務的劃分粒度也是一個很大的挑戰。例如很復雜的系統,一個用戶服務的代碼可能有好幾千上萬行,但是它仍然是一個微服務,沒有再拆分用戶服務A和用戶服務B。而有的服務可能代碼量只有幾百行,這需要根據實際的業務情況來選擇劃分的粒度。

除了拆分服務的粒度,微服務本身還有很多組件。大家在故事中只了解了網關。其實還有很多組件。

服務發布就涉及到Jenkins,把我們的應用打包成Docker Image,然后通過自動化工具發布到對應的環境中。我們的應用跑在Docker中,那么我們就需要有一個容器編排工具來管理這么多容器。例如我們現在使用的就是Docker Swarm,跟業界現在流行的Kubernetes一樣,有很多人在使用。

有了容器編排工具,就有工具的可視化界面,Docker Swarm對應的Portainer,和Kubernetes對應的Rancher。除此之外我們還要使用Gitlab來做我們的代碼版本管理工具,MySQL和MongoDB作為數據存儲的解決方案。Redis作為緩存的解決方案。同時需要有一個地方來統一管理所有服務的配置,我們叫微服務的配置中心。

除此之外,服務之間要相互調用就必須要知道對方的地址,就需要一個注冊中心,來保管所有服務的地址,并及時的更新服務的狀態。

還有很多細節,例如如何去構建一個Jenkins的構建流水線,如果實現一套CI/CD的流程,如果使用ELK去做統一的日志收集,如果在集群內實現SSO啊等等,由于篇幅原因就不在此一一贅述了。

 

責任編輯:武曉燕 來源: SH的全棧筆記
相關推薦

2018-11-19 08:34:22

Hadoop架構HDFS

2021-01-22 09:39:54

人工智能人工智能技術

2021-09-27 13:50:13

Python裝飾器函數

2022-07-04 08:31:42

GitOpsGit基礎設施

2019-12-27 09:47:05

大數據TomcatWeb

2020-01-21 10:16:15

Kubernetes教程容器

2020-12-01 09:03:22

分庫分表MySQL

2022-08-16 18:52:20

分布式容錯架構

2022-12-30 17:52:44

分布式容錯架構

2024-12-09 08:18:33

2018-11-21 09:40:57

熔斷實踐AOP

2019-10-08 10:10:52

中臺 IT后臺

2020-02-04 15:00:25

大白話認識JVM

2018-11-21 15:40:08

HTTP協議前端

2020-09-28 14:25:39

HTTPS加密算法

2023-12-26 18:22:05

RocketMQ延遲消息

2020-06-22 08:07:48

Spring依賴場景

2019-09-05 11:14:12

監控系統拓撲圖

2023-01-26 00:22:01

分布式架構大文件

2016-10-24 14:42:19

云計算公有云私有云
點贊
收藏

51CTO技術棧公眾號

欧美亚洲国产成人| 日韩精品视频久久| 涩爱av色老久久精品偷偷鲁| 欧洲中文字幕精品| 在线观看国产一级片| 成人免费福利片| 在线视频欧美一区| 欧美综合二区| 久久久久久久久久久一区| 五月婷婷六月综合| 青青久久av北条麻妃黑人| 麻豆国产精品| 久久不射电影网| 日日夜夜亚洲| 日韩中文av在线| 日本免费成人| 久久精品最新地址| 国产精品成人**免费视频| 中文字幕在线看视频国产欧美| 国产高清中文字幕在线| 亚洲爱爱爱爱爱| 久久久久黄久久免费漫画| 日韩欧美在线网站| 国产在线拍揄自揄拍视频| 欧美tickling网站挠脚心| 毛片在线网址| 亚洲日韩欧美视频| 不卡亚洲精品| 成人97在线观看视频| 欧洲一区在线| 97在线观看视频国产| 看全色黄大色大片免费久久久| 国内精品久久影院| 啪啪亚洲精品| http;//www.99re视频| 精品91久久久久| 欧美高清性xxxxhdvideosex| 美女国产一区二区三区| 久久99中文字幕| 久久精品综合网| 大陆一级毛片| 色呦呦国产精品| h片在线免费| 夜夜嗨av色一区二区不卡| 国产亚洲精aa在线看| 国产精品久久久久7777婷婷| 欧美成人高清| 国产日本欧美在线| 国产欧美va欧美不卡在线| 中文字幕视频在线免费| 这里只有精品99re| 欧美综合社区国产| 国产不卡视频在线| 久久久国产精品一区二区中文| 久久福利一区二区| 亚洲人成网站色在线观看| 最近高清中文在线字幕在线观看| 亚洲欧美日韩成人| 国产欧美一区| 日韩久久不卡| 国产欧美日韩精品一区| 国产三级视频在线看| 亚洲丝袜在线视频| 欧美日韩一区二区综合| 一区二区不卡在线| 亚洲精品国产品国语在线app| 国产精品四虎| 日韩专区在线观看| 欧美激情视频一区二区三区免费| 8x8x华人在线| 一区二区三区波多野结衣在线观看| 最新黄网在线观看| 97成人在线视频| 日本欧美一区二区| 日日噜噜噜夜夜爽爽狠狠| 精品国产免费一区二区三区四区 | 国产乱码精品1区2区3区| xx免费视频| 日韩精品极品视频免费观看| 九九精品在线| 日韩视频在线免费播放| 欧美日韩在线视频首页| 成人51免费| 亚洲精品国产精品国自产观看| 亚洲综合免费观看高清完整版在线 | 最新成人av网站| 国产性xxxx18免费观看视频| 欧美日本在线看| 婷婷综合一区| 农民人伦一区二区三区| 欧美精品1区2区3区| 日韩欧美高清| 亚洲成人av免费看| 亚洲美女免费精品视频在线观看| 午夜精品久久久久久久四虎美女版| 动漫av网站免费观看| 亚洲成人久久一区| 激情综合亚洲| 午夜成在线www| 国模吧一区二区三区| 粉嫩一区二区三区在线看 | 亚洲国产精品久久人人爱蜜臀| 国产在线精彩视频| 99影视tv| 精品动漫一区二区| 色天下一区二区三区| 国产 福利 在线| 亚洲少妇中文在线| 免费成人性网站| 天堂中文а√在线| 成人亚洲欧美一区二区三区| 国产精品久久久久7777按摩| 97人人做人人爽香蕉精品| 一区二区三区四区视频在线| 欧美日韩日日夜夜| 午夜电影亚洲| 在线观看h网址| 日韩美女中文字幕| 亚洲乱码国产乱码精品精可以看| 日韩影片在线观看| 亚洲国产精品毛片av不卡在线| 国产亚洲欧洲高清| 黄色小说综合网站| www.youjizz.com在线| 日韩色妇久久av| 亚洲国产精久久久久久| 蜜桃av一区二区在线观看| v片在线观看| 欧洲一区二区日韩在线视频观看免费 | 亚洲综合免费观看高清完整版| 国产精品x8x8一区二区| 玩弄japan白嫩少妇hd| 久久精品国产99国产精品澳门| 国产美女一区二区三区| 超级白嫩亚洲国产第一| 自拍偷拍99| 在线精品视频视频中文字幕| 不卡的av电影| 试看120秒一区二区三区| 一本色道久久亚洲综合精品蜜桃| 欧美精品18videos性欧| 一区二区国产视频| 欧美日韩三级| 日本动漫理论片在线观看网站| 日韩免费电影一区二区三区| 亚洲欧洲一区二区三区久久| www.亚洲人| 久久九九热re6这里有精品 | 成人欧美一区二区三区白人| 一个色免费成人影院| 波多野结衣av在线| 黄色91av| 亚洲深夜福利在线| 国产精品网友自拍| 青青草97国产精品麻豆| 国产高清免费在线播放| 亚洲精品一卡二卡三卡四卡| 在线观看日韩av| 亚洲女与黑人做爰| 精品999成人| 亚洲播播91| jizzjizzji欧美| 国产精品久久久久久免费观看 | www.av在线| 中国一区二区三区| 欧美黄色免费网站| 91黄色免费版| 国产成人综合视频| 深爱激情久久| 性网站在线观看| 成熟老妇女视频| 91久久嫩草影院一区二区| 欧美一级理论性理论a| 成人av网站免费| 欧美国产小视频| 欧美gv在线| 国产91福利| 日韩福利视频| 97精品国产97久久久久久春色| 日本韩国一区二区| 成人黄色小视频在线观看| 精品久久久久中文字幕小说 | 欧美人妖巨大在线| 99re热这里只有精品视频| 五月天激情综合网| 成人美女视频| 三级网站在线| 精品一区二区三区无码视频| 国产一区二区在线免费视频| 亚洲欧美制服第一页| 亚洲超碰97人人做人人爱| 久草精品在线观看| 天天精品视频| 欧美黄页免费| 一级毛片视频在线| 成人在线播放网站| 一本一道久久久a久久久精品91 | 欧美影视一区在线| 国产精品麻豆久久久| 日本免费新一区视频|