spring cloud简介(一)

一、什么是spring cloud

    百度百科的解释为,Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    简单来说,SpringCloud是官方封装好的一整套分布式微服务的技术解决方案,我们也称之为微服务全家桶。

二、什么是微服务架构

    微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。
微服务架构应该具备以下特性:

  • 每个微服务可独立运行在自己的进程里。

  • 一系列独立运行的微服务共同构建起整个系统。

  • 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理,用户管理等。

  • 微服务之间通过一些轻量的通信机制进行通信,例如通过RESTful API进行调用。

  • 可以使用不同的语言与数据存储技术

  • 全自动部署机制

三、微服务架构的优点

易于开发和维护

  • 一个微服务只会关注一个特定的业务功能,所以它业务清晰,代码量较少。

单个微服务启动较快

  • 单个微服务代码量较少,所以启动会比较快。

局部修改容易部署

  • 单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。

技术栈不受限

  • 在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。

按需伸缩

  • 可根据需求,实现细粒度的扩展。

三、SpringCloud 和 SpringBoot的关系

    SpringCloud选择SpringBoot作为技术底层,对目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,进行二次封装,屏蔽掉了复杂的配置和实现原理。让我们使用SpringCloud像使用SpringBoot一样的简单。

SpringCloud和SpringBoot的版本选择

关于SpringCloud和SpringBoot的版本选择问题,可以见官网:https://spring.io/projects/spring-cloud/

四、常用的组件

1.Netflix Eureka - 服务发现

    微服务系统是由多个单一职责的服务单元组成,服务之间的相互依赖成网状,所以该系统需要注册中心来统一管理微服务实例,方便查看每个服务的健康状态。利用Eureka组件可以很轻松的实现服务的注册和发现的功能。

    Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。有两个组件组成:Eureka服务端和Eureka客户端。

      Eureka服务端作用服务注册中心,支持集群部署。

           Eureka客户端是一个java客户端,用来处理服务注册和发现。

2.Netflix Ribbon - 客户端负载均衡

Ribbon 主要提供客户侧的软件负载均衡算法。

说明:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。

3.Netflix Hystrix - 断路器

断路器,保护系统,控制故障范围。

说明:为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务器出现问题,调用这个服务就会出现线程阻塞,此时若大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务于服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务器故障的“”“雪崩”效应。为解决这种雪崩效应,引进熔断组件Hystrix,当出现故障后会自动剔除服务实列。Hystrix除了一些基本的熔断器,还能实现服务降级、服务限流的功能,并提供了界面展示健康状态的功能。

4.Netflix Zuul - 服务网关

api网关,路由,负载均衡等多种作用

说明:微服务系统通过将资源以API接口的形式暴露给外界来提供服务,在微服务系统中,API接口资源通常是由服务网关统一暴露,内部服务不直接对外提供API资源的暴露。类似nginx,方向代理的功能,不过netflix自己增加了一些配合其他组件的特性。

5.Spring Cloud Config - 分布式配置

配置管理

说明:在实际的开发过程中,每个服务都有大量的配置文件,列如数据库配置、日志输出级别配置等,而往往这些配置在不同的环境中也是不一样的。随着服务的增加,配置文件的管理也是一件非常复杂的事。在微服务架构中,需要有统一管理配置文件的组件。Spring Cloud Config提供服务端和客户端。服务器存储后端的默认实现使用git,因此它轻松支持标签的配置环境,可以访问作用于管理内部的各种工具。这个是静态的,得配合Spring Cloud Bus实现动态的配置更新。

6.Feign


声明式远程调度组件。在微服务架构中,一个业务可能需要多个服务协同完成,这时候涉及到服务之间的内部调用。可以通过Feign来远程调度以他服务。

7.Spring Cloud Bus

事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

五、总结

到这里为止,spring cloud的一些基本知识相信读者已经差不多了解了,下面的系列博客,将会写一些简单的demo来实现上述组件的功能,不涉及原理,只展示简单使用,然后结合代码再来理解各个组件的作用。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值