成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你讀懂“熱壞了”的微服務(wù)

云計(jì)算
微服務(wù)之所以被炒的如此之熱,主要是因?yàn)槿萜鞯某霈F(xiàn),PaaS服務(wù)提供商,不斷的鼓吹微服務(wù)帶來的好處,以此來吸引眾多中小開發(fā)者使用其服務(wù)。像go語(yǔ)言一樣,中國(guó)似乎又領(lǐng)先世界了。年度總結(jié),看完這個(gè)你應(yīng)該知道如何回答別人的問題了。

年度總結(jié),看完這個(gè)你應(yīng)該知道如何回答別人的問題了。

 

一、微服務(wù)的定義

實(shí)際上沒有太明確的定義,我覺得很多互聯(lián)網(wǎng)公司已經(jīng)是微服務(wù)了,Martin Fowler的定義也比較模糊,簡(jiǎn)單的幾個(gè)特征,可以總結(jié)為:

  • 專注做一件事;
  • 獨(dú)立的進(jìn)程;
  • 獨(dú)立的部署;
  • 小;
  • 輕量級(jí)的通信機(jī)制。

如果聯(lián)想一下相關(guān)詞匯,又會(huì)想到服務(wù)化、SOA,在我看來,根本不需要糾結(jié)這些概念性的東西,就好比SOA的時(shí)代,也不是所有的應(yīng)用都采用ws,而微服務(wù),代碼行數(shù),通信機(jī)制這些也未必能滿足定義。最重要的是適合業(yè)務(wù)場(chǎng)景,不必完全按照微服務(wù)的定義來做。每個(gè)公司都有自己的業(yè)務(wù)特色,適合的一定是個(gè)性的。因?yàn)榧軜?gòu)不只是技術(shù)因素決定的,跟業(yè)務(wù)、公司文化、組織結(jié)構(gòu)、人員水平都息息相關(guān)。例如facebook一直奉行的單體應(yīng)用,據(jù)說一個(gè)應(yīng)用有千萬(wàn)行代碼級(jí)別,同時(shí)發(fā)布,做的也非常棒,也能很好的持續(xù)交付,那是因?yàn)樯厦嫖艺f的那些因素都能滿足,如果換一個(gè)公司,未必能做的很好。當(dāng)然,對(duì)于我們來說,我們要選的是那條最好走的路。

二、微服務(wù)帶來的好處

實(shí)際上所說的所有微服務(wù)的好處都是來自于和單體應(yīng)用的對(duì)比。

組織結(jié)構(gòu)。組織結(jié)構(gòu)和架構(gòu)是映射關(guān)系,如果你想知道某個(gè)公司的架構(gòu)是怎么做的,完全可以根據(jù)組織結(jié)構(gòu)推導(dǎo)出來。當(dāng)一個(gè)團(tuán)隊(duì)的人數(shù)太多的時(shí)候,溝通效率急劇下降,團(tuán)隊(duì)成員的主人翁精神也降低一個(gè)層次。這和敏捷開發(fā)是一致的。

功能復(fù)用。抽象通用的部分,減少重復(fù)代碼,本身就是效率的提升。另一點(diǎn),因?yàn)榉?wù)被切分為足夠小的粒度,容易變更。假設(shè)是一個(gè)大的應(yīng)用,要進(jìn)行重構(gòu),相對(duì)于微服務(wù)來說,要復(fù)雜的多,因?yàn)槟悴豢赡苤蛔鲋貥?gòu),而不去接新的需求。如果切分的粒度夠小,完全可以在接口不變的情況下,神不知鬼不覺的重構(gòu)。

容錯(cuò)。服務(wù)運(yùn)行在不同的進(jìn)程中,無(wú)疑隔離性更好,某一個(gè)點(diǎn)導(dǎo)致的故障影響面更小。

、微服務(wù)帶來的災(zāi)難

最重要的是適合業(yè)務(wù)場(chǎng)景,不必非得采用微服務(wù),微服務(wù)并不是一種炫酷的技術(shù)或者架構(gòu)思想,同時(shí)采用微服務(wù)會(huì)帶來很多問題:

依賴關(guān)系。原來一個(gè)應(yīng)用可能會(huì)被拆分成幾個(gè)或者幾十個(gè)應(yīng)用,服務(wù)數(shù)量爆炸式增長(zhǎng),導(dǎo)致依賴關(guān)系復(fù)雜,除非有一套非常好的服務(wù)注冊(cè)發(fā)現(xiàn)機(jī)制,漂亮的依賴關(guān)系統(tǒng)計(jì)圖,否則在服務(wù)數(shù)量超過100的時(shí)候,無(wú)論哪個(gè)架構(gòu)師都搞不明白他們之間到底是什么關(guān)系。同時(shí)對(duì)開發(fā)人員遵守標(biāo)準(zhǔn)、規(guī)范的要求也空前提升。

性能。原本進(jìn)程內(nèi)的調(diào)用關(guān)系變成了網(wǎng)絡(luò)調(diào)用,一次rpc變成了幾次或者幾十次rpc,同等條件下性能損失嚴(yán)重。(如果采用http+json,比netty+kryo、protobuf、thrift又會(huì)下降幾乎一半性能,包括響應(yīng)時(shí)間和吞吐量)

一致性。原本本地事務(wù)有可能變成了分布式事務(wù),這個(gè)非常考驗(yàn)服務(wù)切分的規(guī)則,考驗(yàn)架構(gòu)師對(duì)業(yè)務(wù)的理解程度。就算采用最終一致性,也要在各個(gè)服務(wù)中做好容錯(cuò)機(jī)制,假設(shè)調(diào)用失敗如何處理,如果重試,重試幾次失敗怎么辦?調(diào)用成功,返回ack失敗時(shí),怎么保證生產(chǎn)者的冪等性。

復(fù)雜度。服務(wù)數(shù)量多,依賴關(guān)系多,給開發(fā)、測(cè)試都帶來了更大的挑戰(zhàn)。架構(gòu)師也需要定義一些規(guī)則,服務(wù)分層。例如服務(wù)分為原子服務(wù)、組合服務(wù)、流程服務(wù),下層是不能調(diào)用上層的,如果允許調(diào)用,會(huì)導(dǎo)致循環(huán)依賴的問題。同一份數(shù)據(jù)可能上上下下調(diào)用了好多次。有可能只需要調(diào)用一次原子服務(wù),因?yàn)樯蠈拥幕靵y,下來可能變成了幾次。

四、如何做好微服務(wù)

要做好,就要先做好準(zhǔn)備。

提升架構(gòu)能力非常重要的一個(gè)手段就是平臺(tái)化驅(qū)動(dòng)。通過抽離通用部分,用最核心的人去研發(fā),做到最穩(wěn)定。如果非要說google的架構(gòu)能力遠(yuǎn)遠(yuǎn)領(lǐng)先于百度,那并不是百度的業(yè)務(wù)開發(fā)人員比google的差很多,而是google平臺(tái)化的架構(gòu)遠(yuǎn)遠(yuǎn)強(qiáng)于百度。例如容器、分布式數(shù)據(jù)庫(kù)。

So,要做好微服務(wù),先要解決的是相關(guān)的框架、中間件、組件、通用服務(wù)。在這些都準(zhǔn)備好的了情況下,業(yè)務(wù)開發(fā)人員根本不需要關(guān)心太多。

舉幾個(gè)例子,

  • 要解決依賴關(guān)系問題,就要有一個(gè)服務(wù)發(fā)現(xiàn)注冊(cè)中心。
  • 要解決性能問題,讀的問題可以通過緩存來補(bǔ)償。可以采用并行、異步、非阻塞等方式補(bǔ)償性能,當(dāng)然這些都可以封裝到通用的rpc框架里面。
  • 要解決一致性問題,就要有一個(gè)通用的事務(wù)處理平臺(tái)。如果采用最終一致性,就把重試策略封裝到框架。
  • 要解決復(fù)雜度問題,就要定義一系列標(biāo)準(zhǔn)、規(guī)范,通過工具來檢測(cè)問題。建立一整套devops平臺(tái),自動(dòng)化測(cè)試平臺(tái)。通過調(diào)用鏈分析,迅速定位問題。

五、大師寄語(yǔ)

ThoughtWorks首席科學(xué)家MartinFowler 在Monolith First中寫道:

i. Almost all the successful microservicestories have started with a monolith that got too big and was broken up

ii.Almost all the cases where I've heard ofa system that was built as a microservice system from scratch, it has ended upin serious trouble.

所有的成功的微服務(wù)的故事都是以單體應(yīng)用太大開始的,逐步的拆分。我聽到的所有的一個(gè)從無(wú)到有被創(chuàng)建為微服務(wù)的系統(tǒng),他們都以遇到很大麻煩而告終。

六、總結(jié)

總結(jié)一下,做微服務(wù)之前,需要審視一下,目前的業(yè)務(wù)場(chǎng)景、技術(shù)實(shí)力,是不是需要把應(yīng)用拆分到“微”的粒度。優(yōu)雅的架構(gòu)總是和實(shí)用的架構(gòu)有距離的。在沒有足夠的能力之前,應(yīng)該盡量選擇更實(shí)用的架構(gòu)。

微服務(wù)之所以被炒的如此之熱,主要是因?yàn)槿萜鞯某霈F(xiàn),PaaS服務(wù)提供商,不斷的鼓吹微服務(wù)帶來的好處,以此來吸引眾多中小開發(fā)者使用其服務(wù)。像go語(yǔ)言一樣,中國(guó)似乎又領(lǐng)先世界了。

如果你的體量還不大,首先應(yīng)該解決的是搭建好一套絕對(duì)穩(wěn)定的平臺(tái)化服務(wù),待體量逐漸長(zhǎng)大,再去根據(jù)實(shí)際需要進(jìn)行不斷發(fā)分裂。團(tuán)隊(duì)也隨之變化。

如果體量足夠大,飽受單體應(yīng)用之苦,也應(yīng)該先建設(shè)平臺(tái)化服務(wù),建設(shè)好之后,先按照大的粒度進(jìn)行拆分,逐步“微”化,否則,可能在你還沒成功之前,已經(jīng)被解雇了。

【本文來源:奔跑中的蝸牛公眾號(hào)】

責(zé)任編輯:Ophira 來源: 奔跑中的蝸牛公眾號(hào)
相關(guān)推薦

2021-05-09 09:06:24

Python批處理命令

2018-04-09 16:35:10

數(shù)據(jù)庫(kù)MySQLInnoDB

2022-02-21 09:44:45

Git開源分布式

2021-06-30 00:20:12

Hangfire.NET平臺(tái)

2023-05-12 08:19:12

Netty程序框架

2019-09-24 14:19:12

PythonC語(yǔ)言文章

2020-02-28 11:29:00

ElasticSear概念類比

2021-07-01 10:01:16

JavaLinkedList集合

2022-12-14 08:03:27

CSS變量前端

2021-05-15 09:18:04

Python進(jìn)程

2021-06-04 09:56:01

JavaScript 前端switch

2021-02-02 18:39:05

JavaScript

2020-11-10 10:48:10

JavaScript屬性對(duì)象

2021-01-29 18:41:16

JavaScript函數(shù)語(yǔ)法

2021-09-27 09:18:30

ListIterato接口方法

2021-02-26 20:01:57

SVG濾鏡元素

2023-09-06 14:57:46

JavaScript編程語(yǔ)言

2021-01-26 23:46:32

JavaScript數(shù)據(jù)結(jié)構(gòu)前端

2023-07-30 15:18:54

JavaScript屬性

2021-05-18 08:30:42

JavaScript 前端JavaScript時(shí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91视频免费黄 | 五月婷婷丁香婷婷 | 网站国产 | a级毛片免费高清视频 | 欧美成年黄网站色视频 | 国产资源在线播放 | 美女久久久久久久久 | 黑人巨大精品欧美一区二区一视频 | 国产精品成人在线播放 | 国产无套一区二区三区久久 | av片免费 | 成人国产精品久久久 | 国产精品欧美一区二区三区 | 色综合久久天天综合网 | 天天碰日日操 | 天天看天天爽 | av av在线| 免费一级片 | 午夜男人的天堂 | 国产乱码一区 | 精品在线一区 | 日韩福利视频 | 影音av| 免费在线黄 | 香蕉久久av | 一级片毛片 | 欧美三级成人理伦 | 99精品一区二区三区 | 欧美日韩中文在线 | 午夜久久久久久久久久一区二区 | 亚洲一区二区国产 | 亚洲精品一区二区三区蜜桃久 | 国产精品有限公司 | 国产精彩视频 | 成人午夜高清 | 中文字幕在线免费观看 | 欧美激情在线精品一区二区三区 | 成人永久免费视频 | 亚洲精品乱码久久久久久9色 | 羞羞视频免费在线观看 | 午夜精品在线 |