一篇带你从零开始学微服务( 三 )


加权轮询算法在轮询算法基础上的改进,可以通过给每个节点设置不同的权重来控制访问的概率,因此主要被用在服务节点性能差异比较大的情况 。
比如经常会出现一种情况,因为采购时间的不同,新的服务节点的性能往往要高于旧的节点,这个时候可以给新的节点设置更高的权重,让它承担更多的请求,充分发挥新节点的性能优势 。
最少活跃连接算法与加权轮询算法预先定义好每个节点的访问权重不同,采用最少活跃连接算法,客户端同服务端节点的连接数是在时刻变化的,理论上连接数越少代表此时服务端节点越空闲,选择最空闲的节点发起请求,能获取更快的响应速度 。
尤其在服务端节点性能差异较大,而又不好做到预先定义权重时,采用最少活跃连接算法是比较好的选择 。
一致性 hash 算法因为它能够保证同一个客户端的请求始终访问同一个服务节点,所以适合服务端节点处理不同客户端请求差异较大的场景 。
比如服务端缓存里保存着客户端的请求结果,如果同一客户端一直访问一个服务节点,那么就可以一直从缓存中获取数据 。
服务监控不管是单体架构,还是微服务架构,监控都是必不可少的 。只不过微服务架构更加复杂,监控起来也就更加不容易 。
对于一个微服务来说,必须明确要监控哪些对象、哪些指标,并且还要从不同的维度进行监控,才能掌握微服务的调用情况 。
 

一篇带你从零开始学微服务

文章插图
 
监控对象监控对象可以分为四个层次,由上到下可归纳为:
  • 用户端监控: 通常是指业务直接对用户提供的功能的监控 。
  • 接口监控: 通常是指业务提供的功能所依赖的具体 RPC 接口的监控 。
  • 资源监控: 通常是指某个接口依赖的资源的监控 。
  • 基础监控: 通常是指对服务器本身的健康状况的监控 。主要包括 CPU 利用率、内存使用量、I/O 读写量、网卡带宽等 。
监控指标搞清楚要监控的对象之后,需要监控具体哪些指标呢?
  • 请求量: 请求量监控分为两个维度,一个是实时请求量,一个是统计请求量 。实时请求量用 QPS(Queries Per Second)即每秒查询次数来衡量,它反映了服务调用的实时变化情况 。统计请求量一般用 PV(Page View)即一段时间内用户的访问量来衡量,比如一天的 PV 代表了服务一天的请求量,通常用来统计报表 。
  • 响应时间: 大多数情况下,可以用一段时间内所有调用的平均耗时来反映请求的响应时间 。但它只代表了请求的平均快慢情况,有时候我们更关心慢请求的数量 。为此需要把响应时间划分为多个区间,比如 0~10ms、10ms~50ms、50ms~100ms、100ms~500ms、500ms 以上这五个区间,其中 500ms 以上这个区间内的请求数就代表了慢请求量,正常情况下,这个区间内的请求数应该接近于 0;在出现问题时,这个区间内的请求数会大幅增加,可能平均耗时并不能反映出这一变化 。
  • 错误率: 错误率的监控通常用一段时间内调用失败的次数占调用总次数的比率来衡量,比如对于接口的错误率一般用接口返回错误码为 503 的比率来表示 。
监控维度一般来说,要从多个维度来对业务进行监控,包括下面几个维度: