微服務架構概述—Spring Cloud&Dubbo

微服務架構概述

微服務是一種架構模式或一種架構風格,提倡將單一應用程序劃分成一組小的服務,每個服務運行在其獨立的自己的進程中,服務之間互相協調、互相配合,爲用戶提供最終價值。服務之間採用輕量級的通信機制互相溝通(通常是基於HTTPRESTful API)。每個服務都圍繞着具體業務進行構建,並且能夠被獨立地部署到生成環境、類生產環境等。另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的數據存儲

微服務

強調的是服務的大小,它關注的是某一個點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義的看,可以看作Eclipse裏面的一個個微服務工程/或者Module,可以理解成它具體是使用Springboot開發的一個小模塊

微服務優點

  • 每個服務足夠內聚,足夠小,代碼容易理解,這樣能聚焦一個指定的業務功能或業務需求
  • 開發簡單、開發效率高,一個服務可能就是專一的只幹一件事
  • 微服務是鬆耦合的,是有功能意義的服務
  • 微服務只是業務邏輯的代碼,不會和HTML,CSS或其他界面組件混合
  • 每個微服務都有自己的存儲能力,可以有自己的數據庫,也可以有統一數據庫

微服務缺點:

  • 開發人員要處理分佈式系統的複雜性
  • 多服務運維難度,隨着服務的增加,運維的壓力也在增大
  • 系統部署依賴
  • 服務間通信成本
  • 數據一致性
  • 系統集成測試
  • 性能監控

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

微服務條目
落地技術
服務開發SpringbootSpringSpringMVC
服務配置與管理Netflix公司的Archaius、阿里的Diamond
服務註冊與發現EurekaConsulZookeeper
服務調用RestRPCgRPC
服務熔斷器HystrixEnvoy
負載均衡RibbonNginx
服務接口調用(客服端調用服務的簡化工具)Feign
消息隊列KafkaRabbitMQActiveMQ

服務配置中心管理

Spring Cloud ConfigChef

服務路由(API網關)

Zuul

服務監控

ZabbixNagiosMetricsSpectator

全鏈路追蹤

ZipkinBraveDapper

服務部署

DockerOpenStackKubernetes

數據流操作開發包

Spring Cloud Stream(封裝與RedisRabbitKafka等發送接收消息)

事件消息總線

Spring Cloud Bus

爲什麼選擇Spring Cloud作爲微服務架構

Spring Cloud,基於Spring Boot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件

Spring Cloud利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,Spring Cloud爲開發人員提供了快速構建分佈式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等等,它們都可以用Spring Boot的開發風格做到一鍵啓動和部署

Spring Boot並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包

Spring Cloud=分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全家桶

Spring Boot專注於快速、方便的開發單個微服務個體,Spring Cloud關注全局的服務治理框架

Spring CloudDubbo對比

 

Dubbo

Spring Cloud

服務註冊中心

Zookeeper

Spring Cloud Netflix Eureka

服務調用方式

RPC

REST API

服務監控

Dubbo-monitor

Spring Boot Admin

斷路器

不完善

Spring Cloud Netflix Hystrix

服務網關

Spring Cloud Netflix Zuul

分佈式配置

Spring Cloud Config

服務跟蹤

Spring Cloud Sleuth

消息總線

Spring Cloud Bus

數據流

Spring Cloud Stream

批量任務

Spring Cloud Task


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章