微服务架构概述

1.1微服务架构概述

1.1.1应用架构的发展

    应用是可独立运行的程序代码,提供相对完善的业务功能。目前软件架构有三种架构类型,分别是业务架构、应用架构、技术架构。他们之间的关系是业务架构决定应用架构,技术架构支撑应用架构。架构的发展历程是从单体架构、分布式架构、SOA架构再到微服务架构,如图1-1所示。

 

  1. 单体应用架构

单体架构在Java领域可以理解为一个Java Web应用程序,包含表现层、业务层、数据访问层。从Controller到Service再到Dao层,“一杆子捅到底”,没有任何的应用拆分,开发完毕之后就成为一个超级大型的War部署。简单的单体架构水平分层逻辑如图1-2所示。

uploading.4e448015.gif正在上传…重新上传取消

 

单体架构的优点:

  1. 易于开发:开发人员使用当前开发工具在段时间内就可以开发出单体应用。
  2. 易于测试:测试不需要其他接口,测试可以节约很多时间。
  3. 易于部署:只需要将项目部署到运行环境中即可。

单体架构优点:

  1. 灵活度不够:修改程序,修改的不仅仅是一个点,而是从上而下地去修改,测试时必须等到整个程序部署完成后才能看出效果。在开发过程可能需要等待其他开发人员开发完成后才能完成部署,降低团队的灵活性。
  2. 降低系统的性能:原本可以直接访问数据库但是现在多了一层。即使是只包含一个功能点,也需要在各个层上写代码。
  3. 系统启动慢:涉及的启动的模块过多,导致系统的启动较慢。
  4. 系统扩展性差:增加新东西的时候,不能针对性的对单个点增加,要全局性地增加,牵一发而动全身。
  1. 分布式架构

分布式架构:简单来说,按照业务垂直切分,每个应用都是单体架构,通过API互相调用,如图1-3所示。

 

  1. 面向服务的SOA架构

面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务或者消费,所以也是一种分布式架构。SOA是不同的业务建立不同的服务,服务之间的数据交互粗粒度可以通过服务接口分级,这样松散耦合提高服务的可重用性,也让业务逻辑变得可组合,并且每个服务都可以根据使用情况做到合理的分布式部署,从而让服务变得规范,高性能,高可用。

SOA架构中有两个主要角色:服务提供者(Provider)和服务消费者(Consumer)。阿里开源的是Dubbo是典型的实现。

SOA架构的优点:

  1. 模块拆分,使用接口通信,降低模块之间的耦合度。
  2. 项目拆分成若干个子项目,不同的团队负责不同的子项目。
  3. 增加一个功能只需要增加一个子项目,调用其他系统的接口即可。
  4. 可以灵活地分布式部署。

       SOA架构的缺点:系统之间的交互需要使用远程通信,接口开发增加工作量。

1.1.2 微服务架构

微服务架构在某种程度上是SOA架构继续发展的下一步。总体来说,微服务是一种架构风格,对于大型复杂的业务系统,它的业务功能可以拆分成多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步/异步通信,各个微服务可以被独立部署、扩/缩容以及升/降级。下面对微服务技术选型做了对比。

 

1.1.3 微服务解决方案

       现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时支持微服务的技术栈也是多种多样。下面介绍两种实现微服务的解决方案。

  1. 基于Spring cloud的微服务解决方案

Spring cloud的技术选型是中立的,因此可以随意更换搭配使用,基于Spring cloud 的微服务落地解决方案可以分为三种。

 

 

 

  1. 基于Dubbo实现微服务解决方案

2012年,阿里在github上开源了基于Java的分布式服务治理框架Dubbo,但是Dubbo未来的定位并不是要成为一个微服务的全面解决方案,而是专注于RPC领域,成为微服务生态体系中的一个重要组件。至于微服务化衍生出的服务治理需求,Dubbo正在积极适配开源解决方案,并且已启动独立的开源项目予以支持,比如,Nacos是一个帮助构建云原生应用的动态服务发现、配置和服务管理平台。因此,基于Dubbo的微服务解决方案是:Dubbo+Nacos+其他。

1.2 Spring cloud与中间件

1.2.1 中间件概述

中间件、操作系统、数据库并列为传统基础软件的三驾马车。其中,中间件也是难度极高的软件工程。传统中间件的概念,是小规模局域网中的服务器/客户端计算模式,在操作系统之上、应用软件之下的“中间层”软件。

随着互联网的快速发展,以及云计算的发展,软件向大规模互联网云服务演化,无论是操作系统还是数据库都已经发生了深刻的变化,中间件也在这个过程不断演进和扩大自己的边界。中间件向下屏蔽异构的硬件、软件、网络等计算资源,向上提供应用开发、运行、维护等全生命周期的统一计算环境与管理,属于承上启下的中间连接层,对企业来说有着极其重要的价值。中间本质上可以归属为技术架构,常见的中间件分别是服务治理中间件、配置中心、全链路监控、分布式事务、分布式定时任务、消息中间件、API网关、分布式缓存、数据库中间件等。

1.2.2 Spring cloud

根据前面提到的中间件,Spring cloud 也是一个中间件。它目前由Spring 官方开发维护,基于Spring boot开发,提供一套完整的微服务解决方案。包括服务注册与发现、配置中心、全链路监控、API网关、熔断器等选型中立的开源组件,可以随需扩展和替换组装。

该文档依据的是Spring Cloud 的Finchley版本。Spring cloud 的GitHub地址:https://github.com/spring-cloud。SpringCloud 的主要组件汇总如下表1-3所示,Spring cloud 的版本采用伦敦地铁站的名字,按照首字母排序,比如Dalston版,Edgware版,Finchley。我们会简称D版、E版、F版

   

 

下面的将会讲解Spring cloud的各个组件,请持续关注!!!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值