java之springcloud概念介绍

wuxiaochang wuxiaochang     2022-12-11     578

关键词:

文章大纲

一、理解微服务
二、Spring Cloud知识介绍
三、参考资料下载
四、参考文章

 
技术图片

一、理解微服务

  我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程。

1. 单体架构

 
技术图片

1.1 特点
(1)所有的功能集成在一个项目工程中。
(2)所有的功能打一个war包部署到服务器。
(3)应用与数据库分开部署。
(4)通过部署应用集群和数据库集群来提高系统的性能。

1.2 优点
(1)项目架构简单,前期开发成本低,周期短,小型项目的首选。

1.3 缺点
(1)全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
(2)系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
(3)技术栈受限。

2. 垂直架构

 
技术图片

2.1 特点
(1)以单体结构规模的项目为单位进行垂直划分项目即将一个大项目拆分成一个一个单体结构项目。
(2)项目与项目之间的存在数据冗余,耦合性较大,比如上图中三个项目都存在客户信息。
(3)项目之间的接口多为数据同步功能,如:数据库之间的数据库,通过网络接口进行数据库同步。

2.2 优点
(1)项目架构简单,前期开发成本低,周期短,小型项目的首选。
(2)通过垂直拆分,原来的单体项目不至于无限扩大。
(3)不同的项目可采用不同的技术。

2.3 缺点
(1)全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
(2)系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

3. SOA架构

 
技术图片

3.1特点
(1)基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各各系统提供服务。
(2)各个项目(系统)与服务之间采用webservice、rpc等方式进行通信。
(3)ESB企业服务总线作为项目与服务之间通信的桥梁。

3.2 优点
(1)将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。
(2)可以针对不同服务的特点制定集群及优化方案。
(3)采用ESB减少系统中的接口耦合。

3.3 缺点
(1)系统与服务的界限模糊,不利于开发及维护。
(2)虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。
(3)抽取的服务的粒度过大,系统与服务之间耦合性高。

4. 微服务架构

  为适应企业的业务发展,提高软件研发的生产力,降低软件研发的成本,软件架构也作了升级和优化,将一个独立的系统拆分成若干小的服务,每个小服务运行在不同的进程中,服务与服务之间采用http 轻量协议(比如流行的RESTful)传输数据,每个服务所拥有的功能具有独立性强、高内聚的特点,这样的设计就实现了单个服务的高内聚,服务与服务之间的低耦合效果,这一个一个的小服务就是微服务,基于这种方法设计的系统架构即微服务架构。

 
技术图片

4.1 特点
(1)将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。
(2)微服务遵循单一原则。
(3)微服务之间采用RESTful等轻量协议传输。

4.2 优点
(1)服务拆分粒度更细,有利于资源重复利用,提高开发效率。
(2)可以更加精准的制定每个服务的优化方案,提高系统可维护性。
(3)微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。
(4)适用于互联网时代,产品迭代周期更短。

4.3 缺点
(1)微服务过多,服务治理成本高,不利于系统维护。
(2)分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。

5. SOA架构和微服务架构的区别

  首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。

(1)SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。

(2)微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想

二、Spring Cloud知识介绍

1. 微服务的技术栈

 
技术图片

负载均衡,网关路由:高可用、集群部署,校验、请求转发、服务集成。
服务治理:服务注册、发现。
容错:避免雪崩。
监控跟踪:监控资源利用、服务响应、容器资源利用情况。
消息总线:消息队列、异步通信。
配置管理:统一配置管理。

2. Spring Cloud是什么

  Spring Cloud为开发人员构建微服务架构提供了完整的解决方案,SpringCloud是若干个框架的集合,它包括spring-cloud-config、spring-cloud-bus等近20个子项目,它提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。

3. Spring Cloud技术栈

微服务的兴起出现了很多优秀的公司和技术:
服务治理:Dubbo(阿里巴巴)、Dubbox(当当)、Eureka(Netflix)等 。
配置管理:Disconf(百度)、QConf(360)、Diamood(淘宝)等 。
服务跟踪:Hydra(京东)、Zipkin(Twitter)、Sleuth(Spring Cloud)等 。

Spring Cloud 提供一站式的微服务架构解决方案,如下图:

 
技术图片

4. 为什么使用Spring Cloud

  微服务架构的优点表明它可以提高我们的生产力,但是分布式系统本身的技术成本问题给互联网那些创业型公司不少的挑战,阿里、百度等巨头所提供的微服务技术只是解决其中某个问题,而整合封装这些优秀的技术恐怕是Spring最擅长的领域了,Spring Cloud也正因为此而诞生。
  使用Spring Cloud来构建微服务架构可以省去你整合各家技术的成本,Spring Cloud为我们构建微服务架构提供了一站式的解决方案,就好比当初Spring诞生是为解决EJB企业应用开发的众多问题而提供的一站式轻量级企业应用开发解决方案一样,随着使用Spring Cloud公司数量的增加,相信微服务将被Spring Cloud一统江湖。

5. 服务治理

5.1 什么是服务治理
  微服务架构的缺点中最主要的就是由于微服务数量众多导致维护成本巨大,服务治理为解决此问题而产生的。服务治理的作用是让维护人员从人工维护中解放出来,由服务自维护,微服务作为服务提供方主动向服务治理中心注册,服务的消费方通过服务治理中心查询需要的服务并进行调用。
如下图:

 
技术图片

5.2 Spring Cloud Eureka
  Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是服务注册中心,客户端完成服务的注册与发现。服务端和客户端均采用Java语言编写(Eureka支持多语言)。
  如下图显示了Eureka Server与Eureka Client的关系:

 
技术图片

5.3 架构

 
技术图片

5.4 实际项目流程图

 
技术图片

6. 负载均衡

6.1 什么是负载均衡
  负载均衡是微服务架构中必须使用的技术,通过负载均衡来实现系统的高可用、集群扩容等功能。负载均衡可通过硬件设备及软件来实现,硬件比如:F5、Array等 ,软件比如:LVS、Nginx等 。
如下图是负载均衡的架构图:

 
技术图片

  用户请求先到达负载均衡器(也相当于一个服务),负载均衡器根据负载均衡算法将请求转发到微服务。负载均衡算法有:轮训、随机、加权轮训、加权随机、地址哈希等方法,负载均衡器维护一份服务列表,根据负载均衡算法将请求转发到相应的微服务上,所以负载均衡可以为微服务集群分担请求,降低系统的压力。

6.2 Spring Cloud Ribbon
  Spring Cloud Ribbon是基于客户端的负载均衡工具,负载均衡分为服务端负载均衡和客户端负载均衡,3.1小节的图形指的是服务端负载均衡,客户端负载均衡与服务端负载均衡的区别在于客户端要维护一份服务列表,Ribbon从Eureka Server获取服务列表,Ribbon根据负载均衡算法直接请求到具体的微服务,中间省去了负载均衡服务。
  如下图是Ribbon负载均衡的流程图:

 
技术图片

(1)在消费微服务中使用Ribbon实现负载均衡,Ribbon先从Eureka Server中获取服务列表。
(2)Ribbon根据负载均衡的算法进行负载均衡,将请求转发到其它微服务。

6.3 实际项目流程图

 
技术图片

7. 容错保护

7.1 什么是容错保护
  容错保护是指微服务在执行过程中出现错误并从错误中恢复的能力。微服务容错性不好很容易导致雪崩效应,什么是雪崩效应?摘自百度百科中的定义:

 
技术图片

  微服务的雪崩效应表现在服务与服务之间调用,当其中一个服务无法提供服务可能导致其它服务也死掉,比如:单点登录服务调用用户信息服务查询用户信息,由于用户信息服务无法提供服务导致单点登录服务一直等待,从而导致用户登录、用户退出功能无法使用,像这样由一个服务所引起的一连串的多个服务无法提供服务即是微服务的雪崩效应。

7.2 Spring Cloud Hystrix
  Spring Cloud Hystrix 是基于Netflix的开源框架Hystrix的整合,它实现了断路器、线程隔离、信号隔离等容错功能。
  下图是Hystrix断路器示意图:

 
技术图片

8. 服务网关

8.1 什么是服务网关
  服务网关是在微服务前边设置一道屏障,请求先到服务网关,网关会对请求进行过虑、校验、路由等处理。有了服务网关可以提高微服务的安全性,校验不通过的请求将被拒绝访问。
  前边介绍的Ribbon客户端负载均衡技术可以不用经过网关,因为通常使用Ribbon完成微服务与微服务之间的内部调用,而对那些对外提供服务的微服务,比如:用户登录、提交订单等,则必须经过网关来保证微服务的安全。

8.2 Spring Cloud Zuul
  Spring Cloud Zuul是整合Netflix公司的Zuul开源项目实现的微服务网关,它实现了请求路由、负载均衡、校验过虑等 功能。

 
技术图片

8.3 实际项目的流程图

 
技术图片

三、参考资料下载

参考资料中包含了简单代码学习,有兴趣朋友可以下载:
链接:https://pan.baidu.com/s/1i1hrwqfUetwsY-AJT4RFPg
提取码:1mmc

四、参考文章

http://yun.itheima.com/course?hm

springcloud学习笔记总结(代码片段)

...动态路由7.Gateway之Predicate分类8.Gateway之Filter(GatewayFilter)9.SpringCloudConfig之分布式配置中心(介绍) 查看详情

springcloud学习笔记总结(代码片段)

文章目录1.OpenFeign之介绍2.OpenFeign之消费端的服务调用3.OpenFeign之超时控制4.OpenFeign之日志增强5.Hystrix之重要概念6.jmeter普通服务测试7.Hystrix之服务提供和服务消费环境搭建8.Hystrix之服务降级消费端和服务端9.Hystrix之全局服务降级&#... 查看详情

springcloud学习笔记总结(代码片段)

文章目录1.OpenFeign之介绍2.OpenFeign之消费端的服务调用3.OpenFeign之超时控制4.OpenFeign之日志增强5.Hystrix之重要概念6.jmeter普通服务测试7.Hystrix之服务提供和服务消费环境搭建8.Hystrix之服务降级消费端和服务端9.Hystrix之全局服务降级&#... 查看详情

微服务架构整理-(六springcloud实战之ribbon)

SpringCloud实战之Ribbon负责均衡介绍Ribbon概念Ribbon中的负载均衡算法Ribbon使用添加一个服务提供者添加Ribbon区别服务提供者访问服务提供者运行结果总结负责均衡介绍负载均衡分为硬件负载均衡和软件负载均衡。常用见的如下:... 查看详情

微服务架构springcloud组件和概念介绍

【微服务架构】SpringCloud组件和概念介绍(一)一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露... 查看详情

微服务架构springcloud组件和概念介绍

一:什么是微服务(Microservice)  微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,... 查看详情

微服务架构整理-(六springcloud实战之ribbon)(代码片段)

SpringCloud实战之Ribbon负责均衡介绍Ribbon概念Ribbon中的负载均衡算法Ribbon使用添加一个服务提供者添加Ribbon区别服务提供者访问服务提供者运行结果总结负责均衡介绍负载均衡分为硬件负载均衡和软件负载均衡。常用见的如下:... 查看详情

小白新手springcloud开发简单总结-springcloud概念(代码片段)

目录前言一几个常见概念1.集群2.分布式3.SOA4.微服务二SpringCloud1.SpringCloud之 Eureka(1)两个组件(2)治理机制(3)小结2.SpringCloud之RestTemplate(1)GET请求(2)POST请求3.Spr 查看详情

微服务架构springcloud组件和概念介绍

一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为... 查看详情

微服务架构springcloud之eureka(服务注册和服务发现基础篇)

上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用、原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon),Arc... 查看详情

java之springcloud微服务搭建(第一个阶段)springboot项目实现商品服务器端是调用(代码片段)

Java之SpringCloud微服务入门到精通Spring微服务快速入门(Eureka)一、Springcloud微服务概述1、微服务中的相关概念(1)服务注册与发现(2)负载均衡(3)熔断(4)链路追踪(5)API网关2... 查看详情

springcloud学习笔记总结(代码片段)

文章目录1.SpringCloudBus之消息总线介绍2.SpringCloudBus之搭建RabbitMQ3.SpringCloudBus之动态刷新全局广播的设计思想和选型4.SpringCloudBus之动态刷新全局广播配置实现5.SpringCloudStream之消息驱动介绍6.SpringCloudStream之设计思想7.SpringCloudStream之... 查看详情

springcloud学习笔记总结(代码片段)

文章目录1.SpringCloudBus之消息总线介绍2.SpringCloudBus之搭建RabbitMQ3.SpringCloudBus之动态刷新全局广播的设计思想和选型4.SpringCloudBus之动态刷新全局广播配置实现5.SpringCloudStream之消息驱动介绍6.SpringCloudStream之设计思想7.SpringCloudStream之... 查看详情

springcloud系列之eurekazookeeperconsul(代码片段)

SpringCloud系列(一)之Eureka、Zookeeper、Consul一、微服务架构介绍1.1架构的演变1.2SpringCloud介绍二、微服务架构业务场景2.1创建服务提供者(provider)工程2.2创建服务消费者(consumer)工程三、Eureka服务注册与发现3.1搭建注册中心3.... 查看详情

springcloud之ribbon,feign,hystrix,gateway介绍(代码片段)

一、Ribbon1.Ribbon概述Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具。Ribbon主要有两个功能:简化远程调用负载均衡服务端负载均衡负载均衡算法在服务端由负载均衡器维护服务地址列表客户端负载均衡负载均衡算... 查看详情

springcloud之服务调用(feign)

前言前一篇介绍了使用Ribbon的RestTemplate进行服务调用的使用方式。除了这种方式进行服务调用以外还可以通过Feign进行调用,本篇文章就是简单介绍一下如何使用Feign进行服务调用。根据前一篇文章所用项目进行修改。Feign使用流... 查看详情

[转帖]微服务框架springcloud介绍part2:springcloud与微服务

微服务框架SpringCloud介绍Part2:SpringCloud与微服务http://skaka.me/blog/2016/08/03/springcloud2/ AUG 3RD, 2016 10:09PM | COMMENTS之前介绍过微服务的概念与Finagle框架,这个系列介绍SpringCloud.SpringCloud还是 查看详情

springcloud之客户端负载平衡器:ribbon

...为应用程序开发人员(例如使用@FeignClient注释)的名称。SpringCloud使用R 查看详情