999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

微服務(wù)技術(shù)構(gòu)建大規(guī)模web系統(tǒng)的研究

2017-08-24 14:18:29張峰
科技創(chuàng)新與應(yīng)用 2017年22期

張峰

摘 要:微服務(wù)是近兩年流行起來的最優(yōu)秀的web系統(tǒng)架構(gòu)。文章由分析架構(gòu)演變到引出微服務(wù)架構(gòu)的內(nèi)容、優(yōu)點(diǎn)和架構(gòu)設(shè)計(jì)的最佳實(shí)踐等,得出微服務(wù)未來必然有很好的發(fā)展結(jié)論。

關(guān)鍵詞:微服務(wù);軟件架構(gòu);敏捷;Spring Cloud

中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2017)22-0048-02

1 概述

隨著互聯(lián)網(wǎng)越來越深入人們生活,web系統(tǒng)在人們生活中有著舉足輕重的地位。web技術(shù)正以前所未有的速度發(fā)生著巨大變革,服務(wù)端技術(shù)微服務(wù)架構(gòu)+虛擬化已經(jīng)興起。本文從web系統(tǒng)架構(gòu)演變?nèi)胧郑懻撆d起的微服務(wù)技術(shù)和相關(guān)的架構(gòu)及開源項(xiàng)目。討論適合小團(tuán)隊(duì)的微服務(wù)開發(fā)架構(gòu)體系,分析微服務(wù)技術(shù)應(yīng)用系統(tǒng)的趨勢。

2 web系統(tǒng)架構(gòu)演變

web系統(tǒng)最早出現(xiàn)在1980萬維網(wǎng)的發(fā)明者蒂姆·伯納斯-李(Tim Berners-Lee)設(shè)計(jì)的ENQUIRE項(xiàng)目上。從此web技術(shù)經(jīng)歷了幾次改變。從網(wǎng)絡(luò)結(jié)構(gòu)和軟件架構(gòu)上看,web系統(tǒng)架構(gòu)粗略經(jīng)歷了以下階段:

第一階段單機(jī)構(gòu)建模式。最早的軟件開發(fā)基本上是C/S即客戶端服務(wù)器模式。單機(jī)構(gòu)建模式即一臺服務(wù)器承擔(dān)所有訪問請求和數(shù)據(jù)計(jì)算任務(wù)。這通常受單臺服務(wù)器計(jì)算能力和IO瓶頸的制約。但這個階段已經(jīng)形成了應(yīng)用系統(tǒng)和數(shù)據(jù)庫系統(tǒng)兩部分的工作模式,這個模式通常在小規(guī)模企業(yè)及單店規(guī)模適用。

第二階段應(yīng)用與數(shù)據(jù)庫服務(wù)器分離。以O(shè)racle數(shù)據(jù)庫為代表的DBMS系統(tǒng)規(guī)模越來越大,消耗系統(tǒng)資源越來越多。于是應(yīng)用系統(tǒng)和數(shù)據(jù)庫系統(tǒng)分離為各自部署到獨(dú)立的服務(wù)器中。兩臺硬件服務(wù)器之間的網(wǎng)絡(luò)連接要可靠、快速、容錯。這個階段還增加了頁面緩存、頁面片段緩存、數(shù)據(jù)內(nèi)存緩存等在應(yīng)用服務(wù)器和數(shù)據(jù)庫之間。

第三階段應(yīng)用服務(wù)器集群。隨著web系統(tǒng)訪問量逐步增高,應(yīng)用服務(wù)器計(jì)算資源逐步耗盡,只有增加應(yīng)用系統(tǒng)的服務(wù)器才能解決。隨著獨(dú)立計(jì)算資源的擴(kuò)展,他們之間的協(xié)調(diào)帶來了好多問題。Oracle從10g通過CRS開始支持集群。解決了的用戶訪問壓力,但需要做的就是硬件的投入。

第四階段微服務(wù)架構(gòu)與虛擬化。現(xiàn)在以亞馬遜為代表的大量的微服務(wù)架構(gòu)應(yīng)用系統(tǒng)開始呈現(xiàn)高速的發(fā)展趨勢。服務(wù)化架構(gòu)的演進(jìn)也經(jīng)歷了幾個階段:MVC、RPC、SOA,現(xiàn)在到了微服務(wù)。近年來微服務(wù)成為大規(guī)模、高服務(wù)質(zhì)量web系統(tǒng)解決方案之一。

3 微服務(wù)基礎(chǔ)理論和基礎(chǔ)架構(gòu)選型

微服務(wù)一詞來源于一篇著名的博文Microservices,作者是Martin Fowler。是一種軟件設(shè)計(jì)風(fēng)格,每個服務(wù)都獨(dú)立存儲數(shù)據(jù)、獨(dú)立按業(yè)務(wù)功能模塊開發(fā)、測試及部署,系統(tǒng)間通過通信協(xié)議關(guān)聯(lián)起來組成完整的應(yīng)用系統(tǒng)。通常服務(wù)之間的通信協(xié)議采用RESTful API,也是高并發(fā)大型應(yīng)用系統(tǒng)的必然發(fā)展結(jié)果。拆分單體所面臨的問題增加很多,為解決這些問題在微服務(wù)理論框架下引申出非常多的概念,下面以不同角度認(rèn)識微服務(wù)架構(gòu)體系。

首先,微服務(wù)的九大特性[1]。Martion Fowler在Microservices一文中提煉出,這是了解微服務(wù)的最重要內(nèi)容。

服務(wù)組件化:微服務(wù)的對立面就是單體結(jié)構(gòu),將單體拆分后組件化。

按業(yè)務(wù)組織團(tuán)隊(duì):微服務(wù)化后每一個或一個可用域可以是一個團(tuán)隊(duì)開發(fā)。

做“產(chǎn)品”的態(tài)度:軟件工程項(xiàng)目需要反復(fù)調(diào)優(yōu)不斷優(yōu)化以適應(yīng)業(yè)務(wù)彈性的環(huán)境。

智能端點(diǎn)與啞管道(Smart endpoints and dumb pipes):單體的內(nèi)部模塊調(diào)用常用的是函數(shù)調(diào)用和RPC方式,而微服務(wù)是更粗粒度的通信協(xié)議建立關(guān)系。

去中心化治理:微服務(wù)采用分散的管理方式,每個微服務(wù)團(tuán)隊(duì)內(nèi)部有充分自由自組織技術(shù)棧。

去中心化管理數(shù)據(jù):數(shù)據(jù)庫可以分散到各個微服務(wù)中去,同時被透明化不可以被訪問。所以徹底的微服務(wù)化所有的信息傳遞只有微服務(wù)接口一個通道。

基礎(chǔ)設(shè)施自動化:當(dāng)服務(wù)數(shù)量快速增加軟件開發(fā)要保持快速迭代必須要做到自動化,另外近兩年DevOps在大陸也逐漸獲得廣泛認(rèn)可,這是微服務(wù)化重要保證。

容錯設(shè)計(jì):服務(wù)間調(diào)用允許出錯,在此方面必須表現(xiàn)出彈性。

演進(jìn)式設(shè)計(jì):沒有完美的程序,在軟件的生命周期中把這當(dāng)成必然并支持不斷演進(jìn)式設(shè)計(jì)開發(fā),不斷完善而非一次完成。

其次,微服務(wù)架構(gòu)技術(shù)選型。當(dāng)前比較流行的微服務(wù)架構(gòu)技術(shù)體系有三種:Dubbo;Spring Cloud:Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具[2](例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線);Netflix的Karyon/Ribbon。幾年前Netflix就把它的幾乎整個微服務(wù)框架棧開源,Spring將其吸收進(jìn)Spring cloud中。所以基本上是兩種阿里的Dubbo和Spring Cloud。建議采用Spring cloud,這是目前比較受認(rèn)可的微服務(wù)架構(gòu)技術(shù)主流。

第三,Spring cloud開發(fā)基礎(chǔ)構(gòu)件介紹。Spring boot:是Pivotal團(tuán)隊(duì)開發(fā)的能夠簡化便利地使用Spring創(chuàng)建和開發(fā)應(yīng)用的框架[3],它是Spring cloud的基礎(chǔ)。Spring MVC、H5、Bootstrap:這些是web展現(xiàn)層和控制層框架,雖然同類技術(shù)很多但這些逐漸占據(jù)主流。JPA、Spring data:這是推薦使用的數(shù)據(jù)持久層框架,在持久層使用Spring data技術(shù)實(shí)現(xiàn)JPA,引擎通常使用Hibernate。Docker、K8S:Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上。通常一個Docker包含一個服務(wù)。k8s是Google的Kubernetes,在Docker技術(shù)的基礎(chǔ)上,為容器化的應(yīng)用提供部署運(yùn)行、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動態(tài)伸縮等一系列完整功能。微服務(wù)正是由于容器技術(shù)的突破才迅速發(fā)展起來。Mysql、Redis:Mysql是開源數(shù)據(jù)庫,但其在互聯(lián)網(wǎng)的表現(xiàn)非常優(yōu)秀,因?yàn)槠湫∏伸`活常被部署到Docker中。Redis是一個key-value存儲系統(tǒng),和Memcached類似。

第四,微服務(wù)應(yīng)用六大關(guān)鍵技術(shù)。完整的微服務(wù)架構(gòu)包含很多的功能點(diǎn),如果選出最為關(guān)鍵的幾項(xiàng)而且忽略掉常見的一般單體系統(tǒng)也具有的關(guān)鍵技術(shù),應(yīng)該是以下六點(diǎn):服務(wù)注冊和發(fā)現(xiàn)、負(fù)載均衡、斷路保護(hù)、微服務(wù)網(wǎng)關(guān)、分布式/版本化配置、消息驅(qū)動和總線。在微服務(wù)架構(gòu)體系中還有很多關(guān)鍵技術(shù)和相應(yīng)的實(shí)現(xiàn)組件,數(shù)量之多常常讓人覺得難以學(xué)習(xí),微服務(wù)化的道路不簡單。

4 大型網(wǎng)站的微服務(wù)架構(gòu)設(shè)計(jì)

首先,微服務(wù)化設(shè)計(jì)方式:需要對業(yè)務(wù)進(jìn)行拆分,要做好微服務(wù)的分層,要分布式的部署和調(diào)用。其次功能完整性和職責(zé)單一性。第三是迭代演進(jìn)不要想著一次成功。最后是接口API的版本優(yōu)先考慮兼容性。

其次,業(yè)務(wù)模型設(shè)計(jì)。微服務(wù)業(yè)務(wù)開發(fā)三個難題-拆分、事務(wù)、查詢,其中業(yè)務(wù)拆分受架構(gòu)本身和人的因素兩方面影響。在業(yè)務(wù)模塊拆分上可以采用以下方式。總體上分表現(xiàn)層、業(yè)務(wù)服務(wù)層、公共服務(wù)層、服務(wù)監(jiān)控與治理層、實(shí)體和接口層和資源層。發(fā)布上可以采用多種協(xié)議,建議是RESTful API的形式。資源層是數(shù)據(jù)庫、Redis、File system、cache等。

第三,技術(shù)模型設(shè)計(jì)和物理結(jié)構(gòu)。在spring cloud 的解決方案中主要組件部署關(guān)系是瀏覽器訪問API網(wǎng)關(guān),通過客戶端負(fù)載均衡到達(dá)服務(wù)組件,服務(wù)組件在此之前就向治理中心和配置中心關(guān)聯(lián)好,Kibana是一個為 Logstash和ElasticSearch提供的日志分析的 Web接口。可使用它對日志進(jìn)行高效的搜索、可視化、分析等各種操作。物理上所有的服務(wù)都可以部署到Docker上,而Docker由K8S來管理。整個開發(fā)部署環(huán)節(jié)按DveOps執(zhí)行。這樣形成了物理的服務(wù)器變成一種計(jì)算資源可以按需求由K8S隨意調(diào)配,而Docker 可以利用registry搭建本地私有倉庫,實(shí)現(xiàn)了Docker部署的靈活性和安全性。同時使用Jenkins+Maven+Git搭建持續(xù)集成和自動化部署的環(huán)境。

5 微服務(wù)架構(gòu)下的團(tuán)隊(duì)協(xié)作

微服務(wù)帶來的便捷的同時我們也經(jīng)常聽到一句話“微服務(wù)不是免費(fèi)的午餐”,同時敏捷開發(fā)也常見到項(xiàng)目失敗的案例。如何提高團(tuán)隊(duì)?wèi)?yīng)對微服務(wù)挑戰(zhàn)的成熟度,對于一個計(jì)劃實(shí)施微服務(wù)的團(tuán)隊(duì)提出一些建議。

梳理最后一公里和運(yùn)維的需求。包括基礎(chǔ)環(huán)境的準(zhǔn)備、部署發(fā)布、運(yùn)營監(jiān)控。基礎(chǔ)環(huán)境的準(zhǔn)備要求能快速響應(yīng)需求到新功能自動更新,推薦基礎(chǔ)設(shè)施及代碼的實(shí)踐,考慮構(gòu)建團(tuán)隊(duì)DevOps能力,以實(shí)現(xiàn)小步快跑的持續(xù)迭代能力。為服務(wù)架構(gòu)最大的挑戰(zhàn)是微服務(wù)數(shù)量龐大,能夠快速部署上線對團(tuán)隊(duì)的能力提出很高的要求,建議分離生產(chǎn)環(huán)境、預(yù)發(fā)布環(huán)境和測試環(huán)境。流水線部署,自動化腳本實(shí)現(xiàn)快速部署、配置管理、版本管理等,并相應(yīng)改進(jìn)微服務(wù)化后的獎勵機(jī)制都是微服務(wù)架構(gòu)下團(tuán)隊(duì)協(xié)作的重要保障。

6 微服務(wù)架構(gòu)應(yīng)用發(fā)展的展望

微服務(wù)架構(gòu)目前在國外被很多大互聯(lián)網(wǎng)公司采用[4],如

Google、Twitter, Netflix, Amazon, eBay等。國內(nèi)采用微服務(wù)架構(gòu)的有淘寶、京東、微博、微信等。微服務(wù)會有很大的發(fā)展,但同時也要看到微服務(wù)架構(gòu)的一些缺點(diǎn)。如,微服務(wù)架構(gòu)可能帶來過多的操作;DevOps是必須的;可能需要付出更多努力;分布式系統(tǒng)可能復(fù)雜難以管理;因?yàn)榉植疾渴鸶檰栴}難;當(dāng)服務(wù)數(shù)量增加,管理復(fù)雜性增加。雖然有這些缺點(diǎn),當(dāng)前微服務(wù)架構(gòu)仍是大型網(wǎng)站架構(gòu)體系發(fā)展的趨勢,這些問題也會隨著社區(qū)和大公司的努力逐。

參考文獻(xiàn):

[1]ChrisRichardson,“Microservices Architecture”[EB/OL].http://microservices.io/patterns/microservices.html

[2]張晶,王琰潔,黃小鋒.一種微服務(wù)框架的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017(04):82-86.

[3]蔣勇.基于微服務(wù)架構(gòu)的基礎(chǔ)設(shè)施設(shè)計(jì)[J].軟件,2016(05):93-97.

[4]鄧杰文,曹彩鳳.微服務(wù)若干關(guān)鍵問題研究[J].五邑大學(xué)學(xué)報(自然科學(xué)版),2016(02):49-54.

主站蜘蛛池模板: 99热免费在线| 日韩免费视频播播| 国产第八页| 色九九视频| a网站在线观看| a级毛片网| 亚洲天堂网在线观看视频| 国产精品一区在线观看你懂的| 欧美一区二区三区国产精品| 欧美第二区| 国产SUV精品一区二区| 亚洲视频影院| 免费高清自慰一区二区三区| 国产大全韩国亚洲一区二区三区| 亚洲国产一成久久精品国产成人综合| 凹凸国产分类在线观看| 婷婷激情五月网| 青青草国产精品久久久久| 在线观看91香蕉国产免费| 国产综合欧美| 日韩高清成人| 日本伊人色综合网| 亚洲福利网址| 欧美精品成人| 国产亚洲精品自在久久不卡 | 亚洲美女视频一区| 久久久久中文字幕精品视频| 国产一区在线观看无码| 亚洲成aⅴ人在线观看| 伊人丁香五月天久久综合| 直接黄91麻豆网站| 中文字幕无线码一区| 午夜高清国产拍精品| 青青青国产精品国产精品美女| 国产成人无码AV在线播放动漫| a在线亚洲男人的天堂试看| 久草视频一区| 欧美日韩国产精品综合| 内射人妻无码色AV天堂| 日本午夜影院| 亚洲VA中文字幕| 欧美日韩中文字幕二区三区| 欧美精品v| 国产精品人成在线播放| 婷婷色在线视频| 91精品国产自产在线观看| 亚洲av成人无码网站在线观看| 亚洲第一天堂无码专区| 国产95在线 | 国产成人一区| 亚洲无码不卡网| 欧美丝袜高跟鞋一区二区| 伊人久久婷婷| 最新午夜男女福利片视频| 久久精品国产精品一区二区| 毛片久久网站小视频| 国产成人亚洲精品无码电影| 中文字幕在线一区二区在线| 国产在线拍偷自揄拍精品| 波多野结衣中文字幕久久| 欧美在线天堂| 免费看a级毛片| 伊人久久婷婷五月综合97色 | 亚洲av片在线免费观看| 国产噜噜在线视频观看| 国产成人综合亚洲网址| 国产成人禁片在线观看| 精品人妻无码中字系列| a级毛片免费播放| 制服丝袜在线视频香蕉| 免费看美女自慰的网站| 国产97公开成人免费视频| 日韩国产无码一区| 成人欧美在线观看| 成人国产小视频| 欧美激情成人网| 91福利国产成人精品导航| 欧美一区精品| 天天视频在线91频| 91蜜芽尤物福利在线观看| 老色鬼久久亚洲AV综合| 国产在线观看人成激情视频|