spring cloud微服务(一)微服务基础架构

(一)何为微服务?

维基百科对其的定义:

微服務是一種以業務功能為主的服務設計概念,每一個服務都具有自主運行的業務功能,對外開放不受語言限制的 API (最常用的是 HTTP),應用程式則是由一個或多個微服務組成。

微服務的另一個對比是單體式應用程式。單體式應用表示一個應用程式內包含了所有需要的業務功能,並且使用像主從式架構 (Client/Server) 或是多層次架構 (N-tier) 實作,雖然它也是能以分散式應用程式來實作,但是在單體式應用內,每一個業務功能是不可分割的。若要對單體式應用進行擴展則必須將整個應用程式都放到新的運算資源(如:虛擬機器) 內,但事實上應用程式中最吃資源、需要運算資源的僅有某個業務部份(例如跑分析報表或是數學演算法分析),但因為單體式應用無法分割該部份,因此無形中會有大量的資源浪費的現象。

微服務運用了以業務功能的設計概念,應用程式在設計時就能先以業務功能或流程設計先行分割,將各個業務功能都獨立實作成一個能自主執行的個體服務,然後再利用相同的協定將所有應用程式需要的服務都組合起來,形成一個應用程式。若需要針對特定業務功能進行擴充時,只要對該業務功能的服務進行擴展就好,不需要整個應用程式都擴展,同時,由於微服務是以業務功能導向的實作,因此不會受到應用程式的干擾,微服務的管理員可以視運算資源的需要來配置微服務到不同的運算資源內,或是布建新的運算資源並將它配置進去。

雖然使用一般的伺服器虛擬化技術就能應用於微服務的管理,但容器技術 (Container Technology) 如 Docker 會更加地適合發展微服務的運算資源管理技術。

以白话理解来说,微服务就是将各个业务服务合理拆分的结构。其最大的优点就是解耦合、各微服务各司其职;同时带来的最大缺点就是分布式事务问题。由此,如何拆分业务及数据库表格是微服务的关键。

(二)我们要学习怎样的微服务系统?


微服务基础结构图

这是我们即将学习的微服务结构的技术全貌,使用的技术栈为:

服务注册、发现:eureka

API网关:zuul

配置管理:config

集群容错:hystrix

服务负载:ribbon

服务调用:feign

API文档:swagger2

代码简化:lombok

链路跟踪:sleuth+zipkin

安全认证:spring security

服务监控:actuator->spring-admin

后续还将更新分布式事务问题及各消息驱动、bus总线等相关技术。

图片、文本转载注明出处

你可能感兴趣的:(spring cloud微服务(一)微服务基础架构)