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

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

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

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

西西 ? 來(lái)源:IBM Developer ? 作者:Anthony Amanse ? 2019-01-13 10:54 ? 次閱讀

什么是微服務(wù)和容器?

首先,什么是微服務(wù)?微服務(wù)是將應(yīng)用程序拆分為多個(gè)服務(wù)的一種架構(gòu)類(lèi)型,這些服務(wù)具備構(gòu)成整個(gè)應(yīng)用程序的細(xì)粒度功能。每個(gè)微服務(wù)將具備針對(duì)您的應(yīng)用程序的不同邏輯功能。與應(yīng)用程序的所有組件和功能都在單個(gè)實(shí)例中的單體架構(gòu)相比,微服務(wù)是應(yīng)用程序架構(gòu)領(lǐng)域一種更為現(xiàn)代的方法。您可以參考下圖中單體架構(gòu)與微服務(wù)架構(gòu)的比較情況。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

我們要將微服務(wù)放置在哪里?在容器中。容器是存放軟件的包,里面包含運(yùn)行軟件所需的一切內(nèi)容,比如代碼、依賴關(guān)系、庫(kù)、二進(jìn)制文件等等。Docker 是一種構(gòu)建和運(yùn)行容器的流行工具,但是 Kubernetes 正快速成為行業(yè)標(biāo)準(zhǔn),用于編排企業(yè)環(huán)境中的多個(gè)容器。與虛擬機(jī)相比,容器可以共享操作系統(tǒng)內(nèi)核,而不是像在一個(gè)主機(jī)上構(gòu)建多個(gè)虛擬機(jī)那樣擁有完整的副本。雖然可以將微服務(wù)放置在多個(gè)虛擬機(jī)中,但在這種情況下通常會(huì)使用容器,因?yàn)槿萜髡加玫目臻g更少,啟動(dòng)速度也更快。

為什么使用微服務(wù)架構(gòu)?

微服務(wù)架構(gòu)是為解決人們?cè)趩误w應(yīng)用程序中遇到的問(wèn)題而創(chuàng)造的。微服務(wù)已被廣泛使用,一些大型網(wǎng)站已將他們的單體應(yīng)用程序轉(zhuǎn)變?yōu)槲⒎?wù)。使用微服務(wù)架構(gòu)的一些好處是:

與單體應(yīng)用程序中的大型代碼庫(kù)相比,開(kāi)發(fā)人員只需處理小型代碼庫(kù)。 當(dāng)應(yīng)用程序組件松散耦合時(shí),開(kāi)發(fā)人員可以輕松理解源代碼,而不會(huì)減慢開(kāi)發(fā)速度。如果使用的代碼行數(shù)更少,您的 IDE 的速度顯然會(huì)更快。開(kāi)發(fā)人員無(wú)需處理各種功能的復(fù)雜性和依賴關(guān)系,這種情況只會(huì)在單體應(yīng)用程序中出現(xiàn)。

開(kāi)發(fā)人員的職責(zé)將會(huì)更加明確。 可以按照應(yīng)用程序的組件或微服務(wù)來(lái)分配團(tuán)隊(duì)工作。代碼復(fù)查速度將會(huì)加快。與單體應(yīng)用程序相比,更新速度將會(huì)加快,而且無(wú)需構(gòu)建和部署一切內(nèi)容。

應(yīng)用程序的技術(shù)堆??梢酝ㄟ^(guò)微服務(wù)有所不同。應(yīng)用程序不再需要依賴一種語(yǔ)言或庫(kù)。只要開(kāi)發(fā)人員認(rèn)為合適,微服務(wù)就可以利用多種不同編程語(yǔ)言??梢允褂萌缦聢D所示的多語(yǔ)言微服務(wù)。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

持續(xù)交付將變得更加容易。 對(duì)于簡(jiǎn)單變更,使用微服務(wù)就無(wú)需像單體應(yīng)用程序那樣再次重新部署一切。您可以選擇僅重新構(gòu)建和部署需要更新的微服務(wù)。頻繁更新的速度將會(huì)加快。

可擴(kuò)展性與每個(gè)微服務(wù)無(wú)關(guān)。您可以選擇根據(jù)應(yīng)用程序所需的資源擴(kuò)展它的每個(gè)組件。無(wú)需像單體應(yīng)用程序那樣為一切內(nèi)容構(gòu)建多個(gè)實(shí)例。擴(kuò)展微服務(wù)將會(huì)有效利用可用資源,而不是像在單體應(yīng)用程序中那樣擁有整個(gè)應(yīng)用程序的多個(gè)副本。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

數(shù)據(jù)可以分散化處理。您可以選擇為微服務(wù)使用不同的數(shù)據(jù)庫(kù)/存儲(chǔ)器。如果比起關(guān)系數(shù)據(jù)庫(kù),您的微服務(wù)更適合使用非關(guān)系型數(shù)據(jù)庫(kù),那么就可以選擇這種數(shù)據(jù)庫(kù)。微服務(wù)也可能只需要簡(jiǎn)單的密鑰存儲(chǔ)數(shù)據(jù)庫(kù),比如 Redis。如下圖所示,您可以選擇組合使用 Cloudant、MySQL 和 MongoDB。您可以利用不同的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)不同的數(shù)據(jù)類(lèi)型。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

隔離故障。 一個(gè)微服務(wù)中的錯(cuò)誤或缺陷不會(huì)使整個(gè)系統(tǒng)宕機(jī)。如果采用松散耦合的組件,您的應(yīng)用程序中的微服務(wù)出現(xiàn)錯(cuò)誤時(shí),其他微服務(wù)不太可能受到影響,因?yàn)樗鼈兌荚谧约旱娜萜髦?,不?huì)完全依賴彼此。而對(duì)于單體應(yīng)用程序,如果沒(méi)有正確找出缺陷或錯(cuò)誤,就會(huì)使整個(gè)應(yīng)用程序流程宕機(jī)。

存在哪些弊端?

在使用微服務(wù)解決單體架構(gòu)的一些問(wèn)題時(shí),每種微服務(wù)都存在一系列問(wèn)題。如果您試圖將單體應(yīng)用程序拆分為微服務(wù),那么第一個(gè)挑戰(zhàn)就是如何拆分。您可以選擇將它們拆分為多個(gè)業(yè)務(wù)功能,比如一個(gè)微服務(wù)處理批次,另一個(gè)微服務(wù)處理支付服務(wù)。最后,您的組件應(yīng)該只具有一小部分的功能或責(zé)任。

我在微服務(wù)架構(gòu)中看到的一些問(wèn)題如下:

一旦微服務(wù)數(shù)量增長(zhǎng),就會(huì)難以進(jìn)行跟蹤。持續(xù)集成和持續(xù)交付的初始設(shè)置工作也并非易事,因?yàn)槟枰幚頁(yè)碛卸鄠€(gè)微服務(wù)所帶來(lái)的額外復(fù)雜性。

復(fù)雜性。微服務(wù)需要加強(qiáng)協(xié)作,尤其是在有多個(gè)團(tuán)隊(duì)參與的時(shí)候。如果需要與其他微服務(wù)交互,那么微服務(wù)還會(huì)引進(jìn)更多的網(wǎng)絡(luò)調(diào)用,而在單體應(yīng)用程序中則不會(huì)出現(xiàn)這種情況。部署微服務(wù)并不像部署應(yīng)用程序的一個(gè)實(shí)例那樣簡(jiǎn)單。您還需要考慮其他很多問(wèn)題:如何處理各個(gè)微服務(wù)之間的通信,解決錯(cuò)誤以避免中斷其他微服務(wù),以及在每個(gè)組件中添加更多測(cè)試用例。

找到并跟蹤應(yīng)用程序中的缺陷/錯(cuò)誤。如果您的微服務(wù)只有一條路徑,那么查找起來(lái)會(huì)比較容易,但如果一個(gè)微服務(wù)與其他多個(gè)微服務(wù)進(jìn)行通信,僅查找錯(cuò)誤就會(huì)耗費(fèi)大量時(shí)間。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

進(jìn)行微服務(wù)路由需要完成更多工作。您需要花時(shí)間來(lái)配置和控制微服務(wù)的流動(dòng)。您還需要持續(xù)跟蹤微服務(wù)的版本,并解決其路由問(wèn)題。

什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

微服務(wù)會(huì)消耗比單體應(yīng)用程序更多的資源。雖然我提到的優(yōu)點(diǎn)之一就是可以更出色、更有效地利用可擴(kuò)展性和資源,但是所有組件都需要有自己的實(shí)例和容器,這可能就會(huì)導(dǎo)致內(nèi)存和 CPU 使用量增多。

可幫助您使用微服務(wù)的工具

Kubernetes

Kubernetes 是一個(gè)容器編排平臺(tái),支持部署、擴(kuò)展和管理所有容器。它可以自動(dòng)部署容器化的微服務(wù)。這就更便于管理應(yīng)用程序的所有組件和微服務(wù)。您可能會(huì)希望了解 Docker 如何實(shí)現(xiàn)微服務(wù)容器化。IBM 公開(kāi)發(fā)布了產(chǎn)品 IBM Cloud Kubernetes Service,可以為您管理集群。

Istio

Istio 能夠解決微服務(wù)中的一些弊端。Istio 是一種服務(wù)網(wǎng)格,可進(jìn)一步幫助您管理微服務(wù)。Istio 可以安裝在 Kubernetes 之上,幫助您跟蹤和監(jiān)控微服務(wù)。同時(shí),還可以幫助您快速跟蹤應(yīng)用程序中可能存在的錯(cuò)誤和缺陷。Istio 還可以管理微服務(wù)的流量,比如管理和控制流動(dòng)??梢暂p松配置路由。Istio 也可以在微服務(wù)中提供安全保障,比如采用相互 TLS,或限制它訪問(wèn)外部服務(wù)。您也可以將 Istio 安裝到 IBM Cloud Kubernetes Service 上。

總結(jié)

根據(jù)我的個(gè)人經(jīng)驗(yàn),使用容器編排平臺(tái)是通過(guò)微服務(wù)構(gòu)建應(yīng)用程序的必要條件。Kubernetes 是廣受開(kāi)發(fā)人員歡迎的一種平臺(tái),因?yàn)樗梢钥焖賹?yīng)用程序從開(kāi)發(fā)階段帶入生產(chǎn)環(huán)境。更棒的是,它是開(kāi)源的!

對(duì)于開(kāi)始構(gòu)建自己的應(yīng)用程序的開(kāi)發(fā)人員來(lái)說(shuō),他們應(yīng)該確定使用微服務(wù)是否比使用單體應(yīng)用程序?qū)λ麄兏欣?。他們?yīng)該考慮應(yīng)用程序的長(zhǎng)期易用性和可擴(kuò)展性。從單體架構(gòu)著手完全沒(méi)有問(wèn)題,但是一旦應(yīng)用程序規(guī)模擴(kuò)大,將它們拆分為微服務(wù)的難度只會(huì)更大。在這種情況下,在初期開(kāi)發(fā)階段就從微服務(wù)開(kāi)始顯然會(huì)更加有利。對(duì)于現(xiàn)有的單體應(yīng)用程序,開(kāi)發(fā)人員應(yīng)該考慮以何種方式分離應(yīng)用程序中的哪些組件。

盡管存在一些弊端,但微服務(wù)在開(kāi)發(fā)人員和企業(yè)中仍然很受歡迎,因?yàn)槲⒎?wù)對(duì)于應(yīng)用程序和滿足用戶需求都極為有利。一旦使用了合適級(jí)別的微服務(wù),借助它的靈活性,開(kāi)發(fā)人員和企業(yè)就可以快速開(kāi)發(fā)或更新應(yī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)注

    64

    文章

    6222

    瀏覽量

    99622
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    137

    瀏覽量

    7348
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    微服務(wù)架構(gòu)和CQRS架構(gòu)基本概念介紹

    微服務(wù)架構(gòu)現(xiàn)在很熱,到處可以看到各大互聯(lián)網(wǎng)公司的微服務(wù)實(shí)踐的分享總結(jié)。但是,我今天的分享和微服務(wù)沒(méi)有關(guān)系,希望可以帶給大家一些新的東西。如果一定要說(shuō)微服務(wù)和CQRS架構(gòu)的關(guān)系,那我覺(jué)得
    發(fā)表于 05-22 09:03

    微服務(wù)網(wǎng)關(guān)gateway的相關(guān)資料推薦

    目錄微服務(wù)網(wǎng)關(guān) gateway 概述[路由器網(wǎng)關(guān) Zuul 概述]嵌入式 Zuul 反向代理微服務(wù)網(wǎng)關(guān) gateway 概述1、想象一下一個(gè)購(gòu)物應(yīng)用程序的產(chǎn)品詳情頁(yè)面展示了指定商品的信息:2、若是
    發(fā)表于 12-23 08:19

    運(yùn)維是如何看待微服務(wù)容器

    微服務(wù)在帶來(lái)良好的設(shè)計(jì)和架構(gòu)理念的同時(shí),也帶來(lái)了運(yùn)維上的額外復(fù)雜性,尤其是在服務(wù)部署和服務(wù)監(jiān)控上。那么,運(yùn)維是如何看待微服務(wù)容器的呢?傳統(tǒng)
    發(fā)表于 09-30 17:24 ?0次下載
    運(yùn)維是如何看待<b class='flag-5'>微服務(wù)</b>和<b class='flag-5'>容器</b>的

    微服務(wù)容器技術(shù)實(shí)踐

    基于微服務(wù)架構(gòu)的技術(shù)實(shí)踐(點(diǎn)擊下載演講PPT) 普元信息主任架構(gòu)師顧偉在演講中,分享了他們對(duì)微服務(wù)架構(gòu)的認(rèn)識(shí),包括微服務(wù)演進(jìn)過(guò)程、常見(jiàn)認(rèn)知誤區(qū)等,并闡述了結(jié)合容器云技術(shù),分享在
    發(fā)表于 10-10 10:23 ?1次下載
    <b class='flag-5'>微服務(wù)</b>與<b class='flag-5'>容器</b>技術(shù)實(shí)踐

    什么是微服務(wù)_微服務(wù)知識(shí)點(diǎn)全面總結(jié)

    微服務(wù)是一個(gè)新興的軟件架構(gòu),就是把一個(gè)大型的單個(gè)應(yīng)用程序和服務(wù)拆分為數(shù)十個(gè)的支持微服務(wù)。一個(gè)微服務(wù)的策略可以讓工作變得更為簡(jiǎn)便,它可擴(kuò)展單個(gè)組件而不是整個(gè)的應(yīng)用程序堆棧,從而滿足
    的頭像 發(fā)表于 02-07 16:06 ?1.5w次閱讀

    java微服務(wù)架構(gòu)有哪些

    本文首先簡(jiǎn)單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來(lái)的優(yōu)勢(shì),然后結(jié)合實(shí)例介紹了幾個(gè)常見(jiàn)的Java微服務(wù)框架。微服務(wù)在開(kāi)發(fā)領(lǐng)域的應(yīng)用越來(lái)越廣泛,因?yàn)殚_(kāi)發(fā)人員致力于創(chuàng)建更大、更復(fù)雜的應(yīng)用程
    的頭像 發(fā)表于 02-09 10:34 ?8667次閱讀
    java<b class='flag-5'>微服務(wù)</b>架構(gòu)有哪些

    微服務(wù)容器之間的有何關(guān)系?

    現(xiàn)在一提到微服務(wù),有很多人會(huì)想到容器技術(shù)(這里說(shuō)到的容器技術(shù)是指docker)。那么微服務(wù)容器之間到底有什么關(guān)系呢,我來(lái)簡(jiǎn)要和大家探討下。
    的頭像 發(fā)表于 02-01 01:58 ?6150次閱讀

    通過(guò)微服務(wù)原理、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)概念等來(lái)成功實(shí)現(xiàn)微服務(wù)

    組織通過(guò)微服務(wù)基本準(zhǔn)則、領(lǐng)域驅(qū)動(dòng)的設(shè)計(jì)概念和編碼優(yōu)秀實(shí)踐成功地使用微服務(wù),可以充分利用Kubernetes/容器原生的優(yōu)勢(shì)。
    的頭像 發(fā)表于 08-14 10:02 ?1905次閱讀

    微服務(wù)架構(gòu)有哪些_微服務(wù)架構(gòu)設(shè)計(jì)模式

    小伙伴們知道常用的微服務(wù)架構(gòu)框架有哪些嗎?上回我們介紹了一些常用的微服務(wù)架構(gòu)設(shè)計(jì)模式,這次我們就來(lái)了解一下一些常用的微服務(wù)架構(gòu)框架吧。
    的頭像 發(fā)表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務(wù)</b>架構(gòu)有哪些_<b class='flag-5'>微服務(wù)</b>架構(gòu)設(shè)計(jì)模式

    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ā)表于 11-23 09:26 ?651次閱讀

    設(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 ?596次閱讀
    設(shè)計(jì)<b class='flag-5'>微服務(wù)</b>架構(gòu)的原則

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

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

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

    第一步理解容器化基礎(chǔ),第二步創(chuàng)建Dockerfile,第三步構(gòu)建推送鏡像,第四步部署微服務(wù),第五步管理微服務(wù)、第六步優(yōu)化更新。容器化部署微服務(wù)
    的頭像 發(fā)表于 10-09 10:08 ?156次閱讀

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

    微服務(wù)架構(gòu)與容器云密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器云基于容器
    的頭像 發(fā)表于 10-21 17:28 ?225次閱讀

    寶藏級(jí)微服務(wù)架構(gòu)工具合集

    構(gòu)建,Eclipse Vert.X提供多語(yǔ)言支持且資源高效;Kubernetes是強(qiáng)大的容器編排工具,Tyk是開(kāi)源API管理平臺(tái);RabbitMQ幫助微服務(wù)間通信,Apache Kafka則適用于處理
    的頭像 發(fā)表于 12-21 16:33 ?136次閱讀