(1)微服務是什麼?它的優缺點有哪些?
“微服務”一詞來源於 Martin Fowler 的《Microservices》一文。微服務是一種架構風格,即將單體應用劃分為小型的服務單元,微服務之間使用 HTTP 的 API 進行資源訪問與操作。
在筆者看來,微服務架構的演變更像是一個公司的發展過程,從最開始的小公司,到後來的大集團。大集團可拆分出多個子公司,每個子公司的都有自己獨立的業務、員工,各自發展,互不影響,合起來則是威力無窮。
臃腫的系統、重複的程式碼、超長的啟動時間帶給開發人員的只有無限的埋怨,絲毫沒有那種很舒服的、很流暢的寫程式碼的感覺。他們把大部分時間都花在解決問題和專案啟動上面了。
微服務架構的優勢
使用微服務架構能夠為我們帶來如下好處:
1)服務的獨立部署
每個服務都是一個獨立的專案,可以獨立部署,不依賴於其他服務,耦合性低。
2)服務的快速啟動
拆分之後服務啟動的速度必然要比拆分之前快很多,因為依賴的庫少了,程式碼量也少了。
3)更加適合敏捷開發
敏捷開發以使用者的需求進化為核心,採用迭代、循序漸進的方法進行。服務拆分可以快速釋出新版本,修改哪個服務只需要釋出對應的服務即可,不用整體重新發布。
4)職責專一,由專門的團隊負責專門的服務
業務發展迅速時,研發人員也會越來越多,每個團隊可以負責對應的業務線,服務的拆分有利於團隊之間的分工。
5)服務可以動態按需擴容
當某個服務的訪問量較大時,我們只需要將這個服務擴容即可。
6)程式碼的複用
每個服務都提供 REST API,所有的基礎服務都必須抽出來,很多的底層實現都可以以介面方式提供。
微服務架構的劣勢
微服務其實是一把雙刃劍,既然有利必然也會有弊。下面我們來談談微服務有哪些弊端,以及能採取什麼辦法避免。
1)分散式部署,呼叫的複雜性高
單體應用的時候,所有模組之前的呼叫都是在本地進行的,在微服務中,每個模組都是獨立部署的,透過 HTTP 來進行通訊,這當中會產生很多問題,比如網路問題、容錯問題、呼叫關係等。
2)獨立的資料庫,分散式事務的挑戰
每個微服務都有自己的資料庫,這就是所謂的去中心化的資料管理。這種模式的優點在於不同的服務,可以選擇適合自身業務的資料,比如訂單服務可以用 MySQL、評論服務可以用 Mongodb、商品搜尋服務可以用 Elasticsearch。
缺點就是事務的問題了,目前最理想的解決方案就是柔性事務中的最終一致性,後面的章節會給大家做具體介紹。
3)測試的難度提升
服務和服務之間透過介面來互動,當介面有改變的時候,對所有的呼叫方都是有影響的,這時自動化測試就顯得非常重要了,如果要靠人工一個個介面去測試,那工作量就太大了。這裡要強調一點,就是 API 文件的管理尤為重要。
4)運維難度的提升
在採用傳統的單體應用時,我們可能只需要關注一個 Tomcat 的叢集、一個 MySQL 的叢集就可以了,但這在微服務架構下是行不通的。當業務增加時,服務也將越來越多,服務的部署、監控將變得非常複雜,這個時候對於運維的要求就高了。
推薦分散式架構原始碼
需要框架原始碼請看我個人簡介
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2916667/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (1)java Spring Cloud+mybatis企業快速開發架構之微服務是什麼?它的優缺點有哪些?JavaSpringCloudMyBatis架構微服務
- 什麼是閉包?有哪些使用場景?優缺點是什麼?
- 那麼多人選擇Python,它的優缺點有哪些?Python
- EventLoop有優點但也有缺點,請說說它的缺點是什麼?OOP
- Linux中LVM的工作原理是什麼?優缺點有哪些?LinuxLVM
- Python垃圾回收機制是什麼?有哪些優缺點?Python
- 什麼是CN2線路?有哪些優缺點?
- 混合IT是什麼?基礎設施和優缺點有哪些?
- Linux中lvm分割槽是什麼?LVM優缺點有哪些?LinuxLVM
- 開源是什麼意思?開源軟體優缺點有哪些?
- DRBD是什麼意思?優缺點是什麼?
- 你有使用過ExtJs嗎?說說它的優缺點是什麼?JS
- 為什麼說js是弱型別語言,它的優缺點分別是什麼?JS型別
- Linux中靜態路由指什麼?優缺點有哪些?Linux路由
- 什麼是CDN邊緣伺服器,有什麼優缺點?伺服器
- TF簽名是什麼?穩定性怎麼?有什麼優缺點?
- iframe有哪些優點和缺點?
- 什麼是海外伺服器?它的優點是什麼?伺服器
- 伺服器虛擬化部署是什麼有什麼優缺點伺服器
- 【雲端計算】什麼是私有云?可提供哪些服務?缺點是什麼?
- RPA 技術的優缺點有哪些
- HTTPS協議的優缺點有哪些?HTTP協議
- 什麼是閉包,閉包的優缺點?
- 雲主機的優缺點是什麼呢
- 測試用例編寫有哪些方式?各有什麼優缺點?
- NFS服務有什麼優缺點呢?linux入門用什麼書NFSLinux
- 多層PCB的優點和缺點有哪些?
- HDFS 01 - HDFS是什麼?它的適用場景有哪些?它的架構是什麼?架構
- 微服務思考(01):什麼是微服務?微服務的優勢和劣勢微服務
- 機櫃的種類和優缺點是什麼
- 臺灣伺服器的優缺點是什麼?伺服器
- Python中Django是什麼?Django框架優點有哪些?PythonDjango框架
- ERP系統有哪些優點和缺點?
- Jtti:mysql主從同步的優點和缺點是什麼JttiMySql主從同步
- 大資料的優缺點有哪些?_光點科技大資料
- 什麼是Tornado?它的特點是什麼?
- 虛擬主機有哪些優缺點
- WebSocket有什麼優勢?有哪些特點?Web