China .NET Conf 2019-.NET技术架构下的混沌工程实践
这个月的8号、9号,个人很荣幸参加了China.NET Conf 2019,中国.NET开发者峰会,同时分享了技术专题《.NET技术架构下的混沌工程实践》,给广大的.NET开发小伙伴介绍混沌工程和高可用性改造实践。会后大家伙聚餐的时候,陈计节老师建议大家将各自的议题分享到社区,分享给大家。因此,今天和大家分享我的技术专题《.NET技术架构下的混沌工程实践》。 先放几张大会照片: 整个专题主要分为四个部分:
一、.NET分布式、微服务架构下的高可用性挑战 目前,我们特来电的技术架构是分布式、微服务化的,线上超过1000台Server,高可用保障压力很大:
一张全链路监控图可以反映我们系统的复杂: ? 例如主机CPU被打爆的问题,线上经常会遇到: 经历了线上各种高可用性问题后,我们做了很多反思和总结: 系统在实现了分布式、微服务化之后,我们到底有多少把握来保证系统的正常运行??? 如果出现问题,整个分布式系统会变得非常“混乱”,甚至会引发系统的大规模宕机。 因此,我们有必要在线上事故出现之前,提前识别出系统有哪些弱点和问题,统一管控系统的固有混沌。 这套管控系统固有混沌的方法和体系,就是我们今天要介绍的主角:混沌工程。 二、混沌工程简介 1. 什么是混沌工程? 通过受控的实验,掌握系统运行行为的过程,称为混沌工程。 ? ? 混沌工程的典型实践:Chaos Monkey ? ?? 2. 为什么需要混沌工程? ? ?混沌工程可以提升整个系统的弹性。 3. 混沌工程怎么做? ? ?混沌工程的一般实施步骤: 1 选择系统正常运行状态下的可度量指标,作为基准的“稳定状态”
2 混沌实验分为实验组和对照组,都能保持系统的“稳定状态”
3 对实验组注入混沌事件,如服务不可用、中间件宕机等混沌事件
4 比较实验组和对照组“稳定状态”的差异
? ?如果混沌实验前后系统的“稳定状态”一致,则可以认为系统应对这种混沌事件是弹性的、高可用的。 4. 实施混沌工程的推荐原则
? ?这里大家会问:在生产环境上搞混沌实验,能行吗? 5. 现实中的混沌工程 ? 生产环境必须以稳定为前提,因此推荐O2O模式的混沌实验:即线下演练、线上验证 ? ? ? ?那么,.NET技术架构下的混沌工程怎么做? 三、.NET混沌工程的实践和成果分享 ? 我们线上系统主要用到了以下.NET技术栈和开源技术:
? ? 在上述.NET 技术架构下,我们梳理了大量的混沌工程事件: ? ?? ? ?? ? ?? ? ? ?通过大量的混沌实验,我们逐步建立了提升系统高可用性的方法论和体系: ? ? ? ? ? ?.NET技术架构下的高可用性改进-依赖治理、容错降级? ? ? ? ? ? 业务场景:
? ? ? ? ? ?如何应对:识别强弱依赖,对弱依赖进行降级,对强依赖有限降级? ? ?
? ? ?? ? ? ? .NET技术架构下的高可用性改进-解耦/隔离? ? ? ? ? ? ? 业务场景: ? ? ?? ? ? ? ?如何应对: ? ? ? ? ? ? ? ?.NET技术架构下的高可用性改进-超时治理? ? ? ?? ? ? ? ?业务场景: ? ? ? ? ? ? ? ? 应对方案: ? ? ? ? 示例: ? ? ? .NET技术架构下的高可用性改进-重试补偿? ? ? ? ? ? ? ? ? 业务场景: ? ? ? ? 应对方案: ? ? ? ? 示例: ? ? ? 高可用改进还有很多技巧,这里不一一详细给大家赘述了。 ? ? ??通过对系统进行全面的高可用性改进,提升了我们对线上系统的信心! 四、 展望和规划 ? ? 2019年,我们启动了混沌工程实践,逐步建立了混沌工程的自有方法论和体系,通过近一年的混沌工程实践,混沌工程文化逐渐被开发团队所认可。目前,混沌工程已经逐步过渡到线上生产环境进行(这来自于足够的信心和把握)。但这只是一个起步,未来:
? ? 目标:通过混沌工程揭示问题、解决问题、形成闭环,不断提升系统高可用性。 以上是本次China.NET Conf 2019的技术专题,分享给大家。 ? 周国庆 2019/11/15 ? ? ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iis – ASP.NET网站文件被黑了……怎么样?
- asp.net – 实体关系图/实体数据模型(.edmx)中的(0..1 — *
- asp.net – 从源代码,aspx,xaml中提取可本地化的字符串到资
- asp.net – 使用Team City快照依赖项时,您使用快照的后期构
- asp.net – 将OpenID集成到网站的注册过程中
- asp.net-mvc – 我应该在ASP.NET MVC中使用Anti-XSS安全运行
- asp.net-web-api – ASP.NET WebAPI支持每种方法的媒体类型
- .net – 如何将多个数据视图合并为一个?
- asp.net-mvc-3 – 从控制器发送电子邮件
- asp.net-core – ASP.NET MVC6脚手架在BETA 8中不起作用