
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
微服务架构开发是大多数软件编程开发程序员尤其是Java编程开发程序员应该熟练掌握的一种软件开发架构方式,下面我们就通过案例分析来简单了解一下,微服务链路风险类型与分析。
一、超时和SLA风险
客户端访问服务端的超时时间配置,和实际访问情况不符,是非常常见的一种链路风险。上游服务的超时配置过小,会导致一些本来可以正常返回的请求超时,影响服务的SLA和正常的服务体验;超时配置过大,会导致下游服务故障时上游服务超时等待的时间太长,严重时会把整个系统拖垮。因此,超时设置直接关系到系统的稳定性,需要有相应的机制指导服务的超时设置,并及时发现线上系统中的超时配置隐患。
二、强弱依赖或重试风险
微服务之间通信,如果该链路通信失败会导致整个请求处理失败,一般将这两个微服务之间的关系称之为强依赖,反之称之为弱依赖。我们可以基于服务的强弱依赖关系,进行降级、熔断等处理。
强弱依赖服务风险,是指链路通信之间的关系和预期不符。比如,服务A调用服务B的链路是弱依赖,但随着需求迭代业务逻辑发生变化,可能不经意间服务A调用服务B的链路实际上变成了强依赖,但大家仍然按照之前的先验知识,把它当成弱依赖,这就是一个很大的风险点。特别是链路故障时,基于弱依赖的前提进行降级等操作时,就可能会酿成悲剧,导致整个系统不可用。因此需要有相应的机制,定期检测出当前链路关系的风险点。
三、集群或拓扑风险
集群或拓扑风险是风险分析的一个主要来源。比如,某线上集群的一些机器因为保修临时下线一段时间,但机器修复好之后遗漏挂载,导致部分机器白白闲置;服务A调用服务B本来是同机房调用,由于故障或者流量切换演练等原因临时将调用关系切换到调用其他机房的服务B服务,但事后没有切回来,导致服务A调用服务B一直是跨机房访问,影响用户体验和系统稳定性;某服务S线上部署时没有考虑到地理位置因素,将过多的服务节点部署到同一个交换机下,交换机故障时导致服务同时有多个节点不可用,可用节点数不足导致服务雪崩。
四、链路调用风险
链路实时拓扑数据是一个宝藏,可以从中慢慢挖掘出链路调用层面的很多风险。比如,当前服务调用超过20个下游服务,扇出过大,不太符合微服务的设计准则,可以考虑是否有必要进行进一步的拆分。
微服务架构中,单个请求的链路特别长时,会带来一定的性能问题,因此可以从全局链路拓扑中将TOP10长的链路,或者链路深度超过6的链路列出来,反馈给业务人员,看看是否有必要进行架构层面的调整。
微服务拆分和设计过程中,建议不要出现两个微服务相互依赖的场景,可以通过链路拓扑图查找当前是否存在成环的链路,如果成环,说明服务之间产生了相互依赖,可以将类似风险反馈给业务人员进行整改。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。