日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微服务指南走北(五):什么样的服务才可以说是微服务?

發(fā)布時間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务指南走北(五):什么样的服务才可以说是微服务? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近有朋友提出了問題:“是不是擁有了服務發(fā)現(xiàn)就是微服務了?”,對于這個問題,很難回答,畢竟微服務的定義在每個人心里都是不一樣的,就像“互聯(lián)網(wǎng)思維”一樣,我們說得清“互聯(lián)網(wǎng)”,卻總也說不清楚什么是“互聯(lián)網(wǎng)思維”(在這個思想開放的互聯(lián)網(wǎng)時代,你我都是哈姆雷特,但是也是交流溝通便利性的時代)。今天總結這篇文章呢,來說說我對微服務的理解,以及再來探討下微服務的定義。

首先,微服務是什么?

其實回頭看看我之前寫的《微服務指南走北》系列的第一篇《微服務指南走北(一):微服務是什么》中描述的:微服務是基于Restful風格的,基于資源及資源操作一組API的集合,可以實現(xiàn)模塊兒或者說是特定的業(yè)務范圍內(nèi)的一個完全獨立、細粒度、自包含的一個服務。每個微服務提供一組API,供其他微服務或者應用客戶端所用。

其中,包含如下幾個要點:

  • 基于資源

  • 模塊兒化或者業(yè)務獨立

  • 微服務的“微”究竟是什么意思

    幾個誤區(qū):

  • 模塊兒化:不得不說,微服務確實可以天然實現(xiàn)模塊兒化,將不同的模塊劃分為不同的服務。但是這里存在一個誤區(qū),就是很多人想要借用微服務來實現(xiàn)模塊化,從而去分解龐大的系統(tǒng);不能說這樣做有什么問題,但是從解決問題的角度來說,微服務的主旨并不是為了實現(xiàn)模塊化,并且只要架構合理,單體應用也可以做好模塊化。同理,架構模式不合理,必然導致微服務管理上的災難(以后單獨寫文章來聊聊這個問題)。

  • 服務微小化:微服務并不是說要將服務拆分成多個微小的服務,舉個例子,假設java單體應用本來有2個功能,一個是賬戶管理,一個是訂單管理。運行起來的WebServer一共占用內(nèi)存是50M,假設其中20M是WebServer自身占用的內(nèi)存,那么分為兩個微服務以后,就需要單獨啟動兩個WebServer,那么就需要多占用20M的內(nèi)存(當然這里拿WebServer來講,并不是很合適,畢竟jvm中自身有優(yōu)化),如果進一步結合docker來使用,那么在docker中,還需要增加額外的內(nèi)存,關于這個問題,就不詳解了,想了解的朋友可以參考如下文章Analyzing java memory usage in a Docker container。內(nèi)存還僅僅是一方面,由于服務拆分而導致的HA、維護等成本的開銷也會增加很多。

  • 我的理解

    我認為微服務的“微”主要體現(xiàn)在業(yè)務的分離上,也許一個服務會占用較大內(nèi)存,但是業(yè)務相對獨立,每個服務負責相應的業(yè)務;就像我們常見的公司的組織架構一樣,不同的部門來完成不同的任務,不同部門之間相互配合又相互獨立。

    微服務的優(yōu)點

    我們先來回顧下之前我所總結的微服務的優(yōu)點(摘自《微服務指南走北(一):微服務是什么》):

  • 可以解決復雜性的問題,在功能不變的情況下,分解為多個相互協(xié)作的微服務,通過rest API定義邊界,這樣極大易于開發(fā)、理解和維護。

  • 微服務架構是的每個服務可以由專門的開發(fā)團隊或者個人開發(fā)者進行開發(fā),開發(fā)者可以自由選擇技術,不必受制于規(guī)定的技術和框架,只要API服務協(xié)議好交互方式即可(如restful)。這樣即使重新技術過時的微服務模塊兒或者重寫以前的代碼,也不是很困難。

  • 微服務架構模式使得每個微服務獨立部署,且每個服務獨立擴展,開發(fā)者不再需要協(xié)調(diào)其它服務部署對本服務的影響。微服務架構模式使得持續(xù)化部署成為可能。

  • 這里我再補充幾個優(yōu)點:

  • 微服務可以結合docker相關服務,易于實現(xiàn)HA(比如kubernetes + docker + 微服務),使得可以服務不會受到單點故障的影響。

  • 我認為的微服務應該具備的特點

    以下是我實際應用微服務架構需要保證的特點:

  • 所有的服務都盡量保證無狀態(tài)或者有狀態(tài)的可以做狀態(tài)轉(zhuǎn)移(如session等數(shù)據(jù),可以轉(zhuǎn)移到redis集群中)

  • 業(yè)務的相對分離

  • 使用API網(wǎng)關(盡量不要將微服務的各個服務暴露出去,以免造成安全問題)

  • 服務間采用統(tǒng)一的通信模式(restful、Thrift等)

  • 能夠脫離開發(fā)語言,即不受制于特定的開發(fā)語言

  • 微服務中的各個服務盡量不要有強依賴(即不會因為某個服務的停止,而導致整個服務或者其他服務不可用)

  • 具有易于實現(xiàn)HA的特質(zhì),即不存在單點故障,同時運行多個實例提供服務并實現(xiàn)了負載均衡

  • 什么樣的服務才可以說是微服務?

    對于這個問題,到這里,我也無法做出定論,但是比較確定的是微服務是在特定情境下使用的架構思想,既然是思想,就如開篇所說的,大家都是哈姆雷特,我也只能對我自己的理解進行描述,無法對你心里的思想進行固化,不過如果你感覺比較模糊,可以借鑒我再實際應用中總結的微服務需要保證的特點(即上一章描述的)。

    相關文章鏈接:

    • 微服務指南走北(一):微服務是什么

    • 微服務指南走北(二):微服務架構的進程間通信(IPC)

    • 微服務指南走北(三):Restful API 設計簡述

    • 微服務指南走北(四):你不愿意做微服務架構的十個理由


    by 劉迎光@螢火蟲工作室
    OpenBI交流群:495266201
    MicroService 微服務交流群:217722918
    mail: liuyg#liuyingguang.cn
    博主首頁(==防止爬蟲==):http://blog.liuyingguang.cn
    OpenBI問答社區(qū):http://www.openbi.tk

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結

    以上是生活随笔為你收集整理的微服务指南走北(五):什么样的服务才可以说是微服务?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。