sentinel接入网关应用_微服务初体验(三):集成Gateway网关和Sentinel限流

前言

最近笔者在对微服务架构进行学习,参考了各种项目的技术文章、框架文档以及视频网站,最终选择使用Nacos+Dubbo+Gateway+Sentinel来搭建一个项目练手。其中Nacos作为服务的注册发现中心兼配置中心,Dubbo作为RPC通讯框架来实现服务间的接口调用,而Gateway则作为网关,进行客户端请求的转发,熔断服务则使用Sentinel框架。后续会加入ElasticSearch+SpringSession,进行数据的缓存分级,链路追踪则使用Sleuth,其中还会组合分布式事务框架Seata,有兴趣的朋友可以关注一下,项目地址:https://github.com/peachl/cloud-demo/tree/master#readme,长期更新。

集成Gateway网关

回顾项目上次以及集成了Nacos、Dubbo等框架,现在需要在原有项目上进行集成Gateway的操作,还未配置对应的Nacos、Dubbo的朋友可以回顾一下《微服务初体验(一):整合Nacos进行服务注册和项目初始化》、《微服务初体验(二):使用Nacos作为配置中心并集成Dubbo》之前的内容。

之前的项目中已经集成了Gateway这个模块,现在只需要修改Gateway模块对应的Maven依赖和对应的yaml路由转发规则即可。首先打开对应的pom.xml删除其中的多余web依赖,然后引入如下依赖:

org.example

cloud-common

1.0-SNAPSHOT

org.springframework.cloud

spring-cloud-starter-gateway

2.2.4.RELEASE

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

2.2.1.RELEASE

开始编写Gateway对应的路由配置,打开cloud-gateway模块下的application.yml配置文件,编写下列规则:

server:

port: 80

spring:

application:

name: gateway

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848

gateway:

routes:

- id: consumer_route

#uri后面指定消费者的服务id

uri: lb://consumer

predicates:

#匹配条件

- Path=/**

重启项目,然后通过访问80通过网关转发请求至consumer模块的Controller中,可以看到下图访问的是80端口但是请求已经被转发至8011端口的consumer服务上了,至此Gateway网关集成完毕。

集成Sentinel进行限流

Sentinel是阿里推出的一个分布式系统的流量管控框架,可以很好的对流量进行削峰降级、负载均衡之类的管控,首先在common模块中引入相关依赖

com.alibaba.cloud

spring-cloud-starter-alibaba-sentinel

2.2.1.RELEASE

引入依赖完毕后去github上下载对应的jar,记得要选择对应的版本,笔者这里的对应的版本是1.7.1

下载完毕之后使用java -jar命令启动

如图所示Sentinel启动成功

访问8080端口,账号和密码都是sentinel

配置对应yml文件

spring:

cloud:

sentinel:

transport:

#本机Sentinel的控制台地址

dashboard: localhost:8080

#当前服务和Sentinel通讯的端口

port: 8719

由于Sentinel是懒加载,所以在请求完该接口后才会出现对应的数据,所以现在直接访问会出现Sentinel控制台内容为空的情况,多刷新几次请求接口即可显示对应的接口数据

通过簇点链路可针对请求进行流控、降级等操作

以上Nacos整合Gateway、Sentinel等框架已完成,框架中具体的配置和复杂实现还是要根据项目实际情况去配置,在此只是简单的搭建出对应Demo。

路漫漫其修远兮,吾将上下而求索

你可能感兴趣的:(sentinel接入网关应用)