微服务架构开发实战日志与监控:微服务日志管理将面临的挑战
从传统部署移到云部署时,应用程序不再锁定到特定的预定义机器。虚拟机和容器与应用程序之间并没有强制的关联关系,这意味着用于部署的机器可能会随时更改。特别是像Docker这样的容器,通常来说都是非常短暂的,这基本上意味着不能依赖磁盘的持久状态。一旦容器停止并重新启动,写入磁盘的日志文件将会丢失。所以不能依靠本地机器的磁盘来写日志文件。
事务跨越了多个服务
=========
在微服务架构中,微服务实例将运行在孤立的物理或虚拟机上。在这种情况下,跟踪跨多个微服务的端到端事务几乎是不可能的。跨多个微服务的事务如图12-1所示。

在图12-1中,每个微服务都将日志发送到本地文件系统。在这种情况下,事务1先调用应用1,然后调用应用3。由于应用Ⅰ和应用3运行在不同的物理机器上,它们都将各自的日志写入不同的日志文件。这使得难以关联和理解端到端的事务处理流程。另外,由于应用Ⅰ和应用3的两个实例在两台不同的机器上运行,因此很难实现服务级别的日志聚合,最终导致了日志文件的碎片化。
日志集中化的意义
========
为了解决前面提到的日志管理的挑战,首先需要对传统的日志解决方案进行认真的反思。因此需要新的日志管理解决方案,除了解决上述挑战外,还需要考虑以下的功能。
-
能够收集所有日志消息并在日志消息之上运行分析。
-
能够关联和跟踪端到端的事务。
-
能够保存更长时间的日志信息,以便进行趋势分析和预测。
-
能够消除对本地磁盘系统的依赖。
-
能够聚合来自多个来源的日志信息,如网络设备、操作系统、微服务等。
解决这些问题的方法是集中存储和分析所有日志消息,而不考虑日志的来源。这种新的日志解决方案中采用的基本原则是将日志存储和处理从执行环境中分离出来。
在集中式日志解决方案中,日志消息将从执行环境发送到中央大数据存储。日志分析和处理将使用大数据解决方案进行处理。因为相比与在微服务执行环境中存储和处理大数据而言,大数据解决方案更适合及更有效地存储和处理大量的日志消息。
集中化日志管理的系统架构
============
如图12-2所示,集中化日志管理系统解决方案中包含了许多组件。

这些组件如下。
-
日志流:这些是来自源系统的日志消息流。源系统可以是微服务,也可以是其他应用程序甚至网络设备。在典型的基于Java的系统中,这相当于对Log4j日志消息进行流式传输。
-
日志托运:这些组件负责收集来自不同来源或端点的日志消息。然后,日志托运组件将这些消息发送到另一个端点,如写入数据库、推送到仪表板,或者将其发送到流处理端点以供进一步实时处理。
-
日志存储:这是所有日志消息将被存储在能够用于实时分析的地方。通常情况下,日志存储将是能够处理大量数据的NoSQL数据库,如HDFS等。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题

JVM面试专题

Java并发面试专题

Kafka面试专题

MongDB面试专题

MyBatis面试专题

MySQL面试专题

Netty面试专题

RabbitMQ面试专题

Redis面试专题

Spring Cloud面试专题

SpringBoot面试专题

zookeeper面试专题

常见面试算法题汇总专题

计算机网络基础专题

设计模式专题

**
[外链图片转存中…(img-rBtmZyh3-1711109354278)]
计算机网络基础专题
[外链图片转存中…(img-kP8qVXcT-1711109354278)]
设计模式专题
[外链图片转存中…(img-aOv9qS7B-1711109354279)]
更多推荐
所有评论(0)