【专题推荐】AIGC或将会改变内容领域的生产方式,带来整个行业的变革? 了解详情
写点什么

微服务架构,数字时代信息化建设的解药还是毒药?

  • 2019-10-23
  • 本文字数:3304 字

    阅读完需:约 11 分钟

微服务架构,数字时代信息化建设的解药还是毒药?

智能、互联时代已经来临,应用并发量激增,业务流程更加复杂,新技术迭代落地速度更快。采用传统单体应用架构开发,控制代码复杂度,保障系统可扩展性难度越来越大。微服务架构通过将独立业务流程解耦的设计理念快速赢得了大量架构师的关注。更加灵活的部署方式和便捷的服务拼装都使人眼前一亮。大量企业客户,特别是互联网企业基于微服务架构建设信息系统获得了成功。然而,微服务是否适合所有类型的应用系统呢?是否是治愈日益膨胀数字系统开发、管理难题的解药?


我们总是希望有完美的技术方案,然而,放之四海而皆准的应用架构并不存在。微服务架构是一把双刃剑,一方面能大幅度缓解单体系统开发、部署复杂性问题;另一方面,为客户数字体验保障,应用性能稳定性保障带来了新的挑战。不能解决负面影响,微服务就是一剂毒药。



单体架构应用系统



微服务架构应用


微服务架构应用的主要特点是业务功能模块松耦合,分布式部署。大部分业务功能模块都是单独部署运行的,彼此通过数据总线交互,基本都是无状态的服务,以确保能够灵活扩展。在这种架构下,从前台到后台的业务流程会经过多个服务节点,其中可能包括多台物理、虚拟机,容器和很多微服务进行处理、调用和传递。这种方式的主要优点是:


1、 业务逻辑复杂,系统庞大的应用系统能够持续交付、持续部署;


2、 服务业务逻辑独立,易于开发;


3、 服务之间相互耦合度低,可以独立部署;


4、 服务可以独立集群扩容;


5、 使应用能够快速引入新技术,支持多种语言开发的服务协同工作;


然而,微服务节点数量增速与业务复杂度成正比,微服务应用的复杂度使得通过手动管理维护应用拓扑结构已不现实。建设自动化、智能化程度更高的运维系统,首先要找到人工运维困难、耗时的问题点。微服务架构应用系统在业务处理,出现性能、稳定性或业务异常排查的过程中经常遇到的问题主要包括:


1、 应用节点数快速增加,复杂度急剧膨胀,导致测试、运维成本增加;


2、 业务流程处理链路变长,保障客户数字体验难度增加;


3、 业务逻辑和中间件解耦,动态性提升,日常管理难度增加;


4、 监控目标类型多,数据来源分散,故障定位分析困难。


要解决或缓解这些问题对企业运维体系的影响,首先需要具备微服务节点自动探查发现能力,所有节点信息和运行状态自动扫描录入系统,所有服务节点运行状态基于全景监控视图统一展现。全景监控视图重点突出风险探查、发现能力,发生风险第一时间重点突出显示风险点和相关服务节点,过滤海量无用信息(正常状态节点)。


总的来说,微服务应用运维运维难点主要有:1、服务节点众多;2、部署模式多样;3、故障定位困难;4、监控数据量激增;5、基础组件众多;6、代码调用路径变长。



微服务运维难点总结


目前开发运维团队解决问题经常使用的主要手段是采用 Prometheus、ElasticSearch、Skywalking、Zipkin、Zabbix 等代码链路追踪、埋点、日志分析、运行期应用指标监控开源工具自建设微服务应用监控系统。但实践结果显示,这种方式不但不能降低微服务监控运维成本,由于需要搭建多种监控系统协同工作,反而增加了系统复杂度,从多个系统接收告警,查询相关数据使得故障定位分析成本更高。额外增加的监控系统维护、管理和定制开发成本反而让事情变得更复杂。应对这些新技术带来的问题与挑战,解决问题的思路和方向需要转变。运维微服务应用需要转变的核心流程和建设方式,总结起来主要有以下四点:



建设关键点

业务优先一体化监控,提升系统可靠性

微服务应用运维,首先要转变的是将以基础设施、服务节点、接口可用性保障为主的运行期监控维护工作,转变为以保障客户数字体验,探查、处理已发生或将要发生的潜在全局风险为核心。将监控中心从指标、告警、工单转移到服务质量目标、用户体验指标等反映整体态势的聚合指标。这样会大幅度降低快速复杂化的微服务应用日常监控、管理工作量。结合网络、应用配置、部署结构等多种数据源监控数据拼接完整应用拓扑结构,能够自动探测网络拓扑、服务调用、部署依赖等多种应用拓扑关系,链路。进而围绕客户数字体验保障服务质量目标,打造业务优先的全景监控系统,提升系统可靠性。


建设目标:


1、 全景化监控,简化问题溯源


2、 业务状态可视化,简化定位分析


3、 全局态势分析,实时感知潜在风险


4、 故障溯源,海量数据溯源分析


建设效果参考:



全景化监控视图,故障风险一目了然



业务优先的全景化微服务应用



自动探查复杂应用架构,生成全景监控视图

划清责任边界,有序运维管理

微服务应用依赖中间件、运行环境资源类型众多。相关责任人职责明确,但指标告警和业务错误无法关联,责任边界难以界定。基于各自需求搭建分散监控系统,缺少全景化监控平台,出现风险将导致问题排查认责困难。因此,需要在一体化监控平台基础上,通过场景化运维仪表盘、看板或报表,将微服务开发、基础运维、应用运维、网络运维、SRE 等责任人围绕风险发现、定位、处理将工作流程和数据关联,从而实现责任清晰、运维有序。


建设目标:


1、 可视化层级视图管理,明确职责边界


2、 整合业务和监控指标,辅助风险根源定位


3、 有序关联运维场景,简化故障处理流程


建设效果参考:



开发运维一体化微服务监控管理



微服务应用代码定位分析

业务流程复杂,故障排查耗时

微服务应用业务耦合度低,请求处理链条更长,部署方式多样。导致故障追踪、排查难度增加。常用监控工具,如 zabbix、prometheus、grafana 结合使用可以实现在开发期通过 prometheus SDK 定义业务指标,zabbix 采集运行期环境状态指标,并通过 grafana 可视化监控仪表盘关联的方式实现。但是,这种方式需要开发人员介入做大量前期指标定义和代码修改工作,运维人员排查特定业务流程运行期相关中间件、环境依赖资源非常困难。实际应用,需要转变为对开发影响更小,运维人员容易部署,能够快速关联业务流程和监控指标的监控系统。基于 Google 提出的 Dapper 理论,借助海量数据关联分析和人工智能算法,运行期定义业务流程,映射代码链路,并自动关联业务相关资源和指标将是大势所趋。


建设目标:


1、 核心业务全景监控,一站管理业务状态


2、 实时监控业务,业务故障自动发现


3、 打通业务和技术指标,压缩故障分析过程


建设效果参考:



业务流程导向的微服务系统监控



微服务业务流程代码调用链路



微服务业务流程代码调用链路监控

监控数据分散,定位分析困难

采用过多监控、运维工具全量覆盖微服务应用运行期指标,势必造成多种监控数据采集工具采集的监控数据分散、告警独立,定位分析问题需要查询多个平台数据,难度增加。有效的解决方案是围绕业务,通过定制融合所有异构监控指标、代码链路、网络报文、日志等数据为一个运维数据中台。通过统一的风险探查、定位系统从业务角度发现、定位海量监控数据中的问题。


建设目标:


1、 运维数据融合存储,业务技术指标联动


2、 应用全链路监控,方便故障关联定位


3、 智能检测定位异常,支撑运维提效减负


建设效果参考:



支持各种微服务基础组件


海量数据快速检索



智能根源问题分析定位


企业需要能够精准应对微服务应用运维难点的智能化平台,支持以全景化监控视图整合应用监控数据,通过场景化仪表盘应对客户数字体验保障、业务流程监控、应用性能稳定性保障等场景,化繁为简,为企业落地微服务保驾护航。总的来说,建设落地智能化运维平台,需要考虑重点实现的核心能力项包括:



平台核心功能


综上所述,需要驯服微服务架构为企业所用,必需要有行之有效的客户体验保障、微服务应用监控运维系统。RealSight APM 产品为基础的微服务应用全景监控解决方案对症下药,在宝马中国、蒙牛集团、中国航空、宜昌三峡云、北京东城区等客户现场上线应用,运维效率显著提升,保障微服务架构发挥应有的价值。


作者介绍:


许 力,教授级高工,工学博士。2015 年毕业于大连理工大学计算机应用专业;国家软件架构新技术重点实验室 研究员;现任东软集团基础软件事业部 技术总监,兼任东软智能化运维产品 RealSight APM 产品经理。十余年平台产品研发经验,美国硅谷工作轮岗。大连理工大学企业特聘客座讲师;大连海事大学信息科学技术学院教学指导委员会委员。中国计算机学会(CCF)高级会员;中国计算机学会大数据专委通讯委员;美国计算机学会(ACM)高级会员; 美国电子电气工程协会(IEEE)会员。


2019-10-23 09:002126

评论 1 条评论

发布
用户头像
开源吗?
2019-10-27 15:14
回复
没有更多了
发现更多内容

别让你的 SaaS 产品由赋能变为“负能”

产品海豚湾

产品设计 产品运营 SaaS平台 B端产品 9月月更

面试突击87:说一下 Spring 事务传播机制?

王磊

Java 面试

车企如何完善车载小程序生态安全

Geek_99967b

小程序

编译器优化那些事儿(6):别名分析概述

openEuler

开源 编译器 openEuler 毕昇 JDK

【数据结构与算法】一篇文章带你玩懂 “栈和队列”(增、删、查、改)的实现_【附源码、动图】

Dream-Y.ocean

队列 数据结构与算法 9月月更

【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复

迷彩

Python 实时语音 实时聊天 9月月更

如何在笔记本上安装openEuler 22.03 LTS

openEuler

开源 操作系统 openEuler

开源之夏 | 【结项报告】毕昇Fortran编译器内联动态库函数str_copy

openEuler

开源 操作系统 openEuler 毕昇 JDK

openEuler 资源利用率提升之道 04:CPU 抢占和 SMT 隔离控制

openEuler

开源 openEuler

【docker】软链接迁移docker存储目录

非晓为骁

Docker 存储 迁移

千峰课程网安笔记(1)

吉师职业混子

9月月更

研发效能之技术治理&技术治理架构师

laofo

DevOps cicd 研发效能 持续交付 工程效率

Python语法之类和对象(1)

向阳逐梦

Python 9月月更 类与对象

第一模块作业

lsf1227

「架构实战营」

Python之类和对象(2)

向阳逐梦

属性 9月月更 子类的定义

揭开HPC应用的神秘面纱

openEuler

开源 openEuler

设计消息队列存储消息数据的 MySQL 表格

张立奎

破解windows系统密码

吉师职业混子

9月月更

rust语言写的贪吃蛇游戏

福大大架构师每日一题

rust 贪吃蛇 福大大

读书笔记|择一城以定财富,择一行以定发展

宇宙之一粟

读书笔记 职业 个人感悟 9月月更

【Python实践】使用Python实时语音控制电脑全局音量

迷彩

人工智能 语音识别 9月月更 控制电脑 语音控制

我也不想学之PHP系列(2)

吉师职业混子

9月月更

大模型的禾下乘凉梦,百度自己来做试验田

脑极体

前端工程师在面试时经常被问的闭包到底是什么?我用打包礼物的例子让你秒懂

wljslmz

JavaScript 闭包 9月月更

企业服务中出场率最高的活动目录AD到底是什么?本文带您好好了解一下!

wljslmz

AD 9月月更 活动目录

Python语法之模块和包(1)

向阳逐梦

9月月更 Python语法 模块的创建

【云原生 | 从零开始学Kubernetes】十一、k8s污点、容忍度和pod状态

泡泡

Docker 云计算 云原生 k8s 9月月更

跟着卷卷龙一起学Camera--内存池浅析04

卷卷龙

ISP 9月月更

这个C4D短片有点辣!热情起舞小金链尽显墨西哥黑帮气质

Renderbus瑞云渲染农场

影视制作 Renderbus瑞云渲染 3D电影制作

2022-09-27:给定一个棵树, 树上每个节点都有自己的值,记录在数组nums里, 比如nums[4] = 10,表示4号点的值是10, 给定树上的每一条边,记录在二维数组edges里, 比如ed

福大大架构师每日一题

算法 rust 福大大

跟着卷卷龙一起学Camera--内存池浅析05

卷卷龙

ISP 9月月更

微服务架构,数字时代信息化建设的解药还是毒药?_架构_许力_InfoQ精选文章