微服务保护—Sentinel快速入门+微服务整合 示例: 黑马商城

1.微服务保护

微服务保护是确保微服务架构可靠、稳定和安全的策略与技术。

在可靠性上,限流是控制进入微服务的请求数量,防止流量过大导致服务崩溃。比如电商促销时对商品详情服务进行流量限制。熔断是当被调用的微服务故障过多或响应过慢时,暂停对它的调用,避免资源浪费和故障蔓延。

在稳定性方面,有负载均衡来分配请求,让各个微服务实例合理承担任务。

从安全角度看,通过认证和授权来控制对微服务的访问,只有合法用户和经过许可的操作才能访问微服务。

微服务保护的技术有很多,但目前国内比较常用的的是Sentinel


2.Sentinel介绍

Sentinel是阿里巴巴开源的一款服务保护框架 ,目前已经加入SpringCloudAlibaba中。

官方网站: home | Sentinel

Sentinel 的使用可以分为两个部分:

  • 核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。

  • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。


3.搭建Sentinel控制台步骤

3.1. 下载jar包

下载地址:https://github.com/alibaba/Sentinel/releases

这里直接使用黑马商城资料中已提供好版本:


3.2. 运行

jar包 放在任意非中文、不包含特殊字符 的文件夹目录下,重命名为sentinel-dashboard.jar

并且在该文件夹下创建一个text文本文档 ,然后把运行命令放入该文本中 ,最后将该文本的后缀名改为bat,这样一来就不用每次都在cmd中运行命令 ,只需要双击该文本文档运行即可

3.2.1 Sentinel运行命令
XML 复制代码
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

点击文本文档运行


3.3访问

访问http://localhost:8090页面,就可以看到sentinel的控制台了:

需要输入账号和密码,默认都是:sentinel

登录后,即可看到控制台,默认会监控sentinel-dashboard服务本身


4. 微服务整合

cart-service模块中整合Sentinel,连接到sentinel-dashboard控制台,步骤如下:

4.1 导入依赖

代码如下:

XML 复制代码
<!--sentinel-->
<dependency>
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

4.2 配置控制台

修改application.yaml 文件,包括打开Sentinel的请求方式前缀,内容如下:

代码如下:

XML 复制代码
spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8090   # sentinel控制台地址
      http-method-specify: true   # 开启http方法级别限流

4.3 访问cart-service端点

重启服务 ,然后访问查询购物车接口,sentinel的客户端就会将服务访问的信息提交到sentinel-dashboar控制台

然后就可以看到并展示出统计信息:

簇点链路,就是单机调用链路,是一次请求进入服务后经过的每一个被Sentinel监控的资源。

点击簇点链路菜单,就可以看到下面的页面:

说明我们将黑马商城中对应的操作请求方式都拿到了,这样也便于我们进行观察与测试

到这里,我们整个Sentinel就搭建完成了,并且同过微服务进行了一个整合,很好的用到了我们的项目中去!

相关推荐
Hello.Reader13 分钟前
剖析 Claim-Check 模式:以小传大,赋能分布式系统与微服务
微服务·云原生·架构
言之。16 分钟前
【微服务】1、引入;注册中心;OpenFeign
微服务·云原生·架构
言之。18 分钟前
【微服务】7、分布式事务
分布式·微服务·架构
大霞上仙42 分钟前
jenkins入门7 --发送邮件1
运维·jenkins
鲁子狄1 小时前
[笔记] Jenkins 安装与配置全攻略:Ubuntu 从零开始搭建持续集成环境
java·linux·运维·笔记·ubuntu·ci/cd·jenkins
endswel1 小时前
Jenkins pipeline 发送邮件及包含附件
运维·jenkins·邮件
坐忘3GQ1 小时前
119.使用AI Agent解决问题:Jenkins build Pipeline时,提示npm ERR! errno FETCH_ERROR
运维·npm·jenkins·nodejs·jenkinsfile·文心快码·fetch_error
蚊子爱喝水1 小时前
Centos7使用yum工具出现 Could not resolve host: mirrorlist.centos.org
linux·运维·centos
☆凡尘清心☆1 小时前
CentOS Stream 9上安装配置NFS
linux·运维·centos
黄名富2 小时前
Kafka 消费者
java·分布式·微服务·kafka