背景
通过Sentinel主要可以对我们所提供的服务进行限流,降级,塑型等。 想要了解Sentinel功能的详细内容请看Sentinel简介。
该组件是阿里的开源项目,主要是为了协助Dubbo提供更好的服务。但作为一个技术组件,组织也考虑到了该组件的通用性,定位于微服务的通用治理框架。对spring-cloud也提供了很好的支持。
该项目提供了很好的项目说明以及Demo。
下面主要是本人基于已有Dubbo的工程,如何集成及使用Sentinel的步骤,以及对踩的坑作一下记录。
Sentinel下载
在本人写该文档的时候,Sentinel主干版本很不稳定,下载下来的源码编译的时候有各种问题。所以本人选择了一个最近打标签的版本0.1.1。
Dashboard的安装
Dashboard是Sentinel的管理配置系统,可以通过Dashboard对微服务的治理规则进行动态配置,也可以对微服务的治理情况进行监控。
该组件是基于spring-boot开发的一个web工程,前端需要npm来进行编译,具体内容请查看工程下的READ.ME。
前端编译完成以后,在工程路径下(Sentinel-0.1.1/sentinel-dashboard)通过指令进行打包。最终在工程的target目录下生成jar包。有了工程包以后,就可以通过指令来启动了。
java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
可以通过http://localhost:8080访问一下web界面。
dashboard.pngDubbo集成
官方的文档说明,在Dubbo的微服务工程中引入sentinel-transport-simple-http包就可以了。
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>x.y.z</version>
</dependency>
在启动的jvm中时候注意添加以下参数:
-Djava.net.preferIPv4Stack=true
-Dcsp.sentinel.api.port=8720
-Dproject.name=dubbo-consumer-demo
-Dcsp.sentinel.dashboard.server=127.0.0.1:8080
其中参数说明如下:
-Dcsp.sentinel.api.port:客户端的 port,用于上报相关信息
-Dcsp.sentinel.dashboard.server:控制台的地址
-Dproject.name:应用名称,会在控制台中显示
但本人在使用官方的Demo示例时,发现dubbo服务的csp.sentinel.api.port配置的端口无法提供服务给dashboard调用,来获取微服务的治理配置信息及微服务的调用统计信息。(将微服务启动以后,通过lsof -i:8720指令,发现端口状态异常。)也不把任何的异常信息。最后就是将工程的sentinel-transport-simple-http包依赖修改为
sentinel-transport-netty-http包,微服务启动以后,服务信息上报的端口(csp.sentinel.api.port)就可以正常访问了。
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-netty-http</artifactId>
<version>x.y.z</version>
</dependency>
*备注:
sentinel-transport-netty-http和sentinel-transport-simple-http是通过Eevent模式,提供一套REST-API,便于Dashboard调用,来获取微服务端的信息。其中sentinel-transport-netty-http依赖于netty来实现,sentinel-transport-simple-http是直接通过socket来编写的,可能是simple的实现有BUG,所以致使我的环境刚好无法正常运行。
网友评论