微服务入门:SpringCloud核心组件介绍

目录

微服务介绍

1 SpringCloud介绍

核心概念

2 分布式配置中心

2.1 分布式配置中心的由来

2.2 分布式配置中心的功能

2.3 常用配置中心组件

3 分布式注册中心

3.1 注册中心的功能

3.2 常见注册中心组件

4 服务网关

4.1 服务网关的功能特性

4.2 常见的服务网关

5 负载均衡

5.1 常用负载均衡算法

5.2 常见负载均衡组件

6 RPC调用

常见的RPC调用组件或框架

7 服务熔断、降级和限流

7.1 服务熔断

7.2 服务降级

区别

7.3 服务雪崩

7.4 服务限流

8 其他核心组件

8.1 全局锁

8.2 控制总线

8.3 分布式事务

8.4 服务安全

8.5 链路追踪

8.6 集群管理

8.7 事件驱动通信

8.9 云链接器

8.10 函数计算


码字不易,喜欢就点个关注❤,持续更新技术内容。相关资料请私信。

微服务介绍

微服务一般针对开发大型项目时,将传统单体应用系统架构的业务系统拆分为小的业务模块,每一个业务模块都是可以根据需求独立地进行设计开发、测试部署和交付。然后在拆分出的各个单位模块之间是通过轻量的restAPI接口进行服务间调用。这个过程就是所说的微服务。

可以看到这个图中间就是各个MicroService,也就是我们的这个微服务的实现,微服务周围就是去围绕这个微服务来去做各种辅助的微服务组件。例如分布式追踪、服务注册、配置服务等,都绕微服务运行时所依赖的必不可少的的支持性功能。我们可以得出这样一个结论:Spring Cloud 是以微服务为核心的分布式系统的一个构建标准。

1 SpringCloud介绍

SpringCloud为开发者提供了一套快速开发分布式系统的组件,SpringCloud并不推荐重复造轮子,主张利用SpringBoot将其他公司较成熟的组件进行封装。

核心概念

注册中心、RPC调用、配置中心、服务网关、负载均衡、服务熔断、服务降级、服务限流、全局锁、控制总线、分布式事务、服务安全、链路追踪、集群管理、事件驱动、任务调度、云连接器、函数计算。

2 分布式配置中心

2.1 分布式配置中心的由来

微服务系统中,存在很多功能开关和各种参数的配置项,传统的配置文件、数据库等方式无法满足开发人员对配合管理的需求,此时,分布式配置中心应运而生。

2.2 分布式配置中心的功能

统一管理、区分环境、实时刷新、权限控制、版本控制、灰度发布

配置的统一管理配置中心服务端负责配置的管理(新增、修改、删除、发布),集成了配置中心客户端的微服务程序可以统一从配置中心服务端拉取配置,从而实现整个微服务系统的统一配置管理。
区分不同环境的配置一个微服务应用中的某些配置项,在不同的环境(开发、测试、生产)通常是不同的,作为分布式配置中心需要具有隔离不同环境的功能,使得同一个微服务在不同环境能拉取到对应的配置。
配置动态实时刷新当配置中心服务端中的配置发生了修改时,配置中心客户端需要能实时监听到配置的改变,使得微服务应用程序可以实时获取到最新配置,并且不用重新部署应用程序。
配置的权限控制在配置中心中,可以针对不同的角色或用户设置对应的权限,比如张三可以新建配置项,但不能发布配置;比如小明可以查看配置项,但不能修改配置项。
配置的版本控制在使用配置中心的过程中,难免会出现误操作,而这个时候就需要进行版本回退,所以作为配置中心,是一定要支持版本控制的。
配置的灰度发布在需要发布一项配置时,如果需要发布到多个实例(集群),那么此时可以只发布到部分实例,待测试通过后,再发布到全部实例,这就是配置的灰度发布。

2.3 常用配置中心组件

SpringCloudConfig、Alibaba Nacos、携程Apollo、谷歌Consul。

3 分布式注册中心

注册中心相当于微服务架构中的地址通讯录,每个微服务会将服务及其地址注册到注册中心,服务消费者再调用某个微服务之前会先从注册中心查找服务地址,然后进行调用。

3.1 注册中心的功能

  1. 服务的自动注册

  2. 服务的自动发现

  3. 服务的健康检查

特点说明
服务的自动注册微服务应用在启动时,通过注册中心客户端组件,将服务的相关信息自动注册给注册中心服务端。
服务的自动发现服务消费者需要能实时监听到注册中心中服务信息的变更,以能在真正调用服务时不会出现错误。
服务的健康检查当注册到注册中心的微服务实例宕机后,注册中心服务端发现实例已经宕机,并把相关信息从注册中心删除掉。

3.2 常见注册中心组件

Netflix Eureka、Alibaba Nacos、谷歌Consul、雅虎ZooKeeper。

4 服务网关

服务网关是整个微服务架构中对外的统一入口,所有的客户端都是通过统一的网关使用微服务,服务网关起到了隔离外部访问和内部系统的作用,服务网关是微服务架构中一个标准组件。

4.1 服务网关的功能特性

高并发、安全、路由转发、监控与限流、灰度发布、服务重试、服务别名。

特点说明
高并发作为微服务架构中的对外接口,必须能支持高并发,能够承担更高的并发量,并保证高性能。
安全服务网关通常有权限认证、黑名单、白名单等保证网关安全的功能。
路由转发服务网关接收到外部前端请求后,要求服务网关能够根据请求和配置将请求转发到对应的后端微服务上。
监控与限流作为整个系统的流量入口,服务网关要能监控流量情况,遇到突发情况时能够即时限流,保证整个系统的稳定。
灰度发布当某个微服务有新版本更新上线时,可以利用服务网关进行流量切换,实现该微服务的灰度发布。
服务重试当服务网关调用某个微服务失败后,可以通过服务网关设置重试策略来重新尝试调用该微服务。
服务别名可以在服务网关中给某个或某些微服务设置别名,从而对外屏蔽内部微服务的相关信息。

4.2 常见的服务网关

Alibaba SpringCloudGateway、Netflix Zuul、Mashape Kong。

5 负载均衡

负载均衡是指将访问流量通过负载均衡算法分发到后端服务器的流量分发控制服务,通过负载均衡可以提高微服务的可用性以及性能。

5.1 常用负载均衡算法

简单轮询、加权轮询、简单随机、加权随机、一致性哈希、最小活跃数。

负载均衡算法说明
简单轮询将请求按顺序分发给后端服务器上,不关心服务器当前的状态,比如后端服务器的性能、当前的负载。
加权轮询根据服务器的性能给服务器给服务器设置不同的权重,将请求按顺序和权重分发给后端服务器,可以让性能高的机器处理更多请求。
简单随机将请求随机分发给后端服务器上,请求越多,各个服务器收到的请求越平均。
加权随机根据服务器自身的性能给服务器设置不同的权重,将请求按各个服务器的权重随机分发给后端服务器。
一致性哈希根据请求的客户端IP、或请求参数通过哈希算法得到一个数值,利用该数值取模映射出对应的后端服务器,这样能保证同一个客户端或相同参数的请求每次都使用同一台服务器。
最小活跃数统计每台服务器上当前正在处理的请求数,也就是请求活跃数,将请求分发给活跃数最少的后端服务器。

5.2 常见负载均衡组件

Nginx、Netflix Ribbon、Alibaba LVS。

6 RPC调用

RPC就是远程过程调用,对于Java程序而言,RPC就是远程方法调用,表示一个方法调用远程的另外一个方法,微服务架构中一个服务调用另外一个服务就可以用RPC调用。

RPC调用与HTTP调用的区别:

  1. HTTP调用使用的是HTTP协议,是网络7层中的应用层协议,HTTP协议规定了数据传输的格式,Restful就可以通过HTTP协议来实现。

  2. RPC不是网络层面的协议,而是更上层的更灵活的通信协议,RPC调用可以自定义数据格式、数据传输方式,只要能保证调用到远程方法即可。

常见的RPC调用组件或框架

Alibaba Dubbo、Google gRPC、Facebook Thrift、Netflix Feign。

7 服务熔断、降级和限流

7.1 服务熔断

服务熔断是指,当服务A调用的某服务B不可用时,上游服务A为了保证自己不受影响,从而不再调用服务B,直接返回一个日志结果,减轻服务A和服务B的压力,直到服务B恢复。

熔断器:实现熔断功能的叫熔断器,代表组件有Netflix Hystrix、Alibaba Sentinel。

熔断器状态:

  1. Closed:关闭状态,当调用失败次数达到阈值时则启动熔断器。

  2. Open:打开状态,此时不会真正的调用下游服务,而是直接返回,当过了某段时间后,熔断器会进入半打开状态。

  3. Half-Open:半打开状态,此时会有部分请求访问下游服务,如果这些请求都调用成功了,则认为下游服务恢复了,那么则关闭熔断器,否则熔断器回到打开状态。

7.2 服务降级

服务降级是指,当发现系统压力过载时,可以通过关闭某个服务,或限流某个服务来减轻系统压力,这就是服务降级。

7.3 熔断和降级的区别

  1. 都是为了防止系统崩溃。

  2. 都让用户体验到某些功能暂时不可用。

  3. 熔断是下游服务故障触发的,降级是为了降低系统负载。

7.4 服务雪崩

服务A调用服务B,服务B调用服务C,此时大量请求突然调用服务A,假如服务A本身能抗住这些请求,但是服务C扛不住,导致服务C请求堆积,从而服务B请求堆积,从而服务A不可用,这就是服务雪崩,解决方式就是服务降级和服务熔断。

7.5 服务限流

服务限流是指在高并发请求下,为了保护系统,可以对访问服务的请求进行数量上的限制,从而防止系统不被大量请求压垮,在秒杀系统中,限流是非常重要的。

常用限流算法:固定窗口计数器,滑动窗口计数器,令牌桶、漏桶。

8 其他核心组件

8.1 全局锁

全局锁就是我们常说的分布式锁,是分布式、微服务架构中的一种锁机制,通过全局锁可以很好的在分布式系统中互斥使用共享资源。

全局锁的实现原理:

Zookeeper:利用Zookeeper的watch机制以及临时节点特性。

Redis:利用Redis的消费订阅机制与数据超时特性。

常用的全局锁实现组件:Redisson、Curator。

8.2 控制总线

控制总线也称消息总线,是微服务系统中用来连接系统中所有服务节点的,微服务中的所有服务节点可以通过控制总线来进行通讯。

应用场景:目前,SpringCloudBus就是控制总线的具体实现,某个微服务可以通过SpringCloudBus来广播事件,而其他微服务可以接收到事件并进行相关处理。

8.3 分布式事务

在一次请求中,所涉及的分散在多个微服务上的操作要保证同时成功或同时失败,这就是分布式事务,比如创建订单、减库存和银行转账等。也就是要保证操作的原子性。

实现分布式事务的方式:

  1. 直接通过数据库

  2. 通过消息队列

  3. 两阶段提交

  4. 三阶段提交

分布式事务中的三个角色:事务协调器、事务管理者、资源管理者。

常用的分布式事务框架:seata、lcn、bytetcc

8.4 服务安全

对于一个企业来说,微服务系统中的服务安全性越来越重要,服务的认证和授权是企业必须具备的,SpringCloudSecurity是SpringCloud提供的微服务安全组件。

服务安全的特性:

  1. 可扩展、可配置的认证和授权

  2. 单点登录

  3. 防止会话固定、点击劫持、跨网站请求伪造等攻击

  4. 与Servlet API集成

8.5 链路追踪

链路追踪为微服务系统提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等功能,可以帮助开发者快速分析和诊断微服务架构下的性能瓶颈。

链路追踪的功能:

  1. 分布式调用链查询和诊断

  2. 应用性能实时汇总

  3. 分布式拓扑动态发现

  4. 多语言开发程序接入

  5. 丰富的下游对接场景

常用的链路追踪技术:Sleuth、Zipkin

8.6 集群管理

集群管理是指,对于微服务系统中的某个服务集群所提供的针对集群管理的功能,SpringCloudCluster的职责就是集群管理。

集群管理的功能:领导者选举、一致性存储、集群状态管理、一次性tokens。

8.7 事件驱动通信

事件驱动就是消息驱动,在SpringCloud中提供了SpringCloudStream来实现事件驱动,有了事件驱动,在微服务系统中可以更方便的通过发送消息来进行通信。

事件驱动中的概念:

  1. 目标绑定器,目标指的是kafka或rabbitMQ

  2. 绑定桥梁,连接消息系统和应用程序

  3. 消息,应用程序和消息系统之间传递的数据

事件驱动特点:异步处理、流量削峰、服务解耦。

8.8 云链接器

云连接器可以用来连接部署在云端的各种服务,SpringCloud中的SpringCloudConnectors就是云连接器的实现组件。

目前支持的云平台:SpringCloud Cloud Foundry、SpringCloud Heroku

8.9 函数计算

函数计算也称为函数式编程,是实现Serverless的一种手段,企业能如果能使用函数计算能大大节约成本,在Spring提供了SpringCloud Function基于云平台开发函数计算。

函数计算的特点:

  1. 支持响应式等编程风格

  2. 输入输出类型透明化

  3. 流数据处理

  4. 同一个JVM中运行多个版本函数

  5. 打包函数到指定云平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maxlec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值