Spring Cloud之微服务
目录
微服务
微服务架构
微服务架构与单体架构
特点
框架
总结
SpringCloud
常用组件
与SpringBoot关系
版本
微服务
微服务:从字面上理解即:微小的服务;
微小:微服务体积小,复杂度低,一个微服务通常只提供单个业务功能的服务。
微服务架构
微服务架构是一种系统架构的设计风格。微服务架构提倡将一个单一的应用程序拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间使用轻量级通信机制(通常是 HTTP RESTFUL API)进行通讯;
小型服务都是围绕着某个特定的业务进行构建的,每一个服务只专注于完成一项任务并把它做好
微服务架构与单体架构
单体架构是微服务架构出现之前业界最经典的软件架构类型,许多早期的项目采用的也都是单体架构。单体架构将应用程序中所有业务逻辑都编写在同一个工程中,最终经过编译、打包,部署在一台服务器上运行。
特点
1.独立性:每个微服务都是相对独立的,拥有自己的代码库、数据库和团队
2.模块化:微服务架构将应用程序拆分为若干个小型服务,每个服务都是一个模块。这种模块化可以让开发人员更加专注于单一功能点的开发,提高应用程序的可维护性和可扩展性
3.松耦合:微服务之间采用API进行通信,服务之间的耦合度较低
4.可伸缩性:由于每个微服务都是独立的,可以按需进行水平扩展,从而提高整体应用程序的性能和可伸缩性
5.容错性:由于微服务之间是相对独立的,当某个服务出现故障时,不会影响整个应用程序的运行
6.简化部署:每个微服务可以独立部署,因此可以更快速地推出新功能和更新,同时也可以更容易地完成部署和回滚操作
7.原子性:微服务应该执行单一的业务功能,这样可以保证服务的原子性和可复用性
8.运维简化:由于微服务架构将应用程序拆分成若干小型服务,因此可以更轻松地进行监控和故障排除,提高运维效率
框架
Spring Cloud:它能够基于 REST 服务来构建服务,帮助架构师构建出一套完整的微服务技术生态链。
Dropwizard:用于开发高性能和 Restful 的 Web 服务,对配置、应用程序指标、日志记录和操作工具都提供了开箱即用的支持。
Restlet: 该框架遵循 RST 架构风格,可以帮助 Java 开发人员构建微服务。
Spark:最好的 Java 微服务框架之一,该框架支持通过 Java 8 和 Kotlin 创建微服务架构的应用程序。
Dubbo:由阿里巴巴开源的分布式服务治理框架。
总结
微服务架构在解决应用程序扩展、维护和升级等方面具有明显的优势。但微服务架构同时也带来了部署、运维、网络通信、数据一致性和安全性等方面的挑战,需要在实际应用中根据需求灵活选择。
SpringCloud
Spring Cloud 是一款基于 Spring Boot 实现的微服务框架。
常用组件
与SpringBoot关系
Spring Boot 和 Spring Cloud 都是 Spring 大家族的一员,它们在微服务开发中都扮演着十分重要的角色,两者之间既存在区别也存在联系
1.Spring Boot 和 Spring Cloud 分工不同;Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。在微服务开发中,Spring Boot 专注于快速、方便地开发单个微服务;Spring Cloud 专注于全局微服务的协调和治理工作,是微服务架构下的一站式解决方案
2.Spring Cloud 是基于 Spring Boot 实现的
3.Spring Boot 和 Spring Cloud 依赖项数量不同;Spring Boot 属于一种轻量级的框架,构建 Spring Boot 工程所需的依赖较少;Spring Cloud 是一系列微服务框架技术的集合体,它的每个组件都需要一个独立的依赖项
4.Spring Cloud 不能脱离 Spring Boot 单独运行;Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块;Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行
虽然 Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架
版本
Spring Cloud 包含了许多子项目(组件),这些子项目都是独立进行内容更新和迭代的,各自都维护着自己的发布版本号