Spring Cloud介绍与环境搭建
1、单体应用
2、单体优化(架构演进)
针对单体应用的问题,参考SOA架构将模块划分独立的服务模块
面向服务的架构(SOA)
是一个组件模式
将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来
接口采用中立方式进行定义,独立于实现服务的硬件平台、操作系统和编程语言
使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互-
模块及模块之间信息或参数依赖的程度
-
Enterprise Service Bus,企业服务总线
传统中间件技术与XML,Web服务等技术结合的产物
提供了网络中最基本的连接中枢
3、架构要求
- 高性能:应用程序基本要求
- 独立性:其中一个模块出现Bug或者其他问题,不影响其他模块
- 易拓展:应用中的每一个节点,都可以根据实际需求进行拓展
- 易管理:对于各个模块的资源,轻松实现管理、升级、减少维护成本
- 状态监控与警报:对整个应用程序进行监控,出现问题,及时报警
4、微服务架构
- 微服务并不是某种特定技术,而是一个架构风格
- 类似SOA,将单体应用分为小型服务单元,微服务之间使用HTTP的API进行资源访问与操作
- SOA架构侧重于将每个单体应用的服务集成到ESB,微服务更强调服务的细化
- 微服务中没有ESB角色,每一个模块本身就是一个服务(对于ESB而言,是将特定的服务发布到Web ESB容器中,但对于微服务而言,它本身就是一个服务)
5、Netflix OSS
- Netflix是一个互联网影片提供商,Netflix 公司成立了自己的开源中心,名称为 Netflix Open Source Software Center,简称 Netflix OSS
- 这个开源组织专注于大数据、云计算方面的技术,提供了多个开源框架
- 这些框架包括大数据工具、构建工具、基于云平台的服务工具等。
- Netflix 所提供的这些框架,很好的遵循微服务所推崇的理念,实现了去中心化的服务管理、服务容错等机制。
6、Spring Cloud与Netflix
- Spring Cloud并不是一个具体的框架,可以理解为一个工具箱,它提供的各类工具,可以帮助我们快速的搭建分布式系统
- Spring Cloud的各个项目基于Springboot,将Netflix的多个框架进行封装,并且通过自动配置的方式将这些框架绑定到Spring的环境中,从而简化了这些框架的使用
- Spring Cloud下的“Spring Cloud Netflix”模块,主要封装了Netflix的以下项目:
- Eureka:基于REST服务的分布式中间件,主要用于服务管理
- Hystrix:容错框架,通过添加延迟阀值以及容错的逻辑,来帮助我们控制分布式系统组件的交互
- Feign:一个REST客户端,目的是为了简化Web Service客户端的开发
- Ribbon:负载均衡框架,在微服务集群中为各个客户端的通信提供支持,它主要实现中间层应用程序的的负载均衡
- Zuul:为微服务集群提供过代理,过滤,路由等功能(网关)
7、Spring Cloud的主要模块
- Spring Cloud Config:为分布式系统提供了配置服务器和配置客户端,通过对它们的配置,可以很好的管理集群中的配置文件
- Spring Cloud Sleuth:服务跟踪框架,可以与 Zipkin、Apache HTrace 和 ELK 等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利
- Spring Cloud Stream:用于构建消息驱动微服务的框架,该框架在 Spring Boot 的基础上,整合了“Spring Integration”来连接消息代理中间件。
- Spring Cloud Bus:连接 RabbitMQ、Kafka 等消息代理的集群消息总线
8、环境搭建
- idea:IntelliJ IDEA 2017.2.5 x64
- maven:3.2.5
配置阿里的远程仓库
%MAVEN_HOME%/apache-maven-3.2.5/setting.xml在 mirrors 节点下加入以下配置:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
- JDK:1.8.0_131