实战项目中整合 Sentinel 编码实践
在微服务架构项目中整合 Sentinel
的步骤如下。
第一步,引入 Sentinel
依赖。
依次打开 newbee-mall-cloud-user-web
、newbee-mall-cloud-recommend-web
、newbee-mall-cloud-order-web
、newbee-mall-cloud-shop-cart-web
和 newbee-mall-cloud-goods-web
5 个微服务实例工程中的 pom.xml
文件,在 dependencies
节点下新增 Sentinel
的依赖项,配置代码如下:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
第二步,新增 Sentinel
配置项。
依次打开 newbee-mall-cloud-user-web
、newbee-mall-cloud-recommend-web
、newbee-mall-cloud-order-web
、newbee-mall-cloud-shop-cart-web
和 newbee-mall-cloud-goods-web
5 个微服务实例工程中的 application.properties
配置文件,新增 Sentinel
配置项。
newbee-mall-cloud-user-web
工程:
# sentinel config
spring.cloud.sentinel.transport.port=8900
spring.cloud.sentinel.transport.clientIp=127.0.0.1
# 指定 Sentinel 控制台 IP 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:9113
newbee-mall-cloud-recommend-web
工程:
# sentinel config
spring.cloud.sentinel.transport.port=8920
spring.cloud.sentinel.transport.clientIp=127.0.0.1
# 指定 Sentinel 控制台 IP 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:9113
newbee-mall-cloud-order-web
工程:
# sentinel config
spring.cloud.sentinel.transport.port=8940
spring.cloud.sentinel.transport.clientIp=127.0.0.1
# 指定 Sentinel 控制台 IP 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:9113
newbee-mall-cloud-shop-cart-web
工程:
# sentinel config
spring.cloud.sentinel.transport.port=8930
spring.cloud.sentinel.transport.clientIp=127.0.0.1
# 指定 Sentinel 控制台 IP 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:9113
newbee-mall-cloud-goods-web
工程:
# sentinel config
spring.cloud.sentinel.transport.port=8910
spring.cloud.sentinel.transport.clientIp=127.0.0.1
# 指定 Sentinel 控制台 IP 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:9113
到这里就完成了在实战项目中对 Sentinel
初步的整合和配置,非常简单。接下来,依次启动 5 个微服务实例(需保证 Nacos Server
和 Sentinel
控制台已经正常运行)。
启动后,登录 Sentinel
控制台,页面的导航栏依然是一片空白,无法看到这些微服务实例。本以为是懒加载机制导致的,只需要对微服务发起几次调用,触发服务信息等数据的上报,在客户端收集数据并传输给 Sentinel
控制台后,就会看到数据,但是访问了 5 个微服务实例中的一些请求后,页面中依然是空白的,如图 11-1 所示。
