Spring与微服务
微服务的理念
在微服务的概念逐步形成之前,绝大部分基于Web的应用都是使用单体架构的风格来进行构建的。在单体架构中,应用程序作为单个可部署的软件制品交付,所有的UI,业务,数据库访问等逻辑程序都被打包在一个应用程序中并部署在一个应用程序服务器上。
虽然应用程序可能是作为单个工作单元部署,但大多数情况下,会有多个开发团队开发这个应用程序。每个开发团队负责应用程序的不同部分,随着开发进度的增加,每当各个团队需要修改代码时,整个应用程序都需要重新构建,重新测试,重新部署。
而微服务正是对技术上和组织上扩大大型单体应用程序所面临的诸多挑战的直接回应。微服务是一个小的,松耦合的分布式服务。微服务允许将一个大型的应用分解为具有严格职责定义的鳊鱼管理的组件。微服务通过将大型代码分解为小型的精确定义的部分,帮助解决大型代码中传统的复杂问题。在思考微服务时,一个需要信奉的重要概念就是:分解和分离应用程序的功能,使它们完全彼此独立。
微服务架构具有以下特征
* 应用程序逻辑分解为具有明确定义来职责范围的细粒度组件,这些组件互相协调提供解决方案。
* 每个组件都有一个小的职责领域,并且完全独立部署。微服务应该对业务领域的单个部分负责。此外,一个微服务应该可以跨多个应用程序复用。
* 微服务通信基于一些基本的原则,并采用HTTP和JSON这样的轻量级通信协议,在服务消费者和服务提供者之间进行数据交换。
* 服务的底层采用什么技术实现并没有什么影响,因为应用程序始终使用技术中立的协议进行通信。这意味着构建在微服务之上的应用程序能够使用多种编程语言和技术进行构建。
* 微服务利用其小,独立和分布式的性质,使组织拥有明确责任领域的小型开发团队。
Spring框架
在构建基于云的应用时,微服务已经成为更常见的架构模式之一,因此Spring社区为开发者提供了SpringBoot和SpringCloud,SpringCloud框架使实施和部署微服务到私有云或公有云变得更加简单。SpringCloud在一个公共框架之下封装了多个流行的云管理微服务框架,并且让这些技术的使用和部署像为代码添加注释一个简便。
SpringBoot是对Spring框架理念重新思考的结果,提供了一个基于Java的,面向REST的微服务框架,只需要一些简单的注解,Java开发者就能够快速构建一个可打包部署的REST微服务。