本文用 19 张思维导图形容微服务相干的概念和架构,倡议珍藏。包含什么是微服务、架构演进、微服务架构、微服务解决方案、SpringCloud 概览、Eureka、Ribbon、Feign、Hystrix、Zuul、Gateway、Config、Bus、OAuth2、Sleuth、什么是 SpringCloud、SpringCloud 次要组件。
Java 全栈最新面试题以及热门技术栈学习笔记分享
1、什么是微服务
1.1、架构演进
架构的倒退历程是从单体式架构,到分布式架构,到 SOA 架构,再到微服务架构。
图 1:架构演进
- 单体架构:未做任何拆分的 Java Web 程序
图 2:单体架构示意图
- 分布式架构: 依照业务垂直划分,每个业务都是单体架构,通过 API 相互调用。
图 3:分布式架构示意图
- SOA 架构:SOA 是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或生产服务,所以也是分布式架构的一种。
图 4:SOA 架构示意图
1.2、微服务架构
微服务架构在某种程度上是 SOA 架构的进一步的倒退。
微服务目前并没有比拟官网的定义。微服务 Microservices 之父,马丁. 福勒,对微服务大略的概述如下:
就目前而言,对于微服务业界并没有一个对立的、规范的定义(While there is no precise definition of this architectural style )。
但通常在其而言,微服务架构是一种架构模式或者说是一种架构格调,它提倡将繁多应用程序划分成一组小的服务,每个服务运行独立的本人的过程中,服务之间相互协调、互相配合,为用户提供最终价值。
服务之间采纳轻量级的通信机制相互沟通(通常是基于 HTTP 的 RESTful API )。每个服务都围绕着具体业务进行构建,并且可能被独立地部署到生产环境、类生产环境等。
另外,应尽量避免对立的、集中式的服务管理机制,对具体的一个服务而言,应依据业务上下文,抉择适合的语言、工具对其进行构建,能够有一个十分轻量级的集中式治理来协调这些服务。能够应用不同的语言来编写服务,也能够应用不同的数据存储。
能够关注微信公众号「Java 后端」回复「666」下载一本蕴含微服务技术的技术栈手册。
图 5:微服务定义思维导图
图 6:微服务架构示意图
1.3、微服务解决方案
目前最风行的两种微服务解决方案是 Spring Cloud 和 Dubbo。
2、SpringCloud 概览
2.0、什么是 SpringCloud
Spring Cloud 作为 Java 言的微服务框架,它依赖于 Spring Boot,有疾速开发、继续交付和容易部署等特点。Spring Cloud 的组件十分多,波及微服务的方方面面,井在开源社区 Spring、Netflix Pivotal 两大公司的推动下越来越欠缺。
Spring Cloud 是一系列组件的有机汇合。
图 7:SpringCloud 技术体系
图 8:SpringCloud 技术体系思维导图
2.1、SpringCloud 次要组件
2.1.1、Eureka
Netflix Eureka 是由 Netflix 开源的一款基于 REST 的服务发现组件,包含 Eureka Server 及 Eureka Client。
2.1.2、Ribbon
Ribbon Netflix 公司开源的一个负载平衡的组件。
2.1.3、Feign
Feign 是是一个申明式的 Web Service 客户端。
2.1.4、Hystrix
Hystrix 是 Netstflix 公司开源的一个我的项目,它提供了熔断器性能,可能阻止分布式系统中呈现联动故障。
2.1.5、Zuul
Zuul 是由 Netflix 孵化的一个致力于“网关“解决方案的开源组件。
2.1.6、Gateway
Spring Cloud Gateway 是 Spring 官网基于 Spring 5.0、Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供简略、无效且对立的 API 路由治理形式。
2.1.7、Config
Spring Cloud 中提供了分布式配置中 Spring Cloud Config,为内部配置提供了客户端和服务器端的反对。
2.1.8、Bus
应用 Spring Cloud Bus, 能够非常容易地搭建起音讯总线。
2.1.9、OAuth2
Sprin Cloud 构建的微服务零碎中能够应用 Spring Cloud OAuth2 来爱护微服务零碎。
2.1.10、Sleuth
Spring Cloud Sleuth 是 Spring Cloud 个组件,它的次要性能是在分布式系统中提供服务链路追踪的解决方案。
本文中对架构的演进及 Spring Cloud 构建微服务的根本组件进行了概览。