精华内容
下载资源
问答
  • https://github.com/netflix/hystrix/wiki https://github.com/netflix/hystrix https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html 推荐阅读: 【120】面试官:谈谈什么是微服务...

    程序员的成长之路

    互联网/程序员/技术/资料共享 

    关注

    阅读本文大概需要 5.5 分钟。

    来自:blog.csdn.net/qq_41497111/article/details/92067565

    服务熔断

    服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

    服务降级

    服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。

    熔断VS降级

    相同点:

    • 目标一致 都是从可用性和可靠性出发,为了防止系统崩溃;

    • 用户体验类似 最终都让用户体验到的是某些功能暂时不可用;

    不同点:

    • 触发原因不同 服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;

    Hystrix简介

    Hystrix:英 [hɪst'rɪks] 美 [hɪst'rɪks] ,翻译过来是“豪猪”的意思。在分布式环境中,不可避免地会出现某些依赖的服务发生故障的情况。Hystrix是这样的一个库,它通过添加容许时延和容错逻辑来帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止跨服务的级联故障,并提供了退路选项,所有这些都可以提高系统的整体弹性。

    Hystrix的设计目的:

    • 通过第三方客户端的库来为访问依赖服务时的潜在故障提供保护和控制;

    • 防止在复杂分布式系统中出现级联故障;

    • 快速失败和迅速恢复;

    • 在允许的情况下,提供退路对服务进行优雅降级;

    • 提供近实时的监控、报警和操作控制;

    接下来我们演示如何使用Hystrix,eureka服务注册中心以及message-service服务提供者无需更改。

    使用Hystrix

    引入Hystrix依赖

    在 pom.xml 文件中引入Hystrix依赖:

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.6.RELEASE</version>
     </parent>
     
     <properties>
      <spring-cloud.version>Finchley.SR2</spring-cloud.version>
     </properties>
     
     <dependencies>
      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <!-- Eureka-Client 依赖 -->
      <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>
      <!-- Feign 依赖 -->
      <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-openfeign</artifactId>
      </dependency>
      <!-- Hystrix 依赖 -->
      <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
      </dependency>
     </dependencies>
     
     <dependencyManagement>
      <dependencies>
       <!-- SpringCloud 版本控制依赖 -->
       <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
       </dependency>
      </dependencies>
     </dependencyManagement>
    
    

    修改启动类

    在MessageCenterApplication启动类上增加@EnableCircuitBreaker注解:

    @EnableFeignClients
    @EnableCircuitBreaker
    public class MessageCenterApplication {
     
    	public static void main(String[] args) {
    		new SpringApplicationBuilder(MessageCenterApplication.class).web(WebApplicationType.SERVLET).run(args);
    	}
     
    }
    
    

    这里我们在启动类中又增加了@EnableCircuitBreaker注解,用来开启断路器功能。如果你觉得启动类上的注解个数有点多的话,可以使用一个@SpringCloudApplication 注解来代替@SpringBootApplication(或者@EnableEurekaServer)、@EnableDiscoveryClient、@EnableCircuitBreaker这三个注解。

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableCircuitBreaker
    public @interface SpringCloudApplication {
    }
    
    

    修改Controller

    接下来,我们为MessageCenterController中的getMsg()接口增加断路器功能,修改部分代码如下:

     @GetMapping("/msg/get")
     @HystrixCommand(fallbackMethod = "getMsgFallback")
     public Object getMsg() {
      String msg = messageService.getMsg();
      return msg;
     }
     
     public Object getMsgFallback() {
      return "祝您 2019 猪年大吉,'猪'事如意!";
     }
    
    

    先启动Eureka,再启动一个8771端口的message-service服务,最后启动message-center。待启动完成之后,Eureka注册中心实例注册信息如下:

    此时,访问 http://localhost:8781/api/v1/center/msg/get ,返回如下结果表明服务调用成功:

    然后,停掉message-service服务,再次请求 http://localhost:8781/api/v1/center/msg/get ,返回结果如下:

    可以看出fallback中的信息被直接返回了,表明Hystrix断路器调用成功。

    注意:fallback方法的签名需要和原方法保持一致。

     /**
      * 获取消息详情
      */
     @GetMapping("/api/v1/msg/detail/{id}")
     @HystrixCommand(fallbackMethod = "getDetailFallback")
     public MessageEntity getDetail(@PathVariable(name = "id") Long id) {
      return messageService.getById(id);
     }
     
     /**
      * 获取消息详情退路
      */
     public MessageEntity getDetailFallback(Long id){
      return null;
     }
    
    

    Feign结合Hystrix

    以MessageService的Feign客户端为例,为其添加Hystrix断路器功能。

    修改Feign客户端

    通过配置@FeignClient注解的fallback属性来位MessageServiceClient指定一个自定义的fallback处理类(MessageServiceFallback)。

    @FeignClient(name = "message-service", fallback = MessageServiceFallback.class)
    public interface MessageServiceClient {
     
     @GetMapping("/api/v1/msg/get")
     public String getMsg();
     
    }
    
    

    创建Fallback处理类

    MessageServiceFallback需要实现MessageServiceClient接口,并且在Spring容器中必须存在一个该类型的有效Bean。在这里,我们使用@Component注解将其注入到Spring容器中。

    @Component
    public class MessageServiceFallback implements MessageServiceClient {
     
     @Override
     public String getMsg() {
      System.out.println("调用消息接口失败,对其进行降级处理!");
      return "消息接口繁忙,请稍后重试!";
     }
     
    }
    
    

    修改配置

    在新版本的Springcloud中,Feign默认关闭了对Hystrix的支持,需要在application.yml进行配置:

    feign:
      hystrix:
        enabled: true
    
    

    当message-service服务不可用时,请求 http://localhost:8781/api/v1/center/msg/get,返回结果如下:

    查看后台日志,打印如下内容,表明fallback方法被成功调用了:

    监控Hystrix

    启用健康监控

    Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。

    若要使用Actuator对Hystrix 流进行监控,除了需在工程POM文件中引入spring-boot-starter-actuator依赖:

      <!-- Actuator 依赖 -->
      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
    
    

    还需要在application.yml 中添加如下配置:

    management:
      endpoints:
        web:
          exposure:
            include: hystrix.stream
    
    

    启用Hystrix-Dashboard

    使用Hystrix一个最大的好处就是它会为我们自动收集每一个HystrixCommand的信息,并利用Hystrix-Dashboard通过一种高效的方式对每一个断路器的健康状态进行展示。

    值得注意的是,在使用HystrixCommand对RibbonClient进行包装的时候,你需要确保你配置的Hystrix超时时间要比Ribbon的超时时间长,包括由它们引起的重试时间,举个例子:如果你的Ribbon连接超时时间是1秒,并且Ribbon会连续重试请求3次,那么你的Hystrix连接超时时间需要配置成稍大于3秒。

    引入Hystrix-Dashboard依赖

    在 pom.xml 文件中引入Hystrix-Dashboard依赖:

      <!-- Hystrix Dashboard 依赖 -->
      <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
      </dependency>
    
    

    修改启动类

    在MessageCenterApplication启动类上增加@EnableHystrixDashboard注解:

    @EnableFeignClients
    @SpringCloudApplication
    @EnableHystrixDashboard
    public class MessageCenterApplication {
     
     public static void main(String[] args) {
      new SpringApplicationBuilder(MessageCenterApplication.class).web(WebApplicationType.SERVLET).run(args);
     }
     
    }
    
    

    仪表盘界面

    启动应用,访问 http://localhost:8781/hystrix ,打开Hystrix-Dashboard监控首页。

    在这里配置好需要监控的Hystrix流地址 http://localhost:8781/actuator/hystrix.stream ,开始监控。

    参考文章

    https://github.com/netflix/hystrix/wiki 

    https://github.com/netflix/hystrix 

    https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html

    <END>

    推荐阅读:

    【120期】面试官:谈谈什么是微服务?

    【119期】谈谈在项目中,如何应对高并发流量

    【118期】面试官:你真的清楚 i = i++和 i = ++i 的区别吗?

    5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「2048」,即可免费获取!!

    微信扫描二维码,关注我的公众号

    朕已阅 

    展开全文
  • 平台的运营目标重点不是持续增加新用户, 而是通过服务好老用户, 从而进一步提升用户活跃度。所以, 平台运营的主要方法有以下3种。 平台运营方法1:举办活动 平台的运营方法有很多, 比较常见的有线上征文...

    原创不易,麻烦点个关注,点个赞,谢谢各位。

    平台期运营方法

    平台期的运营目标重点不是持续增加新用户, 而是通过服务好老用户, 从而进一步提升用户活跃度。所以, 平台期运营的主要方法有以下3种。

    平台期运营方法1:举办活动

    平台期的运营方法有很多, 比较常见的有线上征文、 抽奖、 游戏等, 线下的有比赛、 评选、 聚会等, 这些活动都可以提升用户活跃度。

    平台期运营方法2:用户等级

    进入平台期, 另外一种常见的运营方法是, 推出用户等级体系, 通过用户等级刺激用户活跃度。平台期提升用户活跃度最有效的活动是线上一个小游戏产品“积分送礼”, 用户可以用自己的积分抽奖, 获得的虚拟奖品可以送给社区好友, 提升好友的魅力值。这个小游戏激活了社区用户, 用户彼此以送礼为乐, 形成了社区等级体系的循环, 极其显著地提升了用户活跃度。同样, 新浪微博在平台期也推出了微博会员, 通过用户等级体系, 促进微博用户的活跃度。迅雷作为下载工具, 也根据用户下载行为和评论, 设计了下载会员等级, 这些都是为了提升用户使用产品的活跃度。

    平台期运营方法3:新功能拉动

    平台期运营除了举办活动和通过用户等级刺激用户活跃度, 另一种方法是从产品方面着手, 在核心功能以外推出新的功能拉动用户活跃度。微信的朋友圈就是新功能, 它是区别于移动通信以外的社交功能, 我们现在花在朋友圈上的时间很多, 很好地带动了用户在微信上的停留时长。同样, 陌陌除了聊天功能以外, 也推出了“留言板”和“聊天室”功能。在用户需求全过程中推出新功能, 是平台期活跃度提升的好办法。

    如果运营平台期是在产品自然发展、 用户开始衰减时出现, 说明产品核心功能还不够强, 运营的关键是解决产品的根本问题, 同时通过活动、 用户等级或新功能拉动, 维持用户活跃度。如果平台期是由运营主导, 产品发展趋势很好, 可有意放缓用户拓展, 这时运营的重点是产品稳定性与用户体验的改善, 不展开强运营手段的拉动。所以, 平台期的运营方法需要根据产品
    及产品的发展状态决定。

    总结下来, 平台期运营的重点如下:

    (1) 有意进入平台期, 为下一个爆发期做好准备。

    (2) 平台期产品主要解决稳定性与用户体验。

    (3) 平台期运营不是发展新用户, 而是服务好老用户, 运营的核心指标是活跃度。

    (4) 平台期运营的最终目标是提升口碑传播力。

    网络运营周期总结:

    *种子期是产品最难的阶段, 留存率是关键, 不在乎来多少人, 而在乎有多少人留下来。种子期成功, 产品成功一半。

    *爆发期是产品成功的标志, 来源量是关键, 产品形成口碑影响力, 能成功的产品一定有爆发期。

    *平台期是用户爆发增长后有意控制产品节奏的时期, 活跃度是关键, 重点做好系统稳定和产品用户体验。

    *爆发期和平台期交替出现, 产品才能不断稳定增长。

    *产品上线后就是运营, 运营的重点是完善产品功能, 是加强流量推广, 还是构建用户体系, 根据产品发展阶段, 要采用不用的运营策略。网络运营周期的难点在种子期运营, 新产品启动最难, 所以新产品上线不要急于推广, 而要投入更多时间讨论运营方法和策略, 因为绝大多数产品是死在种子期。

    展开全文
  • 什么是服务降级

    千次阅读 2018-11-29 14:30:59
    什么是服务降级 服务降级,就是对不怎么重要的服务进行低优先级的处理。说白了,就是尽可能的把系统资源让给优先级高的服务。资源有限,而请求无限的。如果在并发高峰,不做服务降级处理,一方面肯定会影响整体...

    什么是服务降级
    服务降级,就是对不怎么重要的服务进行低优先级的处理。说白了,就是尽可能的把系统资源让给优先级高的服务。资源有限,而请求是无限的。如果在并发高峰期,不做服务降级处理,一方面肯定会影响整体服务的性能,严重的话可能会导致宕机某些重要的服务不可用。所以,一般在高峰期,为了保证网站核心功能服务的可用性,都要对某些服务降级处理。

    服务降级手段
    拒绝服务
    判断应用来源,高峰时段拒绝低优先级应用的服务请求,保证核心应用正常工作。也可以随机拒绝请求,直接返回服务器繁忙,避免同时涌入过多的请求,这在电商秒杀时用的特别多。

    关闭服务
    既然是高峰期,那么可以关闭一些冷门的或者边缘不重要的服务,给核心服务让出资源。如淘宝每年双11时候都会关闭如评价、确定收货等一些与下单核心业务无关的服务,以保证用户下单支付正常,当然肯定也会使用拒绝服务,0点高峰期很多用户看到的基本是服务器繁忙。

    展开全文
  • 1、商家开店后,平台会判断店铺是否符合新手直通条件,符合直通条件的店铺直接通过新手考核;不符合直通条件的店铺进入新手,店铺等级为‘新手’。...想快速过新手需要通过抖音服务商走前置申报路线。 ...

    1、商家开店后,平台会判断店铺是否符合新手期直通条件,符合直通条件的店铺直接通过新手期考核;不符合直通条件的店铺进入新手期,店铺等级为‘新手’。日限单量为1000单。
    2、进入新手期的店铺,平台将根据店铺成交订单量的情况对店铺经营能力进行审核,审核材料包括 商品资质、质检报告、仓库库存视频、打包发货视频、客服接线视频。在这里插入图片描述
    想快速过新手期需要通过抖音服务商走前置申报路线。

    展开全文
  • 社会需求永远推动技术发展的动力,随着云计算的快速发展,云计算的相关产品也...对于云服务器很多站长都处于迷茫,不是特别了解什么是云服务器?因此,针对什么是云服务器?云服务器建站有哪些优势?小编将为大家...
  • 服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。即使应用被销毁也依然可以工作。 服务基本上包含两种状态,Started和Bound如下表所示: 1.2 生命周期 服务拥有生命周期方法,可以实现监控服务...
  • 它最大的特性就是可以实时处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志、消息服务等等。 Linkedin于2010年贡献给了Apache...
  • 弹性云服务器的意思,就是指运行...通常情况下,购买的服务器会一直保持原样,在3-5年的折旧内,服务器的配置基本不会发生变化。但客户购买云服务器后,则可以随着业务量的增减及时调整、变更服务器配置,这传统ID
  • 域名是什么?网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识固定的IP地址,以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用了一种唯一、通用的地址格式...
  • 二十一世纪什么最贵?房子!XX翡翠城三物业服务方案希望能帮助你对房地产管理多一些了解,欢迎下载XX翡...该文档为XX翡翠城三物业服务方案,一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 网域名称系统(DNS,Domain Name System,有时也简称为域名)因特网的一项核心服务, 它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网, 而不用去记住能够被机器直接读取的IP...
  • 前言 因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录。这对于用户来说很不友好,于是...前文中已经提到SSO指的多个系统中只需登录一次,那么什么是CAS呢? CAS本质上一种实现单点登录.
  • 记得点击文章末尾的“阅读原文”查看哟~下面先一起看下本期周刊摘要吧~周末愉快~奇舞推荐■ ■ ■高能文章。从服务可用性、缓存、日志三个维度总结视频侧开发高并发 N...
  • 架构day7-HTTP服务

    2020-11-25 21:37:16
    1.什么是http ...中文名:超文本传输协议 一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台...2.什么是超文本 包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成
  • 大家好,我是IT修真院深圳分院第十二学员,一枚正直...1.1 Nginx是什么? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发...
  • 为了方便大家理解,我们尽量用通俗的语言和举例子的方式讲解,并且文中还配备了漫画供大家参考学习。 作者:漫话编程 ...为了方便不同需求的用户,很多云计算服务商都会提供很多形式的云服务,这里面比较...
  • 1.什么是备份? 备份就是把重要的数据或者文件复制一份保存到另一个地方 2.为什么做备份? 数据在公司中很重要!!!! 备份就是为了恢复 3.能不能不做备份 对于重要的数据一定要备份 对于不重要的数据可以不...
  • 巴比特服务于区块链创新者隔离见证SegWit---Segregated Witness,最早由Pieter Wuille于2015年12月6号在香港扩容大会上提出,经过几...
  • “人性定理”也叫“主体人自我肯定原理”,指的是任何一个健康的人的任何一个行为,都是以服务于他自己为目的的。...即人都具有行为选择自由,没有什么外在力量,可以无条件地决定主体我只能是什么,而不能是...
  • PAGE4 / NUMPAGES4 PCIe更换 常见服务器PCIe扩展卡更换 魏道付 华云数据...1 项目环境 无锡地铁3号线一1号线南延线获得国家发展和改革委员会批准建设的重点项目该工程项目中有大量的信息网络系统设备集成而轨道交
  • 什么是tuscany

    2018-06-25 10:55:40
    大家好,我IT修真院武汉分院第14的学员,一枚正直纯洁善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务9的知识点——Tusacny什么是TUSCANY?要了解Tuscany 先得知道SOA, SCA.SOA它面向服务的体系结构...
  • BlockMania第21线上分享活动再次展开,9月27日的主题为『为什么POS公链需要Staking衍生品?——已经锁仓的币怎么卖?』,DeBank/DappPub社区创始人 汤洪波先生参与到本期的AMA活动中来,为大家带来精彩分享。 ...
  • 创易是什么

    2016-11-11 07:59:49
    创易是什么? 创易是 “面向开发者和中小微企业的一体化技术服务平台”。我们关注我们用户群从0-1和高速成长阶段(即面向他们的朝阳阶段),如图: 创易关注客户的发展阶段 我们对用户群做了深入研究和思考...
  • 大家好,我IT修真院郑州分院第十的学员,一枚正直纯洁善良的java程序员 今天给大家分享一下,修真院官网java任务九,深度思考中的知识点——什么是SOA?什么是SCA?什么是微服务? 背景介绍 平台随着业务的...
  • 近期参加一些业界的技术大会,“微服务架构”的话题非常之火,也在一些场合聊过服务化架构实践,最近几文章期望用通俗易懂的语言聊聊了个人对服务化以及微服务架构的理解,希望能给大伙一些启示。如果有遗漏,也...
  • 什么是 Nginx

    2021-02-28 19:34:33
    另一方面,在高峰(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。 (2)高扩展性,跨平台 Nginx的设计极具扩展性,它完全由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。 ...
  • 服务治理主要针对于当前分布式架构下多服务、微服务等。 服务是分布式系统下的一个不大不小的部分,有了服务的组成,整个系统才能活起来。...其中服务设计主要针对于服务的设计、开发,而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,755
精华内容 702
关键字:

服务期是什么