在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:sentinel-dubbo开源软件地址:https://gitee.com/imethsoft/sentinel-dubbo开源软件介绍:本项目为sentinel与dubbo结合的改造项目。一、由来Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。点此地址了解更多Sentinel。 二、问题
三、实现
四、Dashboard改造改造前客户端利用sentinel-transport-simple-http模块暴露一个特定的端口,Sentinel Dashboard通过http的形式进行数据推送,客户端接收后将规则保存在本地内存中。 改造后客户端注册到相关的注册中心中,Sentinel Dashboard控制台将配置信息推送到配置中心,如nacos,zookeeper中,由配置中心去进行配置推送。 zookeeper路径约定
nacos路径约定
改造支持
DynamicRuleZookeeperProviderDynamicRuleZookeeperPublisher 五、使用1.运行sentinel-dubbo-dashboard sentinel.application.name=sentinel-dashboard # 名字sentinel.application.port=8719 # sentinel的http访问端口sentinel.application.dashboard=localhost:8181 # 控制台地址sentinel.api.enable=false #是否开启api推送,选择false则zookeeper,nacos二选一sentinel.zookeeper.enable=true # 是否开启zookeeper作为datasourcesentinel.zookeeper.address=localhost:2181 # zookeeper配置sentinel.nacos.enable=false # 是否开启nacos作为datasourcesentinel.nacos.server_addr=localhost:8888 # nacos地址sentinel.nacos.group_id=DEFAULT_GROUP # group分组,如果不设置则默认是SENTINEL_GROUP 配置并运行DashboardApplication 2.客户端加入相关的依赖 <dependency> <groupId>com.xmutca</groupId> <artifactId>sentinel-dubbo-starter</artifactId> <version>0.0.1-SNAPSHOT</version></dependency> 客户端加入相关的配置 sentinel: application: name: sentinel-provider # 服务的名字 port: 8719 # sentinel的http访问端口 dashboard: localhost:8080 # sentinel dashboard地址 zookeeper: enable: true # 是否使用zookeeper作为datasource address: localhost:2181 # zookeeper的地址 nacos: enable: false # 是否开启nacos作为datasource server_addr: localhost:8888 # nacos地址 group_id: DEFAULT_GROUP # group分组,如果不设置则默认是SENTINEL_GROUP 六、异常处理项目采用反射的形式获取注入的全部异常信息,写法类似于SpringMVC的ExceptionHandler。 /** * @version Revision: 0.0.1 * @author: weihuang.peng * @Date: 2018-12-24 */public class ExceptionHandler { /** * 默认异常 * @param ex * @return */ @ExceptionProcessor(Exception.class) public Result handleException(Exception ex) { return Result.DEFAULT_ERROR_RESULT; } /** * 业务异常处理 * @param ex * @return */ @ExceptionProcessor({ServiceException.class}) public Result handleServiceException(ServiceException ex) { Receipt result = ex.getExceptionResult(); result.setMessage("项目的实现 -》" + result.getMessage()); return result; }} 然后通过以下形式进行异常注册: ExceptionRegistry.updateForPackage("你的异常中心放的包名") 注意:后面注册的异常处理方法,将会覆盖前面注册的异常处理方法,覆盖依据为ExceptionProcessor中的value类名,处理的时候如果不存在此异常将会从父亲异常进行递归式搜索,如果找不到将会用默认的进行输出。 七、思考
|
请发表评论