微服务治理与统计分析
引言:
微服务架构下,服务拆得越细,服务的粒度越小,可组装性就越好;与之相对的服务之间的调用关系就会变复杂,为了保证服务更好的运行,需要对这些服务进行监控和管理。本文大家介绍下EOS微服务平台如果对微服务进行日志查看、API调用统计、限流、熔断、负载均衡的管理。
目录:
1.EOS微服务平台简介
2.微服务监控统计
3.微服务治理
1.EOS微服务平台简介
1、域是平台中一组系统的统称,通常为一组系统定义成有业务含义的域,比如信贷域。一个域有多个系统,一个系统只能属于一个域。一个域下可以日志中心、注册中心、配置中心、APM监控中心已经断路器监控中心
2、系统是平台中一组应用的统称,通常为一组应用定义成有业务含义的系统,比如信贷系统。一个系统有多个应用,一个应用只能属于一个系统。
3、应用(微服务应用)是平台开发出的基本部署单元,一个应用只能属于一个系统,一个应用有1到多个应用实例组。
4、应用实例组是平台中应用的实例分组,每个应用可以有1到多个应用实例分组,不同的应用实例组拥有独立的应用配置与管理能力,不同的应用实例组之间可以通过流控策略,实现应用的灰度发布能力。应用实例组下面有多个应用实例。
5、应用实例是平台下实际部署应用的进程,应用实例属于某一个应用实例组。
2.微服务监控统计
1、应用监控
通过应用监控可以查看一个系统内应用之间的调用关系。单个应用的平均响应时间、平均吞吐以及慢的端点访问。
2、实例监控
通过实例监控可以查看一个实例的运行情况包括:平均吞吐、平均响应时间、CPU、内存以及SQL的执行。
3、请求监控
通过请求监控可以查看一个请求是成功还是错误,它的响应时间,以及它的调用链路:经过了几个微服务,在每个微服务内的耗时是什么情况。
4、API调用统计
API调用统计可以按照应用、实例组、实例、API来统计汇总请求信息,包括:响应状态码,请求数,最小响应时间,最大响应时间,平均响应时间以及响应时间总和。支持按应用、实例组、实例、API、时间段等条件进行查询以及按请求数和响应时间排序。
5、应用日志查看
应用日志汇聚多个应用实例的日志,进行统一查看。查看时支持按实例以及时间段进行查询过滤,应用日志自带traceId, spanId这些请求追踪号。
3.微服务治理
1、实例上下线
通过设置实例的状态,使得实例不会被其他应用调用。这个是在客户端实现,客户端是通过ribbon做负载均衡,ribbon会过滤掉状态为OUT_OF_SERVICE的服务提供者实例。
2、API上下线
通过设置API的状态,使得API不会被其他应用调用。这个是在服务端实现,通过在服务端增加Filter拦截器,对已下线的API的请求访问,返回403的状态码。
3、熔断
EOS的熔断实现使用的是Hystrix,通过在页面配置熔断对象以及触发条件来设置断路器。熔断对象对应的是Hystrix的CommandKey,触发条件包括:
- 手工熔断(强制打开熔断器)
- 取消熔断(强制关闭熔断器)
- 自动熔断(规定时间内请求数超过阈值并且失败率达到阈值才会触发熔断, 熔断后指定时间内尝试取消熔断)
这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。
4、限流
EOS现在的限流是对于每个应用实例独立计算,如设置每秒访问10次,一个应用有3个实例,则这3个实例每个都允许每秒访问10次。限流是通过在服务端的Filter里使用Guava的RateLimiter实现。
这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。
5、负载均衡
EOS的负载均衡使用的是Ribbon实现,可以针对每个目标客户端设置规则类型,支持:随机、循环、自定义等;另外还支持容错,容错是指当对某个实例的调用超时后的补救措施:
- 快速失败(Failfast):什么也不做,直接抛出异常
- 失败自动切换(Failover):尝试访问新的实例,按指定次数尝试
- 失败原地重试(Failback):尝试访问同一实例,按指定次数尝试
这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。
以上向大家分享了普元EOS 8 微服务平台里治理与统计分析,希望对大家有所帮助。不足之处,也请多多指正。
关于作者:王文斌,普元高级软件工程师,开源技术爱好者,容器技术专家,曾参与浦东发展银行BPM项目、银联PAASV1等项目。
关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。