目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式。
1.单体架构
单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用。
假设你正准备开发一款与Uber和Hailo竞争的出租车调度软件,经过初步会议和需求分析,你可能会手动或者使用基于Spring Boot、Play或者Maven的生成器开始这个新项目,它的六边形架构是模块化的,架构图如下:

? 应用核心是业务逻辑,由定义服务、域对象和事件的模块完成。围绕着核心的是与外界打交道的适配器。适配器包括数据库访问组件、生产和处理消息的消息组件,以及提供API或者UI访问支持的web模块等。
? 尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用。具体的格式依赖于应用语言和框架。例如,许多Java应用会被打包为WAR格式,部署在Tomcat或者Jetty上,而另外一些Java应用会被打包成自包含的JAR格式,同样,Rails和Node.js会被打包成层级目录。
? 这种应用开发风格很常见,因为IDE和其它工具都擅长开发一个简单应用,这类应用也很易于调试,只需要简单运行此应用,用Selenium链接UI就可以完成端到端测试。单体式应用也易于部署,只需要把打包应用拷贝到服务器端,通过在负载均衡器后端运行多个拷贝就可以轻松实现应用扩展。在早期这类应用运行的很好。
2.	单体架构存在的问题
 

3.	什么是微服务?
 

 
4.	微服务架构的特征

 
5.	微服务架构示例
 

6.	SpringCloud简介
1.SpringCloud子项目
| 
 Component  | 
 Camden.SR7  | 
 Dalston.SR3  | 
 Edgware.M1  | 
 Finchley.M2  | 
 Finchley.BUILD-SNAPSHOT  | 
 备注  | 
| 
 spring-cloud-aws  | 
 1.1.4.RELEASE  | 
 1.2.1.RELEASE  | 
 1.2.1.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 用于简化整合AmazonWebService的组件  | 
| 
 spring-cloud-bus  | 
 1.2.2.RELEASE  | 
 1.3.1.RELEASE  | 
 1.3.1.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 事件、消息总线,用于传播集群中的状态变化或事件。  | 
| 
 spring-cloud-cli  | 
 1.2.4.RELEASE  | 
 1.3.4.RELEASE  | 
 1.4.0.M1  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 用于在Groovy平台创建SpringCloud应用。  | 
| 
 spring-cloud-commons  | 
 1.1.9.RELEASE  | 
 1.2.3.RELEASE  | 
 1.3.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 服务发现、负载均衡、熔断机制这种模式为Spring Cloud客户端提供了一个通用的抽象层。  | 
| 
 spring-cloud-contract  | 
 1.0.5.RELEASE  | 
 1.1.3.RELEASE  | 
 1.2.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 
  | 
| 
 spring-cloud-config  | 
 1.2.3.RELEASE  | 
 1.3.2.RELEASE  | 
 1.4.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 配置管理工具,支持使用git、svn等存储配置文件。并在支持客户端配置信息的刷新,加密解密配置内容等。  | 
| 
 spring-cloud-netflix  | 
 1.2.7.RELEASE  | 
 1.3.4.RELEASE  | 
 1.4.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 核心组件,对多个NetflixOSS开源套件进行整合。  | 
| 
 spring-cloud-security  | 
 1.1.4.RELEASE  | 
 1.2.1.RELEASE  | 
 1.2.1.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 安全工具包。  | 
| 
 spring-cloud-cloudfoundry  | 
 1.0.1.RELEASE  | 
 1.1.0.RELEASE  | 
 1.1.0.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 整合Pivotal Cloudfoundry(Vmware推出的业界第一个开源PaaS云平台)支持。  | 
| 
 spring-cloud-consul  | 
 1.1.4.RELEASE  | 
 1.2.1.RELEASE  | 
 1.2.1.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 服务发现与配置管理工具  | 
| 
 spring-cloud-sleuth  | 
 1.1.3.RELEASE  | 
 1.2.4.RELEASE  | 
 1.3.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 Spring Cloud应用的分布式跟踪实现。  | 
| 
 spring-cloud-stream  | 
 Brooklyn.SR3  | 
 Chelsea.SR2  | 
 Ditmars.M2  | 
 Elmhurst.M1  | 
 Elmhurst.BUILD-SNAPSHOT  | 
 通过Redis、RabbitMQ、Kafka实现的消息微服务。  | 
| 
 spring-cloud-zookeeper  | 
 1.0.4.RELEASE  | 
 1.1.2.RELEASE  | 
 1.2.0.M1  | 
 2.0.0.M1  | 
 2.0.0.BUILD-SNAPSHOT  | 
 基于ZooKeeper的服务发现与配置管理组件。  | 
| 
 spring-boot  | 
 1.4.5.RELEASE  | 
 1.5.4.RELEASE  | 
 1.5.6.RELEASE  | 
 2.0.0.M3  | 
 2.0.0.M3  | 
 
  | 
| 
 spring-cloud-task  | 
 1.0.3.RELEASE  | 
 1.1.2.RELEASE  | 
 1.2.0.RELEASE  | 
 2.0.0.M1  | 
 2.0.0.RELEASE  | 
 用于快速构建数据处理的应用。  | 
| 
 spring-cloud-vault  | 
 
  | 
 1.0.2.RELEASE  | 
 1.1.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 
  | 
| 
 spring-cloud-gateway  | 
 
  | 
 
  | 
 1.0.0.M1  | 
 2.0.0.M2  | 
 2.0.0.BUILD-SNAPSHOT  | 
 SpringCloud网关相关的整合实现。  | 
2. 版本说明
 



3. SpringCloud框架特点
 
7.和springboot的关系
Spring boot 是 Spring 的一套快速配置脚手架,可以基于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 -> spring booot > spring cloud 这样的关系。
8.springCloud的优势
微服务的框架那么多比如:dubbo,为什么就要使用Spring Cloud的呢?
原文:http://www.cnblogs.com/mr-wuxiansheng/p/7749502.html