微服务架构开发实战日志与监控:微服务日志管理将面临的挑战

日志来自正在运行的进程的事件流。对于传统的JavaEE应用程序而言,有许多框架和库可用于日志记录。Java Logging (JUL)是Java自身所提供的现成选项。除此之外,Log4j、Logback和SLF4J也是其他一些流行的日志框架。

这些框架都能很好地支持UDP及 TCP。应用程序将日志条目发送到控制台或文件系统。通常使用文件回收技术来避免日志填满所有磁盘空间。

日志处理的最佳实践之一是关闭生产中的大部分日志条目,因为磁盘IO的成本很高。磁盘IO不但会减慢应用程序的运行速度,还会严重影响它的可伸缩性。将日志写入磁盘也需要较高的磁盘容量。当磁盘空间用完之后,就有可能降低应用程序的性能。日志框架提供了在运行时控制日志记录的选项,以限制必须打印及不打印的内容。这些框架中的大部分不仅对日志记录控件提供了细粒度的控制,还提供了在运行时更改这些配置的选项。

另外,日志可能包含重要的信息,如果分析得当,则可能具有很高的价值。因此,限制日志条目本质上限制了用户理解应用程序行为的能力。所以,日志是一把“双刃剑”。

对于传统的单个架构而言,日志管理本身并不存在难点,毕竟所有的日志文件都存储在应用所部署的主机上,获取日志文件或搜索日志内容都比较简单。但分布式系统则不同,特别是微服务架构所带来的部署应用方式的重大转变,都使得微服务的日志管理面临很多新的挑战,主要有以下几种。

微服务架构开发实战日志与监控:微服务日志管理将面临的挑战

日志文件分散

======

微服务架构所带来的直观结果,就是微服务实例数量的增长,伴随而来的就是日志文件的递增。

在微服务架构里,每个微服务实例都是独立部署的,日志文件分散在不同的主机里。如果还是按照传统的运维方式,登录到应用程序所在的主机来查看日志文件,这种方式基本上不可能在微服务架构中使用。所以需要有一套可以管理几种日志文件的独立系统。

日志容易丢失

======

从传统部署移到云部署时,应用程序不再锁定到特定的预定义机器。虚拟机和容器与应用程序之间并没有强制的关联关系,这意味着用于部署的机器可能会随时更改。特别是像Docker这样的容器,通常来说都是非常短暂的,这基本上意味着不能依赖磁盘的持久状态。一旦容器停止并重新启动,写入磁盘的日志文件将会丢失。所以不能依靠本地机器的磁盘来写日志文件。

事务跨越了多个服务

=========

在微服务架构中,微服务实例将运行在孤立的物理或虚拟机上。在这种情况下,跟踪跨多个微服务的端到端事务几乎是不可能的。跨多个微服务的事务如图12-1所示。

微服务架构开发实战日志与监控:微服务日志管理将面临的挑战

在图12-1中,每个微服务都将日志发送到本地文件系统。在这种情况下,事务1先调用应用1,然后调用应用3。由于应用Ⅰ和应用3运行在不同的物理机器上,它们都将各自的日志写入不同的日志文件。这使得难以关联和理解端到端的事务处理流程。另外,由于应用Ⅰ和应用3的两个实例在两台不同的机器上运行,因此很难实现服务级别的日志聚合,最终导致了日志文件的碎片化。


日志集中化的意义

========

为了解决前面提到的日志管理的挑战,首先需要对传统的日志解决方案进行认真的反思。因此需要新的日志管理解决方案,除了解决上述挑战外,还需要考虑以下的功能。

  • 能够收集所有日志消息并在日志消息之上运行分析。

  • 能够关联和跟踪端到端的事务。

  • 能够保存更长时间的日志信息,以便进行趋势分析和预测。

  • 能够消除对本地磁盘系统的依赖。

  • 能够聚合来自多个来源的日志信息,如网络设备、操作系统、微服务等。

解决这些问题的方法是集中存储和分析所有日志消息,而不考虑日志的来源。这种新的日志解决方案中采用的基本原则是将日志存储和处理从执行环境中分离出来。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

Java核心架构进阶知识点

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的

image

image

image

内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中…(img-HsPqcjom-1712990300311)]

  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值