微服务学习

本文介绍了Nacos作为注册中心和配置管理工具,OpenFeign的远程调用,SpringCloudGateway的网关功能,以及微服务雪崩、服务保护、Seata分布式事务管理和RabbitMQ的消息队列技术。涵盖了服务发现、API调用、流量控制和分布式事务处理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.Nacos注册中心

1.运行流程:服务提供暴露接口,在注册中心进行注册,同时通过心跳检测实时的报告服务的健康状态,若服务宕机,则注册中心会将此服务剔除,同时向消费者进行通知推送。

2.nacos对微服务进行配置管理

2.1.在nocos界面的配置管理中添加配置(如:jdbc、swagger等共享的配置)

2.2.拉取共享配置代替微服务的本地配置

步骤:

二.OpenFeign远程调用

OpenFeign是一个声明式的Http客户端,其底层是基于SpringMVC

快速入门:

OpenFeign连接池:

OpenFeign的最佳实践:

将对外暴露接口的client全都封装到一个公共模块中,耦合会有一点点高。

在公共模块下扫描不到OpenFeign的client时,可以使用注解@EnableFeignClients来指定

三.SpringClould gateway 网关:

1.路由断言:也就是路由匹配规则

spring提供的12种断言方式,其中根据请求路径的最常用:

2.网关登录校验

网关过滤器有两种:

GatewayFilter:路由过滤器,作用范围灵活,作用于任意指定的路由

GlobalFilter:全局过滤器,作用范围是所有路由

自定义过滤器:

3.网关校验完用户之后,怎么从网关将用户信息传递到微服务中?

答:步将用户id存入到请求头当中,然后编写一个拦截器,截获请求头当中的用户id即可。

4.在使用Feign进行微服务之中的调用时,该怎么去传递用户信息呢?

四.微服务雪崩

概念:微服务雪崩是指微服务调用链路中的某个服务故障,导致整个链路中的所有微服务都不可用。

解决方案:

五.服务保护

1.服务保护的方案:

1.1.请求限流(预防服务崩):限制访问接口的请求的并发量(QPS),避免服务因流量激增出现故障。

1.2.线程隔离(服务已甭):通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散。 

1.3.服务熔断:由熔断器统计请求的异常比例或慢调用比列,如果超过阈值则熔断该业务,拦截该接口的请求。熔断期间,所有请求快速失败,全部走fallback(服务失败调用的方法)逻辑。

2.服务保护技术(Sentinel):

Sentinel是阿里巴巴开源的一款微服务流量控制组件。
Sentinel快速入门:
1.去Sentinel下载Sentinel的jar包
2.Sentinel的控制台启动命令:

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar jar包名

3.Spring整合Sentinel:
3.1添加依赖
3.2在配置文件中配置Sentinel地址
spring:
  main:
    allow-circular-references: true  #允许循环依赖
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8090 #控制台地址
      http-method-specify: true #开启请求方式前缀(如:get请求,post请求)
3.3 Sentinel限流规则:

在Sentinel控制台中找到簇点链路,找到要限流(流控)的请求。

3.4.线程隔离(微服务和微服务之间的)

3.5服务熔断后的Fallback

3.6 sentinel持久化(缺点:无法和控制台保持实时变化,不常用):写入nacos中,利用nacos去拉取

步骤1:引入nacos和sentinel的相关依赖

<!-- 利用nacos进行sentinel持久化-->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <version>版本要和本机的sentinel版本一致</version>
</dependency>

步骤2:在nacos中编写配置文件

步骤3:拉取配置

六.Seata管理分布式事务

1.分布式事务概念:

2.Seate

2.1分布式事务的解决思路:各个子事务之间感知彼此的事务状态,以达到状态一致

七.RabbitMQ

1.使用场景:异步处理、应用解耦、流量控制

1.1异步调用其实就是基于消息通知,一般包含四个角色:

消息发送者:投递消息的人,就是原来的调用方

消息代理(交换机和队列):管理、暂存、转发消息

消息接收者、队列

一般是消息发送者发送消息给交换机,交换机再转发给其绑定的队列,最后由消费者去消费消息。

注意:交换机没有存储消息的能力!

2.Spring整合RabbitMq,spring提供了一个RabbitTemplate

3.SpringAMQP如何收发消息?

4.如何解决消息堆积问题:

交换机

1.类型:Fanout广播、Direct定向、Topic话题

交换机的作用:

Direct交换机

Topic交换机

Direct交换机和Topic交换机的区别:

在java中声明交换机和队列

消息转换器:

消息可靠性解决:

1.MQ的可靠性

2.Lazy Queue(惰性队列)

3.消费者如何保证消息一定被消费

4.如何保证业务幂等性

延迟消息:

死信交换机:

### 关于微服务学习资源和专栏的推荐 对于希望深入理解并实践微服务架构的技术人员来说,选择合适的资源至关重要。以下是基于已有引用和其他专业知识整理的相关建议。 #### 一、基础概念与理论 微服务是一种软件架构风格,其核心理念是将应用程序拆分为一组小型独立的服务[^1]。这些服务可以单独部署、扩展,并通过轻量级机制通信(通常是HTTP/REST API)。为了更好地掌握微服务的基础知识,可以从以下方面入手: - **官方文档** Spring Cloud 和 Netflix OSS 是两个广泛使用的微服务框架集合。Spring 官方提供了详尽的教程和指南,适合初学者快速入门[^2]。 - **书籍推荐** - *《Microservices Patterns》* by Chris Richardson:这本书详细介绍了微服务的设计模式以及如何解决常见的挑战。 - *《Building Microservices》* by Sam Newman:涵盖了从设计到运维的全方位指导。 #### 二、实战经验分享 除了理论之外,实际案例分析同样重要。以下是一些高质量的内容来源: - **博客文章系列** 提供了一个完整的博文更新列表,包括但不限于以下几个主题: - 微服务架构沉思录 - 单体架构向微服务转型的过程解析 - 使用 Eureka 实现高可用服务治理的具体方法 - **在线课程平台** 平台如 Coursera 或 Udemy 上有许多专注于微服务开发的课程,部分由行业专家讲授,能够帮助学员构建系统的知识体系。 #### 三、工具和技术栈探索 熟悉主流技术栈也是学习过程中不可忽视的一环。常用的组件有: - **服务注册与发现**: 如 Consul, Zookeeper 及前文提到的 Eureka. - **配置管理**: Spring Cloud Config, Apollo 配置中心等. - **API 网关**: Zuul (已被淘汰), Kong, Ambassador. ```java // 示例代码展示如何连接至 Eureka Server 进行服务注册 @SpringBootApplication @EnableDiscoveryClient public class MyServiceApplication { public static void main(String[] args) { SpringApplication.run(MyServiceApplication.class, args); } } ``` 以上片段展示了在一个典型的 Java 应用程序中启用服务发现功能的方式。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值