天天看點

微服務與微服務架構微服務與微服務架構

微服務與微服務架構

1、什麼是微服務

微服務 (

Microservice Architecture

)是近幾年開始流行的一種架構思想。

通常而言,微服務架構是一種架構模式,或者說是一種架構風格,它提倡将單一的應用程式劃分成一組小的服務每個服務運作在其獨立的自己的程序内。服務之間互相協調,互相配置,為使用者提供最終價值。服務之間采用輕量級的通信機制互相溝通,每個服務都圍繞着具體的業務進行建構,并且能夠被獨立的部署到生産環境中,另外應盡量避免統一的,集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合适的語言,工具對其進行建構,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的資料存儲。

2、微服務與微服務架構

微服務:

強調的是服務的大小,是具體解決某一個問題提供落地對應用服務的一個服務應用。

微服務架構:

是一種新的架構形式,由

Martin Fowler

2014年提出

微服務架構是一種架構模式,它提倡将單一應用劃分成一組小的服務,服務之間互相協調,互相配合,為使用者提供最終價值。

3、微服務的優缺點

優點:

  • 每個服務足夠内聚,代碼易了解
  • 開發簡單,開發效率高
  • 能夠被小團隊開發
  • 松耦合
  • 可以使用不同的語言開發
  • 易于和第三方內建
  • 易于修改和維護
  • 允許利用融合最新技術
  • 隻是業務邏輯,不會與

    HTML CSS

    或其他界面混合
  • 每個微服務都有自己的儲存内裡,可以有自己的資料庫,也可以有同一資料庫

缺點:

  • 開發人員要處理分布式系統的複雜性
  • 多服務運維難度會随着服務的增加,運維的壓力也在增大
  • 系統部署依賴
  • 服務間通信成本
  • 資料一緻性
  • 系統內建測試
  • 性能監控

4、微服務技術棧

微服務 技術
服務開發

Spring Boot/Spring/Spring MVC

服務配置與管理

Netflix

公司的

Archaius

阿裡的

Diamond

服務注冊發現

Eureka/Consul/Zookeeper

服務調用

Rest/RPC/GRPC

服務熔斷器

Hystrix/Envoy

負載均衡

Ribbon/Nginx

服務接口調用

Feign

消息隊列

Kafka/RabbitMQ/ActiveMQ

服務配置中心管理

SpringCloudConfig/Chef

服務路由

Zuul

服務監控

Zabbix/Nagios/Metrics/Specatator

全鍊路追蹤

Zipkin/Brave/Dapper

服務部署

Docker/OpenStack/Kubernetes

資料流操作開發包

SpringCloud Stream

事件消息總線

SpringCloud Bus

5、為什麼使用

Spring Cloud

5.1、選型依據

  • 整體解決方案和架構成熟度
  • 社群熱度
  • 可維護性
  • 學習曲線

5.2、目前大公司微服務架構

  • 阿裡:

    dubbo + HFS

  • 京東:

    JSF

  • 新浪:

    Motan

  • 當當網:

    DubboX

6、各微服務架構對比

功能、服務架構

Netflix/SpringCloud

Motan

GRPC

Thrift

Dubbo/DubboX

功能定位 完整服務架構愛

RPC

架構,實作叢集環境的基本服務注冊發現

RPC

架構

RPC

架構
服務架構
支援

Rest

√,

Ribbon

支援多種可插拔的序列化選擇
× × × ×
支援

RPC

× √,

Hession2

支援多語言 × ×
負載均衡 × ×
配置服務

Netfix Archaius,Spring Cloud Config Server

集中配置
× × ×
服務調用鍊監控 × × × ×
高可用,容錯 × ×
典型應用案例

Netflix

Sina

Google

Facebook

社群活躍度 一般 一般 2017年後重新開始維護,之前中斷5年
學習難度 中等
文檔豐富程度 一般 一般 一般
其他

Spring Cloud Bus

為應用程式帶來了更多的管理端點
支援降級

Netflix

内部在開發內建

GRPC

IDL

定義
實踐的公司較多

1、什麼是微服務

微服務 (

Microservice Architecture

)是近幾年開始流行的一種架構思想。

通常而言,微服務架構是一種架構模式,或者說是一種架構風格,它提倡将單一的應用程式劃分成一組小的服務每個服務運作在其獨立的自己的程序内。服務之間互相協調,互相配置,為使用者提供最終價值。服務之間采用輕量級的通信機制互相溝通,每個服務都圍繞着具體的業務進行建構,并且能夠被獨立的部署到生産環境中,另外應盡量避免統一的,集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合适的語言,工具對其進行建構,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的資料存儲。

2、微服務與微服務架構

微服務:

強調的是服務的大小,是具體解決某一個問題提供落地對應用服務的一個服務應用。

微服務架構:

是一種新的架構形式,由

Martin Fowler

2014年提出

微服務架構是一種架構模式,它提倡将單一應用劃分成一組小的服務,服務之間互相協調,互相配合,為使用者提供最終價值。

3、微服務的優缺點

優點:

  • 每個服務足夠内聚,代碼易了解
  • 開發簡單,開發效率高
  • 能夠被小團隊開發
  • 松耦合
  • 可以使用不同的語言開發
  • 易于和第三方內建
  • 易于修改和維護
  • 允許利用融合最新技術
  • 隻是業務邏輯,不會與

    HTML CSS

    或其他界面混合
  • 每個微服務都有自己的儲存内裡,可以有自己的資料庫,也可以有同一資料庫

缺點:

  • 開發人員要處理分布式系統的複雜性
  • 多服務運維難度會随着服務的增加,運維的壓力也在增大
  • 系統部署依賴
  • 服務間通信成本
  • 資料一緻性
  • 系統內建測試
  • 性能監控

4、微服務技術棧

微服務 技術
服務開發

Spring Boot/Spring/Spring MVC

服務配置與管理

Netflix

公司的

Archaius

阿裡的

Diamond

服務注冊發現

Eureka/Consul/Zookeeper

服務調用

Rest/RPC/GRPC

服務熔斷器

Hystrix/Envoy

負載均衡

Ribbon/Nginx

服務接口調用

Feign

消息隊列

Kafka/RabbitMQ/ActiveMQ

服務配置中心管理

SpringCloudConfig/Chef

服務路由

Zuul

服務監控

Zabbix/Nagios/Metrics/Specatator

全鍊路追蹤

Zipkin/Brave/Dapper

服務部署

Docker/OpenStack/Kubernetes

資料流操作開發包

SpringCloud Stream

事件消息總線

SpringCloud Bus

5、為什麼使用

Spring Cloud

5.1、選型依據

  • 整體解決方案和架構成熟度
  • 社群熱度
  • 可維護性
  • 學習曲線

5.2、目前大公司微服務架構

  • 阿裡:

    dubbo + HFS

  • 京東:

    JSF

  • 新浪:

    Motan

  • 當當網:

    DubboX

6、各微服務架構對比

功能、服務架構

Netflix/SpringCloud

Motan

GRPC

Thrift

Dubbo/DubboX

功能定位 完整服務架構愛

RPC

架構,實作叢集環境的基本服務注冊發現

RPC

架構

RPC

架構
服務架構
支援

Rest

√,

Ribbon

支援多種可插拔的序列化選擇
× × × ×
支援

RPC

× √,

Hession2

支援多語言 × ×
負載均衡 × ×
配置服務

Netfix Archaius,Spring Cloud Config Server

集中配置
× × ×
服務調用鍊監控 × × × ×
高可用,容錯 × ×
典型應用案例

Netflix

Sina

Google

Facebook

社群活躍度 一般 一般 2017年後重新開始維護,之前中斷5年
學習難度 中等
文檔豐富程度 一般 一般 一般
其他

Spring Cloud Bus

為應用程式帶來了更多的管理端點
支援降級

Netflix

内部在開發內建

GRPC

IDL

定義
實踐的公司較多