简单聊聊微服务及SpringCloud

Spring、SpringMVC、Spring Boot、Spring Cloud 概念

  • Spring主要是基于IOC反转Beans管理Bean类,Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作);
  • SpringMVC是基于Spring的一个MVC框架,用以替代初期的SSH框架;
    (spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能)。
  • Spring Boot是基于Spring4的条件注册的一套快速开发整合包;
  • Spring Cloud是一系列框架的有序集合。
    它利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线线、负载均衠、断路器、数据监控等, 都可以用 Spring Boot的开发风格做到一键启动和部署。

Spring、SpringMVC、Spring Boot、Spring Cloud 关系

  • Spring : 利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件;
  • SpringMVC:基于Spring的一个 MVC 框架,用于开发 web 应用( SpringMVC );
  • Spring boot::对第三方技术进行了很好的封装和整合,提供了大量第三方接口;可以通过依赖自动配置,不需要XML等配置文件;
  • Spring Cloud:利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,是一系列框架的有序集合;

深入解读Spring Cloud与 Spring Boot的概念与关系

什么是 Spring Boot

Spring Boot简化了基于 Spring的应用开发, 通过少量的代码就能创建一个独立的、产品级別的Spring应用。
Spring Boot为 Spring平台及第三方库提供开箱即用的设置, 这样你就可以有条不素地开始。多数 SpringBoot应用只需要很少的 Spring配置。
Spring Boot是由 Pivotal团队提供的全新框架, 其设计目的是用来简化新 Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置, 从而使开发人员不再需要定义样板化的配置。
Spring Boot的核心思想就是约定大于配置,一切自动完成。
采用 Spring Boot可以大大的简化你的开发模式, 所有你想集成的常用框架, 它都有对应的组件支持。

什么是Spring Cloud

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

微服务是可以独立部署、水平扩展、独立访问 (或者有独立的数据库) 的服务单元, Spring Cloud就是这些微服务的大管家, 采用了微服务这种架构之后, 项目的数量会非常多, Spring Cloud做为大管家就需要提供各种方案来维护整个生态。

Spring Cloud就是一套分布式服务治理的框架, 既然它是一套服务治理的框架, 那么它本身不会提供具体功能性的操作, 更专注于服务之间的通讯、熔断、监控等。因此就需要很多的组件来支持一套功能。

Spring Boot和Spring Cloud的关系

Spring-> Spring Boot> Spring Cloud这样的关系

  • Spring Boot是 Spring的一套快速配置脚手架, 可以基于 Spring Boot快速开发单个微服务;
  • SpringCloud是一个基于 Spring Boot实现的云应用开发工具;
  • Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
  • Spring Boot使用了默认大于配置的理念, 很多集成方案已经帮你选择好了, 能不配置就不配置;
  • Spring Cloud很大的一部分是基于 Spring Boot来实现, 可以不基于 Spring Boot吗?不可以。
  • Spring Boot可以离开 Spring Cloud独立使用开发项目, 但是 Spring Cloud离不开 Spring Boot,属于依赖的关系

什么是单块架构?

功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,我们通常称之为单块架构应用;
在这里插入图片描述

单块架构的优缺点

在这里插入图片描述

如何将单块架构转为微服务架构

基于SOA模型做开发。

什么是SOA?

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

微服务架构的设计原则?

  • 拆分足够微
    微服务:跨域、跨进程、跨主机;
  • 轻量级通信
  • 领域驱动原则
    领域驱动设计:服务要能反映业务领域模型;
    要避免开发团队不理解需求上手就干,例如:做金融系统要对金融方面有些概念、知识背景,做物流系统要对物流有些背景知识了解,要和领域专家(业务专家)无论在功能还是通用语言上都能达成共识;
    开发要能听懂业务名词;
  • 单一职责原则
  • 不限于技术栈
    注:不限于技术栈,不代表滥用技术;

如何进行微服务的拆分?

  • 易于实现
  • 易于维护
  • 易于部署
  • 易于更新
  • 正向的反馈闭环
  • 在这里插入图片描述

微服务拆分的方法

1、横向拆分

在这里插入图片描述

2、纵向拆分

类似于package;
在这里插入图片描述

3、使用DDD

领域驱动设计

微服务系统设计

服务拆分
服务注册
服务发现
服务消费
统一入口
配置管理
熔断机制
自动扩展

SpringCloud子项目有哪些

在这里插入图片描述

Spring Cloud Config

服务配置中心,将所有的服务的配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。
Spring Cloud Config使得服务的配置统一管理,并可以在不人为重启服务的情况下进行配置文件的刷新。

Spring Cloud Netflix

它是通过包装了Netflix公司的微服务组件实现的,也是Spring Cloud核心组件,包括Eureka,Hystrix,Zuul,Archaius。

Eureka

服务注册和发现组件

Hystrix

熔断器组件。
它通过控制服务的API接口的熔断来转移故障,防止微服务系统发生雪崩效应。
另外Hystrix能够起到服务限流和服务降级的作用。
使用Hystrix Dashboard组件监控单个服务的熔断状态,使用Hystrix Turbine组件可以监控多个服务的熔断器的状态。

Zuul

智能路由网关组件。
能够起到智能路由和请求过滤的作用,内部服务API接口通过Zuul网关统一对外暴露,防止内部服务敏感信息对外暴露。也可以实现安全验证,权限控制。

Feign

声明式远程调度组件。
feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。
Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。
注:feign底层是使用了ribbon作为负载均衡的客户端

Ribbon

负载均衡组件

Archaius

配置管理API组件,一个基于Java的配置管理库,主要用于多配置的动态获取。

Spring Cloud Bus

消息总线组件,常和Spring Cloud Config配合使用,用于动态刷新服务的配置

Spring Cloud Sleuth

服务链路追踪组件,封装了Dapper,Zipkin,Kibina等组件,可以实时监控服务链路调用状况。

Spring Cloud Data Flow

大数据操作组件,它是Spring XD的替代品,也是一个混合计算模型,可以通过命令行的方式操作数据流

Spring Cloud Consul

该组件是Spring Cloud对Consul的封装,和Eureka类似,它是一个服务注册和发现组件。

Spring Cloud Zookeeper

该组件是Spring Cloud对Zookeeper的封装,也是用于服务注册和发现

Spring Cloud Stream

数据流操作组件,可以封装 Redis,RabbitMQ,Kafka等组件,实现消息的接受和发送。

Spring Cloud CLI

该组件是对Spring Boot CLI的封装,可以让用户以命令行方式快速搭建和运行容器。

Spring Cloud Task

该组件基于Spring Tsak,提供任务调度和任务管理的功能。

从事SSM开发的人入门SpringCloud必学的组件/技术栈

自己工作的3年内主要做SSM框架的开发,接触了微服务后,发现从SSM到SSM+微服务必须学习的技术点主要有以下几个方面。

SpringCloud

在这里插入图片描述

Docker

个人学习感受和建议

学习、应用SpringCloud的过程给我的整体感受和SpringBoot类似,入门简单,所以刚开始学习难度并不大,有过1~2年SSM架构开发经验的人,可以快速入门,入门后可以结合自身所参与的项目,进行专项的深度学习;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值