随着互联网的快速发展, 云计算近十年也获得蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今普遍流行的微服务架构。 微服务是一种架构风格, 能给软件应用开发带来很大的便利,可是微服务的实施和落地会面临很大的挑战, 所以须要一套完整的微服务解决方案。 在Java领域,Spring框架的出现给Java企业级软件开发带来 了福音, 提升了开发效率。 在2014年末,Spring团队推出Spring Cloud, 目标使其成为Java 领域微服务架构落地的标准,发展至今,Spring Cloud已经成为Java领域落地微服务架构的完整解决方案, 为企业IT架构变革保驾护航。
应用是可独立运行的程序代码, 提供相对完善的业务功能。 目前软件架构有三种架构类型, 分别是业务架构、应用架构、技术架构。 它们之间的关系是业务架构决定应用架构, 技术架构支撑应用架构。 架构的发展历程是从单体架构、分布式架构、SOA架构再到微服务架构。git
单体架构在Java领域能够理解为一个Java Web应用程序,包含表现层、业务层、数据访问层,从controller到service再到dao,就像一条单行道,从头一路走到底,没有任何业务的拆分,开发完毕以后就是一个超级大型的War包部署。简单的单体架构示例图以下:github
这种开发方式对于大型应用来讲很是复杂,也有“单体地狱”的称号。
咱们来讲说单体架构的优缺点:
单体架构的优势:spring
单体架构的缺点:数据库
分布式架构就是在传统的单体架构的基础上,按照业务垂直切分,每一个应用都是单体架构,经过API相互调用。缓存
分布式架构的优缺点:
优势:服务器
缺点:微信
SOA(Service-Oriented Architecture)是指面向服务的架构,面向服务的架构是一种软件体系结构, 其应用程序的不一样组件经过网络上的通讯协议向其余组件提供服务或消费服务,因此也是一种分布式架构。简单来讲,SOA是不一样业务创建不一样 的服务, 服务之间的数据交互粗粒度能够经过服务接口分级, 这样松散耦合提升服务的可重用性,也让业务逻辑变得可组合, 而且每一个服务能够根据使用状况作出合理的分布式部署,从而让服务变得规范,高性能,高可用。网络
SOA架构中有两个主要角色:服务提供者(Provider)和服务消费者(Consumer)。 阿里开源的Dubbo是SOA的典型实现。
SOA架构的优缺点:
优势:架构
缺点:框架
微服务架构在某种程度上是SOA架构继续发展的下一步,微服务的概念最先源千Martin Flower的《Microservice》。整体来说,微服务是一种架构风格,对于一个大型复杂的业务系统,它的业务功能能够拆分为多个相互独立的微服务,各个服务之间是松耦合的,经过各类远程协议进行同步/异步通讯,各微服务都可被独立部署、扩/缩容以及服务升/降级。
现今微服务架构十分火爆,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。支持微服务的技术栈也是多种多样。这里主要介绍两种实现微服务的解决方案:
基于Spring Cloud的微服务解决方案也有人称为“Spring系微服务”,Spring Cloud的技术选型是中立的,Spring Cloud框架提供微服务落地方案主要有如下三种:
基于阿里开源中间件Dubbo构建微服务解决方案有人也称为“阿里系微服务”,可是Dubbo将来的定位并非要成为一个微服务的全面解决方案,而是专一于RPC领域,成为微服务生态体系中的一个重要组件。至于微服务衍化出的服务治理需求,Dubbo正在积极适配开源解决方案,而且已经启动独立的开源项目予以支持,例如Nacos等。Nacos的定位是一个更易于帮助构建原生云应用的动态服务发现、配置和服务管理平台。所以,基于Dubbo的微服务解决方案是:Dubbo + Nacos + 其余组件。
中间件与操做系统、数据库并列为传统基础软件的三驾马车。其中,中间件也是难度极高的软件工程。传统中间件的概念,诞生于上一个 “分布式 ” 计算的年代,也就是小规模局域网中的服务器/客户端计算模式,在操做系统之上、应用软件之下的 "中间层“ 软件。
随着互联网的快速发展,以及云计算的出现, 企业的IT架构正在发生深入的变革。在这个过程当中,软件向大规模互联网云服务演化,不管是操做系统仍是数据库都发生了深入的变化,中间件也在这个过程不断演进和扩大本身的边界。中间件向下屏蔽异构的硬件、软件、网络等计算资源,向上提供应用开发、运行、维护等全生命周期的统一计算环境与管理,属千承上启下的中间链接层,对企业来讲有着极其重要的价值。中间件本质上能够归属为技术架构 ,常见的中间件分别是服务治理中间件(例如: Dubbo 等RP C框架)、配置中心、全链路监控、分布式事务、分布式定时任务、消息中间件、API网关、分布式缓存、数据库中间 件等。
Spring Cloud也是一个中间件。它目前由Spring官方开发维护,基于Spring Boot开发,提供一套完整的微服务解决方案。包括服务注册与发现、配置中心、全链路监控、API网关、熔断器等选型中立的开源组件,能够随需扩展和替换组装。Spring Cloud项目自从推出以来,到目前为止一直在高速迭代。Spring Cloud技术团队于2018年6月19日发布了Spring Cloud的重大里程碑Finchley版本。
Spring Cloud是一个开源项目集合,包括不少子项目。具体项目能够在GitHub上查看.由于 Spring Cloud的子项目居多, 每一个子项目有本身的版本号,为了对Spring Cloud总体进行版本编号,肯定一个可用千生产上的版本标识。这些版本采用伦敦地铁站的名字,按名称首字母排序, 好比Dalston版,Edgware版,Finchley。可是咱们通常都会简称为 D版、E版、F版等。
如下是Spring Cloud部分组件列表:
我的微信公众号,欢迎一块儿讨论: