文章目录
1:springCloud微服务概念
提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。
Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,Spring Cloud 就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud 做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。
2:springboot概念
spring boot并不是一个新的技术,它是基于spring框架下对于“约定优于配置(Convention Over Configuration)”理念下的产物,主要是帮助开发人员更容易更快速的创建独立运行和产品级别的基于spring框架的应用。为什么说springboot是微框架呢?如果大家玩过springboot,那应该很有体会,我们只需要非常少的配置就可以快速构建一个web项目。
而spring boot中并没有新的技术,如果大家对spring框架比较熟悉,那么在学习springboot的时候会更加容易。
围绕springboot构建的spring cloud生态下,目前有两类的比较成熟的实现,一个是基于netflix、另一个是基于alibaba。
- 约定优于配置 :指通过默认规则减少配置需求,使开发者能够快速启动项目。
3:Spring Cloud (一代)
1:springcloud介绍
我们通过对springboot的使用,就知道,spring从来不是重复造轮子,而是对现有技术的封装和维护,举个简单例子,比如最早spring只提供了IOC和AOP的核心功能,而像ORM框架、缓存、MVC框架,spring只是提供了一种兼容以及支持,所以当时大家说spring是万能胶,可以把各种各样的框架整合进来。
同理,springcloud也不是自己开发组件,他也不是一个框架,因为Spring Cloud的核心并没有实现服务注册、熔断、配置中心等功能,它提供了一个标准规范。而Spring Cloud Netflix才是spring Cloud规范的一种实现。
2:springcloud发展历史
Netflix是一家美国公司,在美国、加拿大提供互联网随选流媒体播放,定制DVD、蓝光光碟在线出租业务。该公司成立于1997年,总部位于加利福尼亚州洛斯盖图,1999年开始订阅服务。2009年,该公司可提供多达10万部DVD电影,并有1千万的订户。2007年2月25日,Netflix宣布已经售出第10亿份DVD。HIS一份报告中表示,2011年Netflix网络电影销量占据美国用户在线电影总销量的45%。
针对多种 Netflix 组件提供的开发工具包,其中包括 Eureka、Ribbon、Feign、Hystrix、Zuul、Archaius 等。
- Netflix Eureka:一个基于 Rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的* 实现,实现了云端负载均衡和中间层服务器的故障转移。
- Netflix Ribbon:客户端负载均衡的服务调用组件。
- Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
- Netflix Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
- Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。
- Netflix Archaius:配置管理 API,包含一系列配置管理 API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud Netflix 生态,到2020年,archaus/hystrix/ribbon/zuul/turbine等starter都会进入维护模式,进入维护模式意味着spring cloud团队不会再向这些模块中添加新的功能,但是仍然会修复安全问题和一些block级别的bug。只是没有新的功能迭代了,spring cloud netflix仍然可以继续使用。
进入维护模式的最根本原因还是Netflix对于zuul、ribbon等项目维护投入比较少、所以spring cloud 会在greenwich中把这些项目都进入到维护模式。
所以基本上现在如果构建新的微服务,基本都以springcloud alibaba为基准
3:springcloud常用组件
融合在每个微服务中、依赖其它组件并为其提供服务。
-
Netflix Ribbon
,客户端负载均衡,特性有区域亲和、重试机制。 -
Netflix Hystrix
,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。 -
Netflix Feign
,声明式服务调用,本质上就是Ribbon+Hystrix -
Stream
,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。 -
Bus
,消息总线,配合Config仓库修改的一种Stream实现, -
Sleuth
,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。 </