Spring Cloud是微服务架构的实现
面向服务架构(SOA)
是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。
ESB(企业服务总线):就是一根管道,用来连接各个服务节点
。为了集成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通。
SOA缺点:每个
供应商提供的ESB产品有偏差
,自身实现较为复杂
;应用服务粒度较大
,ESB集成整合所有服务和协议、数据转换使得运维、测试部署困难。所有服务都通过一个通路通信(ESB),直接降低了通信速度
。
微服务架构
微服务架构其实也是一个SOA架构
,只是较SOA的应用服务粒度更加细
,并且不是基于ESB,而是将我们的服务治理、服务注册中心去统一管理服务的地址,应从服务中心去获取地址,然后去访问
(得到之后就可以访问)
微服务架构使用一套小服务来开发单个应用的方式或途径
,每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署机制来独立部署。
特点:
-
单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
-
微:微服务的服务粒度很小,
-
面向服务:每个服务都要对外暴露Rest风格服务接口API。
-
自治:
服务间互相独立,互不干扰
微服务架构与SOA都是对系统进行拆分;微服务架构基于SOA思想,可以把微服务当做去除了ESB的SOA。
核心区别
:微服务架构没有使用ESB,使用访问治理注册中心,业务粒度很小
服务调用方式(RPC、Http)
常见的远程调用方式有2种:
-
RPC:
基于Socket,速度快,效率高
-
Http:
基于TCP,消息封装臃肿,对服务的提供和调用方没有任何技术限定
区别:RPC的机制是根据语言的API来定义的,而不是根据基于网络的应用来定义的。
Spring RestTemplate
方便的进行http服务调用的http客户端工具类包:
- okhttpClient
- okHttp
- JDK原生URLConnection
spring提供了RestTemplate的工具类对上述的3种http客户端工具类进行了封装,可在spring项目中使用RestTemplate讲行服务调用。
springCloud概述
官网地址:http://projects.spring.io/spring-cloud/
Spring Cloud不是一个组件,而是许多组件的集合
其主要涉及的组件包括:
- Eureka:注册中心
- Zuul、Gateway:服务网关
- Ribbon:负载均衡
- Feign:服务调用
- Hystrix或Resilience4j:熔断器