0%

需求

我们在向线程池提交任务的时候,提交的顺序是ABCD,提交之后任务执行完毕的时间都是不确定的,比如执行完毕的顺序是CBAD,然后实际开发中有这样的需求是,只要得到第一个任务的执行结果,其他任务的执行结果就不考虑了,试想,如果没有jdk的实现的api的话,我们也可以操作,增加一个队列,让任务执行完毕之后,将任务的执行结果放入到队列的头部,第二执行完毕的任务的执行结果放在结果队列的第二个位置,以此类推,队列头部的就是第一个任务执行的结果。

Read more »

Executor

An object that executes submitted Runnable tasks. This interface provides a way of decoupling task submission from the mechanics of how each task will be run, including details of thread use, scheduling, etc. An Executor is normally used instead of explicitly creating threads. For example, rather than invoking new Thread(new(RunnableTask())).start() for each of a set of tasks, you might use:

Read more »

sleuth

  • 警犬、监视、追踪的意思

  • 服务链路分布式追踪

  • 微服务架构是一个分布式架构 ,他按业务划分服务单元,一个分布式系统往往有很多个服务单元,由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在一个请求可能需要调用很多个服务,而内部服务的调用复杂性决定了问题难以定位,所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,除了问题很快定位。

  • 举个例子,在服务系统中,一个来自用户的请求,想达到前端A(如前端界面),然后通过远程调用,到达系统的中间件B、C(如负载均衡、网关),最后到达后端服务D、E,后端经过一系列的业务逻辑计算后将数据返回给用户,对于这样一个请求,经历了这么多服务,怎样将它的请求过程的数据记录下来呢?这就需要用到服务链路追踪。

  • 目前,链路追踪组件有google的Dapper,Twitter的ziplin等,他们都是非常优秀的链路追踪开源组件。

  • spring cloud sleuth采用的是google的开源项目Dapper的专业术语。

    Read more »

spring cloud config

  • 用来为分布式系统中的基础设置和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分,其中服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息,加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,他们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。

    Read more »

zuul

api网关 所有的客户端请求通过这个网关访问后台的服务,他可以使用一定的路由配置来判断某一个url由那个服务来处理,并从eureka获取注册的服务来转发请求。
zuul1.png

Read more »

hystrix

  • hystrix监控和断路器,我们只需要在服务接口上添加Hystrix标签,就可以实现对这个接口的监控和断路器功能
  • Hystrix dashboard控制面板,提供了一个界面,可以监控各个服务上的服务调用所消耗的时间等等。
  • Hystrix Turbine监控聚合,使用Hystrix监控,我们需要打开每一个服务实例的监控来查看,而Turbine可以帮助我们把所有的服务实例的监控信息聚合到一个地方统一查看,这样就不需要挨个打开一个个的页面一个个查看。
    Read more »

feign

feign是一个声明式的伪http客户端,它使得编写http客户端变的简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign注解和JAX_RS注解。Feign支持可插拔的编码器和解码器。Feign整合了Ribbon与Hystrix,并和Eureka结合,能够实现负载均衡和断路器等效果。
简而言之:

  • feign采用的基于接口的注解
  • feign整合Ribbon、Hystrix
    Read more »