SpringCloud
首先贴一本书:百度云 可通过此书学习。
1.微服务与springcloud
目前软件有三种架构类型:单体,分布式架构,SOA架构。
单体架构
单体:一个Web程序,包含了业务层,表现层,数据访问层,没有任何应用的拆分,开发完毕后成为一个超级大型的war项目。
优点:
易于开发:开发人员使用当前开发工具就可在段时间内开发应用。
易于测试:无需依赖其他接口,可以节约很多时间。
易于部署:只需将项目部署在本地环境即可 。
缺点:
灵活度不强:如果程序有任何的修改,修改的不只是一个点,而是自上而下的修改。测试时必须等到整个程序部署完之后,才能看得出效果,在开发过程可能需要等待其他开发人员完成后才可部署,降低了团队灵活性。
降低系统性能:原本可以直接访问,又增加了一层,即使只包含一个功能,也需要在各个层上写代码。
系统启动慢:一个进程包含了所有的业务逻辑,涉及过多,启动时间延长。
系统扩展性差:对程序进行操作时,牵一发而动全身。
分布式架构
简单来说,按照业务垂直切分,每个应用都是单体架构,通过API来进行相互调用。
面向服务的SOA架构
面向服务的架构是一种软件体系结构,其应用程序的不通 组件通过网络上的通信协议向其他组件提供服务或消费服务,
所以也是一种分布式结构。简单来说,SOA是不同业务建立不同的服务,服务之间的数据交互粗粒度可以通过服务接口
分级,这样松散的耦合提高服务的可重用性,也让业务逻辑变得可组合,并且每个服务可以根据使用情况做出合理的分
布式布置,从而让服务变得规范,高性能,高可用。
SOA架构中有两个主要角色,服务提供者和服务消费者,阿里开源的dubbo就是SOA的典型实现。
优点:
把模块拆分,使用接口通信,降低模块之间的耦合度,把项目拆分成若干个子项目,不同团队负责不同的子项目。
增加功能时只需要增加一个子项目,调用其他系统的接口即可,灵活的使用分布式架构。
缺点:
系统之间的交互需要使用远程通信,接口开发增加工作量。
微服务架构
微服务架构在某种成都下算是SOA架构的更进一步,微服务架构算是一种架构风格,对一个大型复杂的业务系统,
它的业务功能可以拆分为多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步,各
均可以被独立部署,扩/缩容,升/降级。
对比:
Springcloud就是一个微服务架构的一种解决方案。
Springcloud也是一个中间件。它目前由Spring官方开发维护,基于Spring boot开发,提供一套完整的微服务解决方案。包括服务注册与发现、配置中心、全链路监控、API网关、熔断器等选型中立的开源组件,可以随需扩展和替换组装。
如果所示:
当然我们也有基于dubbo的解决方案。即,2012年,阿里巴巴在GitHub上开源了基于Java分布式服务治理框架Dubbo,但是Dubbo未来的定义并不是要成为一个微服务的全面解决方案,而是专注于RPC领域,成为微服务生态体系中的一个重要组件。致郁微服务化衍生出的服务治理需求,Dubbo正则积极匹配开源解决方案,并且已经启动的开源项目予以支持,比如最近宣布的开源的Nacos。Nacos的定义是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理凭条。因此基于Dubbo的解决方案是:Dubbo+Nacos+其他。
我们所用到的Spring Cloud版本通常是F版本,它的版本以伦敦地铁站来命名。如果问你Spring Boot 和 Spring Cloud 有什么关系?其实没什么关系,但是Spring Cloud 基于Spring Boot
再次强调一遍:Springcloud就是一个微服务架构的一种解决方案。
它提供了一系列的组件:
这是对于一个Spirng Cloud基本介绍,实例以及更深入了解请看开头的书。