微服务框架

微服务

微服务是一种经过良好架构设计的分布式架构方案,微服务架构的特征:

1.模块化:系统被分解为多个小型的服务,每个服务都有自己的独立功能和数据存储。

2. 独立部署:每个微服务可以独立部署和更新,不会影响其他微服务。

3. 松耦合:微服务之间通过轻量级的通信机制进行交互,如HTTP/REST、消息队列等,使得它们可以独立演化和扩展。

4. 可伸缩性:可以根据需求对每个微服务进行独立的水平扩展,以应对不同的负载。

5. 多语言支持:微服务架构允许使用不同的编程语言和技术栈来开发不同的微服务,以满足特定需求。

6. 独立团队:每个微服务通常由一个小团队负责开发和维护,使得团队可以更加专注和高效地工作。

7. 弹性和容错:微服务架构可以通过容错机制和自动恢复来提高系统的可用性和稳定性。

8. 可观察性:微服务架构需要有良好的监控和日志系统,以便及时发现和解决问题。

微服务框架

微服务这种方案需要技术框架来落地。

微服务框架是一种提供了一系列工具、库和组件,用于开发、部署和管理微服务架构的软件框架。

这些框架通常提供了一些常见的功能和解决方案,以帮助开发人员更容易地构建和维护微服务架构。微服务框架通常包括以下功能和组件:

1. 服务发现和注册:提供了服务注册和发现的机制,以便微服务可以相互发现和通信。

2. 负载均衡:用于分发请求到多个实例的负载均衡器,以确保各个微服务实例的负载均衡。

3. 容错和恢复:提供了容错和自动恢复机制,以应对微服务实例的故障。

4. 配置管理:用于管理微服务的配置信息,以便在不同环境中进行配置管理。

5. 监控和日志:提供了监控和日志系统,用于跟踪微服务的性能和健康状态。

6. 安全性:提供了安全认证和授权的机制,以确保微服务之间的通信和数据的安全性。

一些常见的微服务框架包括Spring Cloud、Netflix OSS、Kubernetes等。这些框架可以帮助开发人员更加高效地构建和管理复杂的微服务架构。

Spring Cloud

是分布式微服务架构的一站式解决方案,它提供了一套简单易用的编程模型,使我们在spring boot的基础上轻松地实现微服务系统的构建

Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包

Spring Cloud 中包含了 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案

Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,共有两代实现

1)Spring Cloud Netflix 是 Spring Cloud 的第一代实现,主要由 Eureka、Ribbon、Feign、Hystrix 等组件组成

2)Spring Cloud Alibaba 是 Spring Cloud 的第二代实现,主要由 Nacos、Sentinel、Seata 等组件组成,SpringCloudaAlibaba 实际上对SpringCloud 实现了扩展组件,能够完美整合到SpringCloud rpc 远程调用整合

Spring Cloud微服务框架

1:注册与发现

1)EureKa:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移

2)Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成

3)Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务发现和配置管理

2:负载均衡

Ribbon:提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用

3:API网关

1)Zuul:Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

2)GateWay:作为 Spring Cloud 生态系中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,

4:REST调用

Feign:是一种声明式、模板化的HTTP客户端

5:容错处理(监控和断路器)

Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力

6:统一管理配置

Config:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion

7:服务跟踪

Sleuth:日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案

Spring Cloud Alibaba微服务框架

1:服务容错

Sentinel:是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保护微服务的稳定性

2:服务注册与发现

Nacos:Spring Cloud Alibaba 基于 Nacos 提供 spring-cloud-alibaba-starter-nacos-discovery & spring-cloud-alibaba-starter-nacos-config 实现了服务注册 & 配置管理功能。依靠 @EnableDiscoveryClient 进行服务的注册,兼容 RestTemplate & OpenFeign 的客户端进行服务调用。适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。

3:消息驱动

RocketMQ:是一个纯Java、分布式、队列模型的开源消息中间件

4:RPC通信

Dubbo:是一款Java RPC的框架,提供高性能的RPC远程服务调用方案

5:分布式事务

Seata:是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。

Spring Boot

Spring Boot为Java开发人员提供了一个很好的平台,可以开发一个可以运行的独立和生产级Spring应用程序。可以开始使用最少的配置,而无需进行整个Spring配置设置

Spring Boot特点

1)独立运行的Spring项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行

2)内嵌Servlet容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包

3)提供Starter,简化Maven配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置

4)提供了大量的自动化配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置

5)自带应用监控

Spring Boot 可以对正在运行的项目提供监控

6)无代码生成和XML配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置

虽然 Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架

Spring Boot 和 Spring Cloud 的区别与联系

1、Spring Boot与Spring Cloud分工不同

Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。在微服务开发中,Spring Boot 专注于快速、方便地开发单个微服务

Spring Cloud 是微服务架构下的一站式解决方案。Spring Cloud 专注于全局微服务的协调和治理工作。换句话说,Spring Cloud 相当于微服务的大管家,负责将 Spring Boot 开发的一个个微服务管理起来,并为它们提供配置管理、服务发现、断路器、路由、微代理、事件总线、决策竞选以及分布式会话等服务

2、Spring Cloud 是基于 Spring Boot 实现的

Spring Cloud 是基于 Spring Boot 实现的。与 Spring Boot 类似,Spring Cloud 也为提供了一系列 Starter,这些 Starter 是 Spring Cloud 使用 Spring Boot 思想对各个微服务框架进行再封装的产物。它们屏蔽了这些微服务框架中复杂的配置和实现原理,使开发人员能够快速、方便地使用 Spring Cloud 搭建一套分布式微服务系统

3、Spring Boot 和 Spring Cloud 依赖项数量不同

Spring Boot 属于一种轻量级的框架,构建 Spring Boot 工程所需的依赖较少

Spring Cloud 是一系列微服务框架技术的集合体,它的每个组件都需要一个独立的依赖项(Starter POM),因此想要构建一套完整的 Spring Cloud 工程往往需要大量的依赖项

4、Spring Cloud 不能脱离 Spring Boot 单独运行

Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块

Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行

5、SpringCloud+SpringBoot 实现微服务开发

SpringCloud具备微服务开发的核心技术:RPC远程调用技术;SpringBoot的web组件默认集成了SpringMVC,可以实现HTTP+JSON的轻量级传输,编写微服务接口,所以SpringCloud依赖SpringBoot框架实现微服务开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值