当前位置: 首页 > news >正文

备案网站名称修改网络营销外包服务网

备案网站名称修改,网络营销外包服务网,net网站开发手机网站,提供邯郸企业建网站Hystrix 的核心是提供服务容错保护#xff0c;防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式#xff0c;对资源或失败单元进行隔离#xff0c;避免一个服务的失效导致整个系统垮掉#xff08;雪崩效应#xff09;。 1 Hystrix监控 Hystrix 提供了对服务…Hystrix 的核心是提供服务容错保护防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式对资源或失败单元进行隔离避免一个服务的失效导致整个系统垮掉雪崩效应。 1 Hystrix监控 Hystrix 提供了对服务请求的仪表盘监控。在客户端加入以下依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-hystrix-dashboard/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId /dependency 并在客户端的Application类加上EnableHystrixDashboard注解。 访问地址http://localhost:8080/hystrix 在输入框中输入监控地址http://localhost:8080/hystrix.stream然后点击“Monitor Stream”按钮。 图 Hystrix 监控初始界面 图 Hystrix 仪表盘主要参数及含义 2 服务隔离 图 Hystrix 实现服务隔离的思路 2.1 隔离策略 Hystrix 提供了线程池隔离和信号量隔离两种隔离策略。 execution.isolation.strategy 属性配置隔离策略默认为THREAD(线程池隔离)SEMAPHORE为信号量隔离。execution.isolation.thread.timeoutInMilliseconds属性配置请求超时时间默认为1000ms。 2.1.1 线程池隔离 不同服务的执行使用不同的线程池同时将用户请求的线程如Tomcat与具体业务执行的线程分开业务执行的线程池可以控制在指定的大小范围内从而使业务之间不受影响达到隔离的效果。 优点 隔离优势如果一个服务发生问题只会影响该服务而不会影响其他服务。方便性能变化调整可以更改对应command的参数超时时间、重试次数、线程池大小等。 缺点 线程及线程池的创建及管理增加了计算开销。 表 线程池隔离的优缺点 关于线程池隔离的相关配置有如下参数 coreSize:线程池核心线程数。即线程池中保持存活的最小线程数。默认为10。 maximumSize:线程池允许的最大线程数。当核心线程数已满且任务队列已满时线程池会尝试创建新的线程直到达到最大线程数。默认为10。 maxQueueSize:线程池任务队列的大小。默认为-1表示任务将被直接交给工作线程处理而不是放入队列中等待。 queueSizeRejectionThreshold:即便没达到maxQueueSize阈值但达到该阈值时请求也会被拒绝默认值为5。 图 新的请求在线程池的处理过程 是否创建新线程是指当前活跃线程已达到coreSize,但线程数小于maximumSizeHystrix 会创建新的线程来处理该任务。这一步还受到queueSizeRejectionThreshold及maxQueueSize参数的影响。 2.1.2 信号量隔离 用户请求线程和业务执行线程是同一线程通过设置信号量的大小限制用户请求对业务的并发访问量从而达到限流的保护效果。 优点 1 开销小避免了线程创建、销毁及上下文切换等开销。 2 配置简单只需要设置信号量大小即可。 3 适合轻量级操作如内存或缓存服务访问这些操作不太可能导致长时间延迟因此信号隔离可以保持系统的高效性。 缺点 限流能力有限存在阻塞风险如果依赖服务阻塞因为其没有使用线程池来隔离请求那么可能会影响整个请求链路导致系统性能下降。 表 Hystrix 信号隔离的优缺点 execution.isolation.semaphore.maxConcurrentRequests 最大并发请求数信号量大小。默认为10。 2.2 服务隔离的颗粒度 HystrixCommand 注解还有三个属性commandKey标识该命令全局唯一的名称默认情况下同一个服务名称共享一个线程池、groupKey组名Hystrix 会让相同组名的命令使用同一个线程池、threadPoolKey线程池名称多个服务可以设置同一个threadPoolKey来共享同一个线程池在信号量隔离策略中不起作用。 3 请求缓存 在用户的同一个请求中消费者可能会多次重复调用一个服务。Hystrix 提供的请求缓存可以在CommandKey/CommandGroup相同的情况下直接共享第一次命令执行的结果降低依赖调用次数。 Service public class UserService {private final RestTemplate restTemplate;public UserService(RestTemplate restTemplate) {this.restTemplate restTemplate;}CacheResult(cacheKeyMethod generateCacheKey)HystrixCommand(commandKey info3,groupKey info3Group,commandProperties {HystrixProperty(name requestCache.enabled, value true)})public RequestResultString info3(String name) {System.out.println(发送请求 name);return RequestResult.success(restTemplate.getForObject(http://provider/user/info?name name, String.class));}public String generateCacheKey(String name) {return name;} } RequestMapping(/home) RestController public class HomeController {private final RestTemplate restTemplate;private final UserService userService;public HomeController(RestTemplate restTemplate, UserService userService) {this.restTemplate restTemplate;this.userService userService;}GetMapping(/info3)public RequestResultString info3(String name) {HystrixRequestContext context HystrixRequestContext.initializeContext();RequestResultString result userService.info3(name);userService.info3(name);context.close();return result;} } 4 请求合并 Hystrix针对高并发场景支持将多个请求自动合并为一个请求通过合并可以减少对依赖的请求极大节省开销提高系统效率。 请求合并主要是通过两部分实现1HystrixCollapser 指定高并发请求的对应请求其返回值为Futuer。2HystrixCommand 指定合并后的单个请求。其参数为第1部分请求参数的集合。 Service public class UserService {private final RestTemplate restTemplate;public UserService(RestTemplate restTemplate) {this.restTemplate restTemplate;}HystrixCollapser(collapserKey info,scope com.netflix.hystrix.HystrixCollapser.Scope.GLOBAL,batchMethod batchInfo,collapserProperties {HystrixProperty(name timerDelayInMilliseconds, value 1000),HystrixProperty(name maxRequestsInBatch, value 3)})public FutureRequestResultString batchInfo(String name) {// 不会被执行System.out.println(HystrixCollapser info);return null;}HystrixCommandpublic ListRequestResultString batchInfo(ListString names) {System.out.println(批量发送 names);// 依赖也需要有一个支持批量的接口String res restTemplate.getForObject(http://provider/user/info?name names, String.class);ListRequestResultString list new ArrayList();int count 0;for (String str : names) {list.add(RequestResult.success(res kk str count));}return list;} } RequestMapping(/home) RestController public class HomeController {private final RestTemplate restTemplate;private final UserService userService;public HomeController(RestTemplate restTemplate, UserService userService) {this.restTemplate restTemplate;this.userService userService;}GetMapping(/info2)public RequestResultString info2(String name) throws ExecutionException, InterruptedException {HystrixRequestContext context HystrixRequestContext.initializeContext();FutureRequestResultString future userService.batchInfo(name);RequestResultString result future.get();context.close();return result;} }
http://www.hkea.cn/news/14436030/

相关文章:

  • 如何做一个属于自己的网站制作一款app软件大概需要多少费用
  • 制作一个赚钱的网站深圳做企业网站的公司推荐
  • 课程网站建设调研报告电商网站开发需要多少钱
  • 做外贸有哪些好的网站有哪些自主软件开发平台
  • 三亚制作网站上海做网站建设的公司
  • 网站开发和游戏开发游戏网站怎么做推广
  • 做网站主要用哪种语言西青房地产网站建设
  • 网页设计与网站建设指标点今天北京感染了多少人
  • 肥城网站建设做教育网站宣传策略
  • 合肥道路建设从哪个网站可以看到建设厅网站初始数据入库
  • 广告设计公司网站源码电商网站建设综述
  • 公司 网站建设想招代理去什么网站
  • 龙岩做网站哪家好wordpress怎么不出付费阅读
  • 做门户网站经验wordpress页面源代码
  • 在哪查询网站做的哪些外链美妆网站建设环境分析
  • 网站极简设计小型企业网站建设报告模拟组建过程
  • 知名跟单网站做信号提供方wordpress制作在线云课堂
  • 免费网站建设怎样江宁滨江网站建设
  • 河南企业网站建设公司广州网站建设实力乐云seo
  • 宁波网站制作费用成都有什么好玩的好吃的
  • 换接入商网站备案做图片祝福的网站
  • 成都网站建设专家国外著名网站建设公司
  • 网站合同建设模板建设银行总行信息网站
  • 北京网站搭建服务商小当网 绵阳网站建设
  • 福州网站备案自建网站 支付宝
  • 织梦网站备份几种方法南京计算机培训机构哪个最好
  • 网站制作论文5000字百度竞价排名事件分析
  • 企业网站建设思路2001国产卡一卡二新区
  • 在地区做网站怎么赚钱wordpress图床首页无缩略图
  • 网站登录页面空白宿州网站建设价格