大剑无锋之分布式和微服务分别是什么?【面试推荐】
提出一個技術,大多都是為了解決某一難題。
分布式:
分布式的提出是:是為了解決單個物理服務器容量和性能瓶頸問題而采用的優化手段。
該領域需要解決的問題極多,在不同的技術層面上,又包括:分布式文件系統、分布式緩存、分布式數據庫、分布式計算等,一些名詞如Hadoop、zookeeper、MQ等都跟分布式有關。
從理念上講,分布式的實現有兩種形式:
水平擴展:當一臺機器扛不住流量時,就通過添加機器的方式,將流量平分到所有服務器上,所有機器都可以提供相當的服務;
垂直拆分:前端有多種查詢需求時,一臺機器扛不住,可以將不同的需求分發到不同的機器上,比如A機器處理余票查詢的請求,B機器處理支付的請求。
微服務:
在傳統的IT行業軟件大多都是各種獨立系統的堆砌,這些系統的問題總結來說就是擴展性差,可靠性不高,維護成本高。
所以說微服務的提出:為了增加擴展性。可靠性,以及減少維護成本。
就像馬丁福勒對微服務的概述:
簡而言之,微服務體系結構樣式[1]是一種將單個應用程序開發為一組小服務的方法,每個小服務都在自己的進程中運行并與輕量級機制(通常是HTTP資源API)進行通信。這些服務圍繞業務功能構建,并且可以由全自動部署機制獨立部署。這些服務的集中管理幾乎沒有,可以用不同的編程語言編寫并使用不同的數據存儲技術。
那兩者的差別在哪?
從上面可以看出:
我有在網上看到不少說分布式屬于微服務。先說一下,就上面我的總結而言,我不認同。
在我看來如果就多臺機器而言,分布式的垂直拆分不就是我們說的微服務。
也有看到這樣一句話,微服務與分布式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。
這句話我是認同的。
分布式用于分壓,也就是解決高并發帶來的問題,使用到多臺機器。
而微服務用于分散能力,將模塊拆分成一個獨立的服務單元通過接口來實現數據的交互,毫不夸張的說一個服務單元只做一件事。
歡迎指正!!!
總結
以上是生活随笔為你收集整理的大剑无锋之分布式和微服务分别是什么?【面试推荐】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大剑无锋之如何评判一个算法的优劣【面试推
- 下一篇: 大剑无锋之了解什么是CAP吗?【面试推荐