在这个人人都谈“云原生”的时代,企业在建设内部相关系统时常常会优先考虑云原生架构。那么,云原生架构的系统与传统架构系统有什么不同?又该如何建设呢?本文我们邀请京东架构师韩超老师分享了京东基于云原生架构的监控 - 日志系统的建设之路,希望能对想要建设基于云原生架构系统的读者有所助益。

云原生监控系统有什么特殊?

随着云计算的发展,我们发现很多系统都是基于云原生架构构建的,监控系统也不例外。云原生架构监控系统与传统架构监控系统到底有什么不同?这两者的本质区别是云原生架构监控系统需要以 Cloud Native 的方式来进行部署运维。

Cloud Native 是一个发展中的体系,简单来说,云原生架构需要融入 K8s 体系,让 Monitoring、Logging、Tracing 几大功能,按照 Cloud Native 的方式运作。从系统(K8s 或 PaaS)的视角来看,云原生架构的监控需要是一个标准的东西,而非把系统改得“七零八落“;从应用的视角来看,云原生架构的监控需要与系统融为一体,接入方式不能太复杂。

传统架构的监控系统与云原生架构的功能目标大致是相同的,但细节的把握不同,后者可以视为前者的“进阶”。当然,两种监控系统面临的挑战也各有不同。

传统架构的监控系统中,主要是面临多、快、好、省四个方面的挑战

  • 多系统需:监控要运作于数万主机、百万应用的环境中,而且开发、运维的负责度要做到 O(1)。

  • 快:监控系统要随着主机、应用快速部署完成。一台主机交付上线,有没有监控的部署速度应该是相同的;一组应用交付上线,配套的监控应当同步具备;

  • 好:监控的时效性、稳定性要强于应用。监控是应用的保障,发现问题的准确率、召回率是监控系统的关键指标。

  • 省:监控系统需要省资源,监控的 CPU、Memory 开销是监控的关键指标。

而基于云原生架构的监控系统,其挑战大多是来自于 Cloud Native 模式本身,主要包括:

  • Cloud Native 体系本身就有快速部署、自动扩缩等功能,既然应用具有这种特性,那么监控系统也需要具备同类特性;

  • 在云原生的 PaaS 中,K8s 与应用层都是标准的,监控系统作为介于二者之间的部分,“采集端侵入”的危害会更加严重;

  • 云原生秉承有标准化、自动化的核心理念,但是大型系统往往需要做“极限优化”,要满足标准化、自动化的“极限优化”,挑战就更大了。

京东如何构建监控系统?

最初,京东的应用程序全部都部署在物理机器上。这种部署方式不仅造成了物理机器资源的严重浪费,而且调度缺乏灵活性。由于物理机器的故障,应用程序迁移的时间要花数小时,无法实现自动扩展。

为了解决这些问题,京东从 2014 年开始尝试使用 Docker,并基于 OpenStack + Novadocker 架构创建了第一代容器引擎平台:JDOS1.0。此后,所有应用程序在容器里面运行,而不是在物理机器里面运行。其中,一个 OpenStack 分布式容器集群中最多有 10000 个计算节点,至少也有 4000 个计算节点。

2016 年,JDOS 1.0 的容器规模由 2000 个扩大到 100000 后,京东推出了新的容器引擎平台 JDOS 2.0,京东商城的“应用体系”从 OpenStack 切换到 K8s。

JDOS 2.0 的平台架构

京东云原生监控 - 日志系统

京东商城基础架构的 JDOS2.0 已经非常接近“云原生标准“,京东云原生监控 - 日志系统的发展和建设,与之同步。该系统的核心组成主要包括采集端、接入代理、存储模块、计算模块、服务控制中心、报警等。

  • 最核心的底层是京东商场基础架构自研的存储模块;

  • 中层则是其它各个核心模块,采用积木式可以进行排列组合;

  • 在核心的监控 - 日志系统之上是基于 API 的扩展能力,比如业务定制扩展、AIOps 扩展等。

京东云原生监控 - 日志系统各模块之间也是以服务化的方式进行联系,看起来就像是普通的应用。其中采集端比较特殊,因为它要放到 Node 环境中,并且要求每机一个。这是所有监控 - 日志系统都绕不过去的事情,京东将其做成 K8s 的标准化组件,做到了“低侵入性”。

京东监控 - 日志系统本质上都是标准的 K8s 组件,与京东容器平台 JDOS 关系密切。

  • 在 K8s 的视角,监控 - 日志系统是 DaemonSet、RS 的各个 Pod,并非改了系统。

  • 在 JDOS 容器平台的视角,监控 - 日志系统可以视为 JDOS 容器平台的一个“插件”,并非强耦合。

  • 从应用的视角来,监控 - 日志系统是一个“无需感知“的机制,例如上线无依赖。


建设监控 - 日志系统遇到的挑战

大型系统建设升级的挑战大多来自上线,上线类似于“在开车的过程中加零件”,需要保证各种稳定性。京东监控 - 日志系统也不例外,在上线的过程中,新、老系统采用“临时冗余化”、双写并行运行的模式,解决了平滑切换的问题。同时,小流量机制,也解决了占用 double 机器资源的问题。

另外,监控 - 日志系统上线常常会遇到由于“强侵入性”导致的上线顺序左右为难的问题。因此,京东监控 - 日志系统在设计之初就避免了这种问题。

报警在整个监控系统中是一个定制化极强、需求极强的模块,一般来说报警包括两个层面的东西,一是短信、邮件、IM 等通道,二是报警规则的设置引擎。

京东商城的 app 监控系统采用了极其灵活的报警规则机制,规则的设置在于使用者,而不在于监控系统的开发运维。这种设计给了各个业务开发“自我平衡”的机会,在运作的过程中,将报警的量、级别调整到比较合理的状态。同时,报警多了容易发生召回率高、准确率低;报警少了容易召回率高、准确率低。虽然这两点永远是矛盾的,但京东在技术层面也做了一些小的优化,比如自动合并、调整时间轴等。

目前京东商城的监控 - 日志系统最大的亮点在于:架构灵活 + 与时俱进架构灵活是空间维度的概念,包括对标架构、拓扑关系、部署方式三个方面;与时俱进是时间维度的概念,包括维护成本、演进模式、技术发展三个方面。

当然,该系统也还有很多值得优化的地方,在韩超看来京东监控 - 日志系统应该优化的地方也是很多大型系统架构层面的固有问题。

  • 多集群、多地域:整体架构超越了 K8s 集群的定义,监控 - 日志系统也需要进行应有的改变;

  • 整个系统的监控对象其实既有普通 App,也有数据库、缓存、队列等中间件,这里面需要整合,才能让每个业务的开发者更能感受到 Serverless 的优势;

  • 京东商城基础架构自研的 baudtime、baudlog 已经在很大程度上节省了存储资源,如果权衡读、写能力,仍有成本优化空间,查询体验也可以对标更好的 ELK。

京东如何建设基于云原生架构的监控 - 日志系统?相关推荐

  1. 宜泊科技与阿里云联合打造基于云原生架构的停车系统解决方案,加速智慧停车产业数字化发展

    宜泊信息科技有限公司成立于2015年6月3日,总部设立在成都.目前员工百余人,公司股东成员来自联想.腾讯.华为等知名企业.宜泊科技产品拥有多项停车场领域发明专利和软件著作权,解决方案已经广泛投入商业化 ...

  2. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

    基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题 背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视 ...

  3. 京东零售大数据云原生架构实践

    通常谈到大数据,想到的是大数据平台.Hadoop生态或者数据湖技术,关注于大数据存储.大数据计算方向上的技术发展与应用:谈到云原生,想到的是微服务架构.容器化或者SRE(Site Reliabilit ...

  4. .NET 云原生架构师训练营(系统架构)--学习笔记

    ▲ 点击上方"DotNet NB"关注公众号 回复"1"获取开发者路线图 学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第176篇原创文章 ...

  5. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题...

    背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...

  6. 从重大漏洞应急看云原生架构下的安全建设与安全运营(下)

    前言: 前一篇文章"从重大漏洞应急看云原生架构下的安全建设与安全运营(上)"中,我们简要分析了对于重大安全漏洞,在云原生架构下该如何快速进行应急和修复,以及云原生架构对于这种安全应 ...

  7. 用友云平台,真正的云原生架构,加速云应用落地

    数字化经济的出现,企业需要通过新技术实现数字化转型,完成企业管理和业务模式变革.而云计算是数字化中尤为重要且能够更快实现的技术手段. 真正的云应用必须是基于云原生架构的,PaaS是一个重要的步骤,因为 ...

  8. 用友云平台,真正的云原生架构,加速云应用落地 1

    数字化经济的出现,企业需要通过新技术实现数字化转型,完成企业管理和业务模式变革.而云计算是数字化中尤为重要且能够更快实现的技术手段. 真正的云应用必须是基于云原生架构的,PaaS是一个重要的步骤,因为 ...

  9. 业界首发|阿里云重磅发布云原生架构白皮书

    2020 年 7 月 21 日,由阿里云 20+ 位云原生技术专家共同编撰的<云原生架构白皮书>正式对外发布.作为业界首本全方位构建云原生架构规划与实践全景图的白皮书,本书在详细阐述云原生 ...

最新文章

  1. Request Connection: Remote Server @ 192.229.145.200:80
  2. 微信小程序php get_php处理微信小程序request请求
  3. linux使用ntp时间同步
  4. python实现组合问题_python3 最基本且简单的实现组合设计模式
  5. php 内容编码错误,PHP输出缓冲,ob_gzhandler引起的内容编码错误?
  6. 大学生利用漏洞薅肯德基羊毛,获刑两年半
  7. hdu 1176:免费馅饼
  8. 单处理器系统的进程调度_第三章:进程与线程
  9. openssh服务以及基于ssh的双机互信配置
  10. 修饰符new与override
  11. 软件安装管家软件目录
  12. Unity3D开发环境的搭建
  13. 数字图像处理(21): 图像金字塔(高斯金字塔 与 拉普拉斯金字塔)
  14. mysql省市区县街道
  15. CUDA版本与驱动对应情况
  16. 计算机用户名取名,重命名电脑用户名
  17. 英特尔 超核芯显卡 620mac_十代i9+3080显卡,男孩们的攒机快乐,还得拿出来显摆显摆!...
  18. 如何设置ie为默认浏览器
  19. j3455文件服务器,看烦了千篇一律的J3455?让黑群晖显示真实的CPU信息
  20. 罗密欧与朱丽叶迷宫问题

热门文章

  1. EOJ 3322 万年历(历史题)
  2. 景区介绍界面(Android)
  3. ckplayer播放线上视频问题
  4. 人工智能产品经理知识体系和学习计划
  5. 网易2019实习生招聘算法题(一)
  6. linux sd卡 分区变大,Linux下使用fdisk命令将高容量SD卡(SDHC)格成两个分区
  7. 知识小结------数据分析------Fisher‘s exact test(费希尔检测)
  8. 单片机八灯交替闪烁c语言代码,单片机闪烁灯汇编语言源代码大全(四款闪烁灯的汇编语言源代码)...
  9. sdnu oj 1228 Overwatch 互素
  10. 谷歌浏览器截图(截取整个网页)