您的位置:首页 > 编程语言 > Java开发

Spring Cloud(0)什么是微服务架构

2020-05-31 18:48 926 查看

文章目录

  • Spring Cloud

  • 要了解微服务,先来简单的了解下架构的演变。

    单体架构

    单体软件结构是基于面向对象的设计方法而来,单体意味着项目中的所有的代码会写在一个工程里,整个项目只需要一台机器就可以部署。
    单体架构开发简单,部署便捷。但是当前以互联网业务为主流的系统,用户量多、流量大、并发高单台机器难以承受大量的请求和流量。
    单体分层结构如下:

    面向服务软件体系结构

    面向服务软件体系结构是一种分布式的软件架构,提倡以拆分业务的思想来分解单体架构的复杂度。服务之间是独立运行的,相互之间没有关联,通过统一定义的服务接口进行通信。
    面向服务软件架构业务调用流程如下:

    微服务软件体系结构

    微服务是一个种架构风格。微服务体系结构的思想提倡将大型软件拆分成一个个微小的服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。被拆分的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立的部署机制。由于有了轻量级的通信协作基础,所以微服务可以使用不同的语言来编写。

    软件体系结构进化方式如下:

    微服务体系结构基本特征

    • 服务单一职责
    • 独立部署
    • 业务数据独立
    • 轻量级通信

    微服务体系结构优点

    微服务构建的系统属于分布式系统,其具有分布式系统所带来的好处,同时微服务也致力于解决分布式系统所带来的负担,简化分布式开发流程的复杂度,微服务具有一系列优点。

    • 技术异构性
    • 可伸缩性
    • 业务可扩展
    • 可重用
    • 简化组织结构

    微服务的总体结构

    软件架构一般包含构件、连接器和任务工作流程三个元素,微服务架构同样也包含这些基本元素。对于微服务来说,构件就是拆分出来的一些原子服务、数据存储、表示层客户端以及支撑这些服务的基础设施;微服务的连接器就是服务间通信的方式;对于任务工作流程,微服务是去中心化的架构,采用网关和业务服务来编排业务流程。
    微服务逻辑架构如下:

    微服务划分方法

    微服务通过将大的系统分解为小的服务拆解复杂度,服务划分需要根据业务来进行划分,依据具体的业务来划分界限上下文,确定业务边界。任何业务都可以看成是一个领域,一个领域包含多个上下文,大的领域还可以划分出小的领域。
    微服务领域划分如下:

    微服务总体设计

    根据微服务的体系结构设计,对微服务抽象出一个简单的模型,包含以基础业务为核心构建的基础服务、存储基础服务的数据的存储服务、以组合业务流程步骤为核心的业务服务和作为客户端和后台服务通信中介的API网关组件。
    微服务总体架构模型:

    微服务开发框架

    1. Spring Cloud是一款基于Spring Boot的微服务框架。
      Spring Boot基于Spring以“约定大于配置”的理念对spring进行了包装,大大简化了项目的开发,使得采用此框架的项目既可以享受java语言的静态编译的好处,又可以享受接近于动态语言快速开发的好处。 Spring Cloud配置简单,功能丰富,是一站式解决方案,是一些中小型开发团队首选框架。
    2. Dubbo是一款阿里巴巴开源的微服务框架。
      主要面向技术栈为java的微服务项目,同时也是一款高性能的RPC框架,集成了很多服务治理的功能,包括服务注册与发现、服务集群容错、服务监控、负载均衡和路由等功能。

    Spring Cloud

    Spring Cloud是一款基于Spring Boot的微服务框架。Spring Cloud包含多个子项目,如下。

    • Spring Cloud Config:配置管理工具
    • Spring Cloud Netflix:核心组件 Eureka:服务治理组件
    • Hystrix:容错管理组件
    • Ribbon:客户端负载均衡的服务调用组件
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件
    • Zuul:网关组件,提供智能路由、访问过滤等功能
    • Archaius:外部化配置组件
  • Spring Cloud Bus:事件、消息总线
  • Spring Cloud Cluster:针对Zookeeper、Redis、Hazelcast、Consul的选举算法和通用状态模式的实现。
  • Spring Cloud Security:安全工具包

  • Spring Cloud 的版本要与Spring Boot的版本对应,就像Spring Boot需要依赖对应的Spring Framework版本一样,Spring Cloud需要依赖对应版本的Spring Boot,不能随便使用版本。
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: