微服务Spring Cloud--架构演变

架构演变--微服务Spring Cloud

    • 架构的演变
    • 什么是微服务
    • 微服务特点
    • SOA和微服务架构的区别
    • 为什么用Spring Cloud
    • 什么是Spring Cloud
    • Spring Cloud 与dubbo
    • 什么是Spring Boot
    • Spring Boot和Spring Cloud的关系

架构的演变

单体架构, 垂直应用架构, 面向服务架构(SOA),微服务架构,详情见下方博客

https://blog.csdn.net/zach_king/article/details/80137282

什么是微服务

微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”。

  1. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
  2. 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

关键字: 一种思想,业务,粒度小,独立. 通信.

微服务特点

  1. 复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率.
  2. 独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
  3. 技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
  4. 容错(fault isolation):当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
  5. 扩展:每个服务可以各自进行 负载均衡服务器扩展和 数据库扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

简单来说: 还是围绕粒度小,独立来说的, 这两点可以充分体现以上5点.

SOA和微服务架构的区别

  • 彻底组件化和服务化: 微服务架构强调彻底组件化和服务化,一个组件就是一个产品,可以独立对外提供服务.

  • 去企业服务总线: 微服务不再强调传统SOA架构里面比较中的ESB企业服务总线

  • 独立: 微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。

  • 通信: 微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用HTTP Rest API的方式来进行

  • 粒度小: 微服务的切分粒度会更小

为什么用Spring Cloud

  • 来源于Spring: 质量,稳定性,持续性都可以得到保证
  • 支持Spring Boot:更加便于业务落地.
  • 发展快: 版本更新快
  • 微服务: Java领域最适合做微服务的框架.
  • 支持面广: 对微服务周边环境的支持力度最大.
  • 门槛低

什么是Spring Cloud

  1. Spring Cloud 为开发人员提供了快速构建分布式系统的一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,负载均衡,
    分布式会话,群集状态),分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速支持实现这些模式的服务和应用程序;
  2. 他们将在任何分布式环境中运行良好, 包括开发人员的笔记本电脑,裸机数据中心及Cloud Foundry等托管平台.

特性

Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展机制,覆盖;

  • 分布式或版本话配置
  • 服务化注册和发现
  • 路由
  • service - to - service调用
  • 负载均衡
  • 断路器
  • 分布式消息

Spring Cloud采用非常声明的方法,通常指需要改类路径或注解即可获得许多功能,示例:客户端发现的应用程序:

@SpringBootApplicatioin
@EnableDiscoveryClient
public class Application{
		public static void main(String[] args){
				SpringApplication.run(Application.class, args);
		}
}

Spring Cloud 与dubbo

微服务Spring Cloud--架构演变_第1张图片
微服务Spring Cloud--架构演变_第2张图片
Dubbo 专注 RPC 和服务治理,Spring Cloud 则是一个微服务架构生态。

什么是Spring Boot

  1. Spring Boot是Spring项目中的子工程,与Spring-framework 同属Spring
    的产品.由Pivotoal团队提供.
  2. Spring Boot可以轻松创建独立的,生产级的基于Spring的你可以运行的应用程序.
    用一些固定的方式构建生产级别的Spring应用.Spring Boot 推崇约定大于配置方式便于能够尽可能快速启动并运行程序. 默认了很多框架的使用方式.

扩展:

Spring Boot称为搭建程序的"脚手架",最主要作用帮我们快速构建庞大的spring项目,尽可能减少一切xml配置, 做到开箱即用,迅速上手,让我们关注与业务而非配置.

关键字: 脚手架, 约定大于配置, 自动.

Spring Boot和Spring Cloud的关系

  • 基于Spring Boot 快速开发单个微服务,Spring Cloud 是一个基于Spring Boot实现的云应用开发工具;
  • Spring Boot专注于快速,方便集成单个微服务个体, Spring Cloud关注全局服务治理框架;
  • Spring Boot使用约定大于配置理念, 很多集成方案已选好, 能不配置就不配置, Spring Cloud很大一部分是基于Spring Boot实现. 必须基于Spring Boot.

简单来说: Spring Boot可以离开Spring Cloud独立使用开发项目, 但Spring Cloud离不开Spring Boot,属于依赖关系.

你可能感兴趣的:(微服务Spring,Cloud)