微服務
微服務架構:是一種架構模式,將一個應用程序劃分爲一組小的服務,每一個服務運行在本身單獨的進程中,服務之間經過HTTP的restful API相互溝通,相互協做、相互配合,爲用戶提供最終服務。強調避免集中式、統一的服務管理機制。
微服務·:是一個個微小的服務,強調的是服務的大小,狹義地說就是idea中一個個的model。將一個應用程序拆分後的各個獨立模塊。ios
微服務就比如醫院中一個個獨立的科室,牙科、骨科、外科等。而這些獨立的科室就構成了醫院,這就是微服務架構。
1
爲何有微服務?nginx
傳統的開發,將一個應用程序放在一個項目裏面,打成一個war包,全部的模塊,例如:訂單、商品、交易、庫存等,都在一個項目裏面,這種服務稱爲巨石服務。All in onespring
這種架構一旦某個模塊出問題,整個項目就會受到影響,甚至崩潰數據庫
分佈式: 將一個服務應用,拆分爲各個模塊/服務,將模塊獨立出來,單獨開發。各自有各自微小的進程,讓專業的人,專業的模塊作專業的事,讓分工更加明確。各個模塊獨立部署restful
這種架構,服務之間不會影響,哪一個模塊出問題,受影響的只有那個模塊,其它模塊仍然能夠工做。架構
微服務的做用
去耦合,各自的服務模塊能夠擁有本身的數據庫,經過springcloudconfig,進行配置共同協做,各個模塊能夠單獨的啓動和銷燬,相似於進程的概念。app
微服務的優缺點
優勢: 微服務讓分工更加明確,開發效率提升。鬆耦合,代碼更容易理解,部署靈活,能夠接納新的技術,擴展性好。
缺點: 開發人員要理解分佈式系統的複雜性,隨着服務的增多,運維難度壓力增大。微服務之間的通訊成本,依賴部署,數據的一致性如何保證,龐大的應用如何集成測試,如何監控性能…負載均衡
微服務技術棧
微服務技術棧: 多種技術的集合體。框架
咱們在討論一個分佈式微服務的架構的話,它須要有哪些維度運維
一個分佈式微服務的架構 E時代下的數字化生活
服務治理(Dubbo等) 手機(HUAWEI等)
服務註冊(Zookeeper等) 電腦(lenovo等)
服務調用 路由器
服務負載均衡(nginx) 充電寶
服務監控 智能音箱
…… ……
SpringCloud 提供以上技術的集合 小米科技均可以提供以上服務
微服務技術棧有哪些 微服務框架案例:www.b123.com
微服務條目 落地技術 備註 服務開發 Springboot、Spring、SpringMVC 服務配置與管理 Netfix公司的Archaius、阿里的Diamond 服務註冊與發現 Eureka、Consul、Zookeeper等 服務調用 Rest、RPC、gRPC(Google的) 服務熔斷 Hystrix、Envoy等 負載均衡 Ribbon、Nginx等 服務接口調用(客戶端調用服務的簡化工具) Feign等 消息隊列 Kafka、RabbitMQ、ActiveMQ等 服務配置中心管理 SpringCloudConfig、Chef等 服務路由(API網關) Zuui等 服務監控 Zabbix、Nagios、Metrics、Spectator等 全鏈路追蹤 Zipkin、Brave、Dapper等 服務部署 Docker、OpenStack、Kubernetes等 數據流操做開發包 SpringCloud Stream(封裝與Redis、Rabbit、Kafka等發送接收消息) 事件消息總線 SpringCloud Bus – 爲何選SpringCloud, 與其它分佈式微服務框架進行對比,它社區活躍度高,阿里的Dubbo已經五年沒有維護了,如今HSF(High Speed Framework) 支持的微服務條目多 ————————————————