zoukankan      html  css  js  c++  java
  • 服务治理平台微服务介绍

    开头:

    本次讲解基于前面两节的课程,使用用户微服务调用订单微服务,重点介绍下新一代微服务监控治理平台的一个使用,通过本次分享希望大家新一代微服务监控治理平台有个感官的认识,现在项目还在开发过程中,还有不足的地方,我在讲的地方有不足的地方也希望大家进行提问。。

    应用介绍

    应用是平台开发出的基本部署单元,一个应用只能属于一个系统。

    (5)一个应用有1到多个应用实例组。

    (4)应用实例组是平台中应用的实例分组,不同的应用实例组拥有独立的应用配置与管理能力,不同的应用实例组之间可以通过流控策略,实现应用的灰度发布能力。

    应用实例组下面有多个应用实例,应用实例是平台下实际部署应用的进程,应用实例属于某一个应用实例组。

    (1)  应用实例上下线

    通过设置实例的状态,使得实例不会被其他应用调用。这个是在客户端实现,客户端是通过ribbon做负载均衡,ribbon会过滤掉状态为OUT_OF_SERVICE的服务提供者实例

    (2)     API上下线

    通过设置API的状态,使得API不会被其他应用调用。这个是在服务端实现,通过在服务端增加Filter拦截器,对已下线的API的请求访问,返回403的状态码。

    服务限流策略

    服务限流是微服务集群自我保护的一种常用机制,我们对线上调用比较频繁及资源占用较大的应用都加上了相应的限流举措,针对应用我们提供了实例限流的策略。针对网关的限流,后期支持API 级别的服务限流、通过API的限流。通过限流功能保护微服务免受流量冲击。

    限流是对于每个应用实例独立计算,如设置每秒访问10次,一个应用有3个实例,则这3个实例每个都允许每秒访问10次。限流是通过在服务端的Filter里使用Guava的RateLimiter实现。

    这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。

    服务熔断功能的介绍

    在高并发场景下,我们希望一个请求如果不成功,不要占用资源,应该尽快失败,尽快返回。这就需要熔断策略,也即当A调用B,而B总是不正常的时候,为了让B不要波及到A,可以对B的调用进行熔断,也即A不调用B,而是返回暂时的fallback数据,当B正常的时候,再放开熔断,进行正常的调用。

    平台提供的熔断实现使用的是Hystrix,通过在页面配置熔断对象以及触发条件来设置断路器。熔断对象对应的是Hystrix的CommandKey,触发条件包括:

    手工熔断(强制打开熔断器)

    取消熔断(强制关闭熔断器)

    自动熔断(规定时间内请求数超过阈值并且失败率达到阈值才会触发熔断, 熔断后指定时间内尝试取消熔断)

    这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。

    负载均衡策略:

    负载均衡策略是服务治理的重要特性,主要是指应用调用的客户端选择合适的负载均衡策略来调用服务,我们提供了随机、循环、自定义等负载均衡策略;

    另外还支持容错,服务调用并不总是一定成功的,可能因为服务提供者节点自身宕机、进程异常退出或者网络出现故障等原因。对于服务调用失败的情况,需要有手段自动恢复,来保证调用成功。

    快速失败(Failfast):什么也不做,直接抛出异常失败

    自动切换(Failover):尝试访问新的实例,按指定次数尝试失败原地重试(Failback):尝试访问同一实例,按指定次数尝试

    这个配置通过写入到配置中心及时下放到各个应用,实现动态配置能力。

    链路分析功能点的介绍

    随着系统服务数量会逐渐增多,系统之间的关系也日益复杂,这个时候想要了解整个系统的运行情况就成为一个难题。

    1、通过链路监控你可以了解应用间的拓扑关系,分析应用上下游调用关系,梳理系统依赖。

    2、通过请求监控可以查看

    一个请求是成功还是错误,它的响应时间,以及它的调用链路:

    这一次请求经过了几个微服务,在每个微服务内的耗时是什么情况;

    1、当遇到请求耗时较长的情况,可以通过调用链分析调用瓶颈,快速定位异常。

    通过应用监控可以查看一个系统内应用之间的调用关系。单个应用的平均响应时间、平均吞吐以及慢的端点访问。

    通过实例监控可以查看一个实例的运行情况包括:平均吞吐、平均响应时间、CPU、内存以及SQL的执行。

    应用监控介绍

    2、JVM信息:JVM信息(线程信息、堆信息、非堆信息),系统CPU使用情况

    2、指标:

    显示应用多样的度量信息,展示了可以追踪的所有的度量,有了这些数据就可以做预警

    3、HttpTrace:可以展示当前应用最近100次的api调用信息

    日志功能:展示了当前的日志级别,更强大的是,它可以实时调整日志级别,而不用去改log4j2配置文件,也不用重启。在有问题需要更详细的日志的时候,非常方便。

    1、         线程功能:可以实时地查看每个线程的状态,并且能下载Thread Dump文件,方便有故障的时候分析。同样,还能下载Heap Dump文件,在占用内存居高不下,还不能GC时,可以用来分析。

    2、         映射功能:能查看所有的@RequestMapping的路径和方法及返回类型等。

    服务统计监控:

    应用调用:可以查看当前系统下应用在1天、1小时、十分钟请求的一个请求的一个统计分析

    在服务汇总模块:

    对服务进行实时的监控和信息告警,实现一个可视化的运维监控系统。API调用统计可以按照应用、实例组、实例、API来统计汇总请求信息,包括:响应状态码,请求数,最小响应时间,最大响应时间,平均响应时间以及响应时间总和。支持按应用、实例组、实例、API、时间段等条件进行查询以及按请求数和响应时间排序。

    总结:

    以上就是本次分享的主要内容,介绍了服务治理发展的 4 个阶段的治理需求及特点,给出了微服务治理的整体架构;重点介绍了微服务度量及分析体系的构建,这是微服务管控及管理的前提和基础;最后,分别针对微服务的线上及线下体系的治理做了深入的讨论。

     

  • 相关阅读:
    .NET Core VS Code 环境配置
    系统架构正交分解法
    面向接口可扩展框架之“Mvc扩展框架及DI”
    发送和接收数据包
    Easticsearch通信方式_API
    Web Api集成Swagger
    NET MVC RazorEngine 解析模板生成静态页
    NET单元测试的艺术
    NET平台机器学习组件-Infer.NET
    ActiveMQ相关背景(转)
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/12187021.html
Copyright © 2011-2022 走看看