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

微服務技術構建大規模web系統的研究

2017-08-24 14:18:29張峰
科技創新與應用 2017年22期

張峰

摘 要:微服務是近兩年流行起來的最優秀的web系統架構。文章由分析架構演變到引出微服務架構的內容、優點和架構設計的最佳實踐等,得出微服務未來必然有很好的發展結論。

關鍵詞:微服務;軟件架構;敏捷;Spring Cloud

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

1 概述

隨著互聯網越來越深入人們生活,web系統在人們生活中有著舉足輕重的地位。web技術正以前所未有的速度發生著巨大變革,服務端技術微服務架構+虛擬化已經興起。本文從web系統架構演變入手,討論興起的微服務技術和相關的架構及開源項目。討論適合小團隊的微服務開發架構體系,分析微服務技術應用系統的趨勢。

2 web系統架構演變

web系統最早出現在1980萬維網的發明者蒂姆·伯納斯-李(Tim Berners-Lee)設計的ENQUIRE項目上。從此web技術經歷了幾次改變。從網絡結構和軟件架構上看,web系統架構粗略經歷了以下階段:

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

第二階段應用與數據庫服務器分離。以Oracle數據庫為代表的DBMS系統規模越來越大,消耗系統資源越來越多。于是應用系統和數據庫系統分離為各自部署到獨立的服務器中。兩臺硬件服務器之間的網絡連接要可靠、快速、容錯。這個階段還增加了頁面緩存、頁面片段緩存、數據內存緩存等在應用服務器和數據庫之間。

第三階段應用服務器集群。隨著web系統訪問量逐步增高,應用服務器計算資源逐步耗盡,只有增加應用系統的服務器才能解決。隨著獨立計算資源的擴展,他們之間的協調帶來了好多問題。Oracle從10g通過CRS開始支持集群。解決了的用戶訪問壓力,但需要做的就是硬件的投入。

第四階段微服務架構與虛擬化。現在以亞馬遜為代表的大量的微服務架構應用系統開始呈現高速的發展趨勢。服務化架構的演進也經歷了幾個階段:MVC、RPC、SOA,現在到了微服務。近年來微服務成為大規模、高服務質量web系統解決方案之一。

3 微服務基礎理論和基礎架構選型

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

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

服務組件化:微服務的對立面就是單體結構,將單體拆分后組件化。

按業務組織團隊:微服務化后每一個或一個可用域可以是一個團隊開發。

做“產品”的態度:軟件工程項目需要反復調優不斷優化以適應業務彈性的環境。

智能端點與啞管道(Smart endpoints and dumb pipes):單體的內部模塊調用常用的是函數調用和RPC方式,而微服務是更粗粒度的通信協議建立關系。

去中心化治理:微服務采用分散的管理方式,每個微服務團隊內部有充分自由自組織技術棧。

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

基礎設施自動化:當服務數量快速增加軟件開發要保持快速迭代必須要做到自動化,另外近兩年DevOps在大陸也逐漸獲得廣泛認可,這是微服務化重要保證。

容錯設計:服務間調用允許出錯,在此方面必須表現出彈性。

演進式設計:沒有完美的程序,在軟件的生命周期中把這當成必然并支持不斷演進式設計開發,不斷完善而非一次完成。

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

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

第四,微服務應用六大關鍵技術。完整的微服務架構包含很多的功能點,如果選出最為關鍵的幾項而且忽略掉常見的一般單體系統也具有的關鍵技術,應該是以下六點:服務注冊和發現、負載均衡、斷路保護、微服務網關、分布式/版本化配置、消息驅動和總線。在微服務架構體系中還有很多關鍵技術和相應的實現組件,數量之多常常讓人覺得難以學習,微服務化的道路不簡單。

4 大型網站的微服務架構設計

首先,微服務化設計方式:需要對業務進行拆分,要做好微服務的分層,要分布式的部署和調用。其次功能完整性和職責單一性。第三是迭代演進不要想著一次成功。最后是接口API的版本優先考慮兼容性。

其次,業務模型設計。微服務業務開發三個難題-拆分、事務、查詢,其中業務拆分受架構本身和人的因素兩方面影響。在業務模塊拆分上可以采用以下方式??傮w上分表現層、業務服務層、公共服務層、服務監控與治理層、實體和接口層和資源層。發布上可以采用多種協議,建議是RESTful API的形式。資源層是數據庫、Redis、File system、cache等。

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

5 微服務架構下的團隊協作

微服務帶來的便捷的同時我們也經常聽到一句話“微服務不是免費的午餐”,同時敏捷開發也常見到項目失敗的案例。如何提高團隊應對微服務挑戰的成熟度,對于一個計劃實施微服務的團隊提出一些建議。

梳理最后一公里和運維的需求。包括基礎環境的準備、部署發布、運營監控?;A環境的準備要求能快速響應需求到新功能自動更新,推薦基礎設施及代碼的實踐,考慮構建團隊DevOps能力,以實現小步快跑的持續迭代能力。為服務架構最大的挑戰是微服務數量龐大,能夠快速部署上線對團隊的能力提出很高的要求,建議分離生產環境、預發布環境和測試環境。流水線部署,自動化腳本實現快速部署、配置管理、版本管理等,并相應改進微服務化后的獎勵機制都是微服務架構下團隊協作的重要保障。

6 微服務架構應用發展的展望

微服務架構目前在國外被很多大互聯網公司采用[4],如

Google、Twitter, Netflix, Amazon, eBay等。國內采用微服務架構的有淘寶、京東、微博、微信等。微服務會有很大的發展,但同時也要看到微服務架構的一些缺點。如,微服務架構可能帶來過多的操作;DevOps是必須的;可能需要付出更多努力;分布式系統可能復雜難以管理;因為分布部署跟蹤問題難;當服務數量增加,管理復雜性增加。雖然有這些缺點,當前微服務架構仍是大型網站架構體系發展的趨勢,這些問題也會隨著社區和大公司的努力逐。

參考文獻:

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

[2]張晶,王琰潔,黃小鋒.一種微服務框架的實現[J].計算機系統應用,2017(04):82-86.

[3]蔣勇.基于微服務架構的基礎設施設計[J].軟件,2016(05):93-97.

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

主站蜘蛛池模板: 精品無碼一區在線觀看 | 国产福利在线观看精品| 午夜性爽视频男人的天堂| 91丨九色丨首页在线播放| 成人国产精品2021| 精品国产福利在线| 丰满人妻久久中文字幕| 高清不卡毛片| 亚洲精品在线影院| 亚洲欧洲自拍拍偷午夜色| 国产精品无码作爱| 亚洲啪啪网| 午夜高清国产拍精品| 国产在线97| 欧美午夜小视频| 欧美亚洲另类在线观看| 国产一国产一有一级毛片视频| 性色在线视频精品| 亚洲浓毛av| av无码久久精品| 71pao成人国产永久免费视频| 美女扒开下面流白浆在线试听| 在线不卡免费视频| 亚洲,国产,日韩,综合一区 | 午夜少妇精品视频小电影| 久久semm亚洲国产| 精品少妇人妻无码久久| 日本亚洲欧美在线| 九色综合视频网| 久久久久国色AV免费观看性色| 高清欧美性猛交XXXX黑人猛交| 国产一在线| 无码专区在线观看| 国产小视频免费观看| 亚洲综合18p| 亚洲人成影院午夜网站| 超碰色了色| 欧美日韩免费| 亚洲免费三区| 日韩精品一区二区三区免费| 毛片手机在线看| 婷婷午夜影院| 伊人久久精品亚洲午夜| 精品丝袜美腿国产一区| 日韩最新中文字幕| 精品一区二区三区水蜜桃| 91精品国产一区自在线拍| 91免费在线看| 波多野结衣一区二区三区四区视频 | 亚洲开心婷婷中文字幕| 一区二区三区成人| 亚洲综合婷婷激情| 午夜一区二区三区| 色悠久久久久久久综合网伊人| 国产欧美日韩专区发布| 亚洲高清在线天堂精品| 99在线观看免费视频| 精品国产Av电影无码久久久| 国产剧情无码视频在线观看| 日本在线欧美在线| 强奷白丝美女在线观看| 久久久久久久97| 99激情网| 亚洲视频a| 99视频精品在线观看| 啪啪啪亚洲无码| 欧美一区福利| 久久a级片| 中文字幕 91| 久久综合亚洲色一区二区三区| www亚洲天堂| 久久香蕉国产线看观看精品蕉| 国产精品青青| 久久无码av一区二区三区| 久久鸭综合久久国产| 伊人久久大香线蕉成人综合网| 国产欧美日本在线观看| 精品少妇人妻av无码久久| 亚洲av日韩av制服丝袜| 免费一级α片在线观看| 婷婷综合亚洲| 网友自拍视频精品区|