SpringCloud與微服務Ⅱ --- 微服務概述

一.什麼是微服務html

1) Martin Fowler論文對微服務的闡述(中文版)ios

2) 對單一應用進行拆分spring

3) 每個獨立的應用都有一個獨立的進程數據庫

4) 擁有本身獨立的數據庫springboot

5) 微服務化的核心就是講傳統的一站式應用,根據業務拆分紅一個一個的服務,完全地去耦合,每個微服務提供單個業務功能的服務,一個服務處理一件事,從技術角度就是一種小而獨立的處理過程,相似進程的概念,可以自行單獨啓動或銷燬,擁有本身的數據庫。架構

二.微服務與微服務架構app

2.1 微服務架構負載均衡

1) 相似於eclipse工具裏面用maven開發的一個個獨立的module,具體是使用springboot開發的一個小模塊,一個模塊就作一件功能。框架

2) 強調是總體,每個個體完成一個具體的任務或者功能,把一個個的個體拼接起來,組成一個總體並對外暴露服務。運維

3) 微服務架構是一種架構模式,它提倡將單一的應用程序劃分紅一組小的服務,服務之間互相協調、互相配合,爲用戶提供最終價值。每一個服務運行在其獨立的進程中,服務與服務間採用輕量級的通訊機制互相協做(一般是基於HTTP協議的RESTful API)。每一個服務都圍繞着具體業務進行構建,而且可以被獨立的部署到生產環境、類生產環境等。另外,應當儘可能避免統一的、集中式的服務管理機制。對具體的一個服務而言,應根據業務的上下文,選擇合適的語言、工具對其進行構建。

2.2 微服務

強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義地看,能夠看作Eclipse裏面的一個個微服務工程或者Module。

注意,微服務、微服務架構、Spring Cloud是三種不一樣的概念,不要弄混淆。

三.微服務的優缺點

3.1 微服務的優勢

1) 每一個服務足夠內聚,足夠小,代碼容易理解這樣能聚焦一個指定的業務。單機版的應用因爲不少業務耦合在一塊兒,修改代碼時每每須要讀懂一整塊的業務功能,而微服務項目只須要了解其中一小塊,因爲項目足夠小而且都是獨立的,代碼更容易理解,也更容易維

2) 開發簡單,開發效率提升,精力集中,一個服務只作一件事。

3) 小團隊也能單獨開發,管理容易,管理成本下降。

4) 微服務是鬆耦合的,是有功能意義的服務,不管是在開發階段仍是在部署階段都是獨立的,這樣能夠防止某個項目出問題了其餘服務項目不會受到影響。

5) 微服務能使用不一樣語言開發。

6) 易於和第三方集成,微服務容許容易且靈活的方式集成自動部署,經過持續集成工具,例如Jenkins,Hudson,bamboo。

7) 微服務易於被一個開發人員理解,修改和維護,這樣小團隊可以更關注本身的工做成果。無需經過合做才能體現價值。

8) 微服務容許你利用融合最新技術。

9) 微服務只是業務邏輯代碼,不會和HTML,CSS或其餘界面組件混合。

10) 每一個微服務都有本身的存儲能力,能夠有本身的數據庫,也能夠有統一的數據庫。能夠靈活搭配,鏈接公共庫+鏈接獨立庫。

3.2 微服務的缺點

1) 開發人員須要處理分佈式系統的複雜性。

2) 多服務運維難度,隨着服務的增長,運維的壓力也在增大。

3) 系統部署依賴,一個模塊調不通有可能影響到其餘模塊的使用。

4) 服務間通訊成本變高。

5) 數據的一致性問題。

6) 系統集成測試變複雜。

7) 性能監控變困難。

四.微服務的技術棧有哪些

微服務技術棧是多種技術的集合體

  • 服務開發:Spring Boot、Spring、Spring MVC

  • 服務的配置與管理:Netflix公司的Archaius、阿里的Diamond等

  • 服務註冊與發現:Eureka、Consul、Zookeeper等

  • 服務調用:Rest、RPC、gRPC

  • 服務熔斷器:Hystrix、Envoy等

  • 服務負載均衡:Ribbon、Nginx等

  • 服務接口調用(客戶端調用服務的簡化工具):Feign等

  • 消息隊列:Kafka、RabbitMQ、ActiveMQ等

  • 服務配置中心管理:SpringCloudConfig、Chef等

  • 服務路由(API):Zuul等

  • 服務監控:Zabbix、Nagios、Metrics、Spectator等

  • 全鏈路追蹤:Zipkin、Brave、Dapper等

  • 服務部署:Docker、OpenStack、Kubernetes等

  • 數據操做開發包:SpringCloud Stream(封裝Redis、RabbitMQ、Kafka等發送接收消息)

  • 事件消息總棧:Spring Cloud Bus

五.分佈式框架的對比

  • 選型依據

    • 總體解決方案和框架成熟度

    • 社區熱度

    • 可維護性

    • 學習曲線

  • 當前IT公司用的微服務架構有哪些?

    • 阿里Dubbo/HSF

    • 京東JSF

    • 新浪微博Motan

    • 噹噹網DubboX

 

 

 結論:SpringCloud知足幾乎全部的微服務技術維度要求。

相關文章
相關標籤/搜索