常见的微服务故障

背景

       微服务架构指的是将大型复杂系统按功能或者业务需求垂直切分成更小的子系统,这些子系统以独立部署的子进程存在,它们之间通过轻量级的、跨语言的同步(比如REST,gRPC)或者异步(消息)网络调用进行通信。

常见的微服务故障

现象

       在微服务生态系统堆栈的顶层是各个微服务。对于开发团队来说,因为它们完全依赖于良好的开发实践、良好的部署实践以及开发团队构建、运行和维护其单个微服务的方式。

假设微服务层下面的基础设施相对稳定,微服务经历的大多数事件和中断几乎都是自行造成的。应该让的开发人员针对其微服务中,自己发现完整的根本原因和故障,即他们收到的告警,将来自其微服务的关键指标的变更触发(有关监视、日志记录、告警和微服务密钥指标的详细信息)。

如是一个服务失败示例, 通常需要隔离它

常见的微服务故障

还有一些情况是,服务之间有依赖的,其有一个服务失败导致多个服务失败。这时你需要多个故障转移Failover


常见的微服务故障


       代码审查Code Review不完整、缺乏适当的测试覆盖率以及不规范开发流程(具体来说,缺乏标准化开发流程)会导致将错误代码部署到生产环境中,而通过跨微服务团队标准化开发流程是可以避免故障。如果没有一个稳定可靠的部署管道,其中包含Staging、金丝雀和生产阶段的设置,在将任何错误完全部署到生产服务器之前捕获任何错误,在开发阶段测试未捕获的任何问题都可能导致微服务本身、其依赖项以及依赖于它的微服务生态系统的任何其他部分出现严重事件和中断。

       当我们平台缺少微服务应用层监控时,不能及时收到告警,做出决策,最终可能会引起大规模的微服务实例失败。

       那些本身模块或服务设计有问题,如不规范的程序重试逻辑,不正确的缓存使用场景。这些都会导致某个微服务的失败,这些需要在测试过程时需要发现与解决,包括架构设计评审。

       任何特定于微服务体系结构也可能失败,包括任何数据库、消息中间件、任务处理系统等。这也是微服务中的常规和特定代码错误会导致故障以及不正确的错误和异常处理:当微服务失败时,未处理的异常是经常被忽视的罪魁祸首。最后,如果服务未做好突发增长做好准备,流量的增加可能会导致服务失败。


总结

一些最常见的微服务故障包括:

• 不完整的代码审查

• 糟糕的架构和设计

• 缺乏适当的单元和集成测试

• 部署错误

• 缺乏适当的监控

• 错误和异常处理不当

• 数据库故障

• 可伸缩性限制


注意: 我们不能依赖容器编排平台Kubernetes来解决以上问题,很多时候是研发流程的问题,通过事前过程来预防微服务的失败,而不是通过事后控制。


今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
*怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

常见的微服务故障

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。