微服务架构具有以下特征
- 应用程序逻辑分解为具有明确定义了职责范围的细粒度组件,这些组件相互协调提供解决方案
- 每个组件都有一个小的职责领域,并且完全独立部署。微服务应该对业务领域的单个部分负责。此外,一个微服务应该可以跨多个应用程序服用
- 微服务通信基于一些剧本的原则(注意是原则不是标准),并采用HTTP和JSON这样的轻量级通信协议,在服务消费者和服务提供者之间进行数据交换
- 服务的底层采用什么技术实现并没有什么影响,因为应用程序始终使用技术中立的协议(JSON是最常见的)进行通信。这意味着构建在微服务上的应用程序能够使用多种编程语言和技术进行构建。
- 微服务利用其小,独立和分布式的性质,是的组织拥有明确职责领域的小型开发团队。这些团队可能为同一个目标工作
Spring Boot、Spring Cloud和Spring
- Spring Boot是对Spring框架理念重新思考的结果。Spring Boot包含了Spring的核心特性,但它玻璃了Spring中许多企业特性,而提供了一个基于JAVA的、面向REST的微服务框架。只需要一些简单的注解,Java开发者就能够快速构建一个可打包和部署的REST微服务,这个微服务并不需要外部的应用程序
- Spring Cloud框架使实施和部署微服务到私有云或公有云变得更加简单。Spring Cloud在一个公共框架之下封装了多个流行的云管理微服务框架,并且让这些技术的使用和部署像伪代码添加注解一样简单
微服务架构的核心概念之一就是每个服务都被打包和部署为离散的独立制品,服务实例应该迅速启动,服务的每一个实例都是完全相同的
微服务模式
核心微服务开发模式
核心微服务开发模式解决了构建微服务的基础问题
- 服务粒度:如何将业务与分解为微服务,使得每个微服务都具有适当的职责?
- 通信协议:开发人员如何与服务进行通信?使用XML、JSON或者诸如Thrift之类的二进制协议来与微服务传输数据?
- 接口设计:如何设计实际的服务接口,便于开发人员进行服务调用?如何构建服务URL来传达服务意图》
- 服务的配置管理:如何管理微服务的配置,以便在不同云环境之间移动化工时,不必更改核心应用程序代码或者配置
微服务路由模式
微服务客户端弹性模式
微服务安全模式
、
使用SpringCloud构建微服务
Spring团队奖大量经过实战检验的开源项目整合到一个成为SpringCloud的Spring子项目中,
Spring Cloud将Pivotal,HashiCorp和Netfix等开源公司的工作封装在一起,Spring CLOUD简化了这些项目设置和配置到Spring 应用程序中的工作,以便开发人员可以专注于编写代码,二不会陷入配置构建和部署微服务应用程序的所有基础设施的细节中