管理微服务的5个关键原则

管理微服务涉及五个关键原则。这些原则帮助运维团队管理基于微服务的应用程序。它们还促使开发人员考虑应用程序怎样运维,因为开发人员和运维共同都负责提供一个健壮且高质量的服务。为了实现这一点,在设计和开发应用程序时,让开发人员尽早参与运维是很重要的。在以后的时间重构这些决策是容易出错的、麻烦的,而且肯定不那么有效。

下面介绍一下IBM建议的管理微服务的5个关键原则

1. 运维

运维的工作是在生产环境中执行操作活动用以确保应用程序有合适的能力来应对负载,同时确保IT的工作遵从公司或政府的政策,等等。

微服务的运维推荐加入新技术的支持,这样运维任务就会十分轻松。例如,在负载管理中,微服务提供弹性支持,根据使用情况,基础设施可以自动伸缩。这些新的构建应用程序的方法,可以在工具、架构或开发没有进行大规模的变更的情况下对应用裁剪。

虽然微服务不需要使用容器来实现,但同时使用微服务与容器这两种技术是有益的。当您使用容器时,软件所需要的所有东西都被打包成独立的、轻量级的捆绑包,使部署和操作更加容易。建议使用Kubernetes开源系统,用于自动化容器应用程序的部署、扩展和管理。Kubernetes为许多运维任务提供了如下功能:

1. 基于资源需求的工作负载均衡,

 2. 自动化的部署和回滚服务

 3. 服务发现和服务的负载平衡

 4. 服务的水平伸缩

 5. 服务的自愈

正如您所看到的,许多典型的运维任务可以通过Kubernetes完成,这样您就可以专注于其他的运维活动。其中一个任务就是检查“合规”。例如,您可能需要检查是否符合安全、公司政策或由行业或政府强制执行的标准。这些检查应该已经在开发和测试阶段运行了。在生产中运行也是明智的,因为许多政策都在不断变化。

另外需要注意的是备份和归档。为满足灾备和监管需求,我们必须定期备份,这种备份可以是基于RPO(recovery point object),或者使用RTO(recovery time objective),。一个好的微服务设计,将与存储相关的活动外部化,这样这些存储任务就可以被限制在处理持久化的服务上。

2. 监控

每个微服务都必须被监视。在考虑使用监控解决方案之前,先要明确您的指导原则是服务用户的体验,该服务可能是一个人(面向前端服务)或系统(用于后端服务)。因此,关键的监控指标通常是可用性、性能、响应时间、延迟和错误率。

基于不同的监控方案,对于CPU,内存,磁盘的监控指标会显著不同。例如,随着IaaS和PaaS等基于云的运维模型的出现,应用程序所有者参与的监控工作也会减少。

对于微服务而言,为每个微服务建立一个HealthCheck API是良好的习惯。由于开发人员最了解关键资源和对他们的服务的检查,他们实现HealthCheck API是最合理的。

Prommetheus是一个开源的监控框架,而Fluentd是一个记录数据收集者。这两种工具都与Kubernetes合作。它们提供了某种程度的HealthCheck API,从而为开发人员利用它提供了便利。

另一个需要监视的重要内容是应用程序日志,因为它们提供了运行应用程序的行为,典型的用例是在事件诊断分析过程中对日志的解析和调查。临界警报可能也会在日志中公开,因此一个监控解决方案应该寻找log监控模式并警告操作团队。尽管微服务是松散耦合的,但它们彼此依赖。它们是在不同的编程语言中开发的,它们的执行特性是分布式的,并且具有高度的动态特性,因此必须将日志集中到一个中心位置,并从那里执行搜索和分析。

服务行为跟踪同样十分重要,可以使用一种技术:相关标识符。使用关联ID不仅有助于确定给定事务的执行路径,而且还支持添加时间上下文,例如添加延迟信息,添加服务层次结构,以及过程或任务执行时的串行或并行信息。推荐使用Open Traceing, 一个分布式跟踪的开放标准。

3. 事件与警告管理

监视解决方案可以检测到服务的问题,但是仍然会出现大量的警报。在这种网状体系结构中,服务依赖于彼此,因此一个服务中的性能下降可能导致每个依赖服务中的级联故障。为了避免仅仅发现问题而不是去寻找原因,事件管理系统是必要的。事件管理系统集成了来自各种服务监视、日志监视、基础设施监控以及警报。为此,需要事件管理系统结合微服务的拓扑信息和部署状态信息,对时间进行统一管理。在微服务的框架下,这些信息变化迅速,所以必须在合适的时间收集数据。像配置管理数据库(CMDBs)这样的传统方法有很高的风险,它保存的可能只是不完整或陈旧的信息。建议动态数据必须在系统检测时直接从(容器)管理系统中检索并保存。

这种信息同步的结果是报警信息包含准确的定位,具有可操作性。每个事件都应该与一个Runbook相关联,以便运维团队知道如何响应警报以及采取什么缓解措施。理想情况下,这些Runbooks是用脚本的形式编写的,这样事件管理系统就可以自动执行,并且只对一个人的问题进行处理。

当然,你不希望运维人员浪费时间盯着控制台,所以系统会在收到新警报时通知他们。通知可以通过各种渠道发送:电子邮件、短信或即时消息。

4. 合作

在运维团队被告知新的事件之后,他们会从诊断开始。第一步是在错误中隔离组件。在隔离之后,调查将继续观察到底发生了什么,以及可以做些什么来尽快恢复服务。在许多服务相互依赖的体系结构中,许多人可能需要协作。微服务的关键概念之一是支持多语言和多平台,支持专家间的交互,包括开发人员。“ChatOps”这个术语描述了这个过程,在这个过程中,人们使用即时消息通信平台来进行中小企业之间的协作。通过ChatOps平台,所有的交互都被记录在一个中心位置,您可以浏览日志,查看采取了哪些操作。

ChatOps并不局限于人类之间的相互作用。通过使用Bot技术,可以集成DevOps和服务管理工具。例如监视系统,它将显示在过去24小时内响应时间分布的图表,也可显示最近的部署任务。

此外,通过统一的信息展示平台,可以改善系统的可见性,从而加速系统恢复素服。由于基于微服务的应用程序在自然环境下的部署中是动态的,自动伸缩的、动态实例化的,所以对应用程序的准确理解是一个挑战。统一的信息展示平台可以展示系统拓扑、部署活动和操作状态,显示可用性和性能指标。还应该从用户的角度来展示关键服务指示器。

5. 故障分析

通过协作,运维团队最终确定了正确方法来缓解和恢复服务。为了防止这一事件再次出现,必须对其根源进行分析。团队间不能相互指责,推卸责任。将目标定为发现根本问题,而不是找到责任人。只有通过这种方式,人们才愿意分享自己的见解,并帮助他人从经验中学习。

根本问题发现后,下一步是寻找解决方法。系统应用甚至系统架构可能因此而修改。建议采用Agile的管理方式,将解决方案规划进每一个Spring,按部就班的实施。

运维面临的系统故障更多的来自系统的升级。为了实现系统平稳升级,许多公司采取了不同的方法。一些公司将运维工作推给了DevOps团队。在这个模型中,开发人员来负责系统可靠性。另一种方法是建立专门的系统可靠性团队。这个团队负责解决系统可靠性问题,至少要花50%的时间在工程上。例如,通过自动化减少重复工作,并帮助开发团队实现变更,升级。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 转载本文需注明出处:微信公众号EAWorld,违者必究。 微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所...
    72a1f772fe47阅读 3,473评论 0 38
  • 微服务最近非常流行,各大互联网公司纷纷采用微服务架构体系,微服务架构模式正在为敏捷部署以及复杂企业应用实施提供巨大...
    Sting阅读 9,050评论 0 57
  • “微服务架构”这一术语在前几年横空出世,用于描述这样一种特定的软件设计方法,即以若干组可独立部署的服务的方式进行软...
    ThoughtWorks阅读 16,887评论 1 71
  • 1. 微服务架构介绍 1.1 什么是微服务架构? 形像一点来说,微服务架构就像搭积木,每个微服务都是一个零件,并使...
    静修佛缘阅读 6,628评论 0 39
  • 2016年将是成为VR产业里程碑,VR技术成熟度已经达到市场爆发的临界点,消费级产品和平台级应用将会诞生。VR产业...
    5f029814c748阅读 209评论 0 0