容器时代的分布式记录(第二部分)

欢迎回到我们的系列。在第一部分中,我们谈到了微服务和容器的最近兴起。我们介绍了这种类型的体系结构引起的日志记录问题以及可能的解决方案 - 聚合。既然之前我们已经介绍了这些,现在让我们来看看服务架构中的一些不同的聚合模式。

源端聚合模式

第一个问题是,我们是否应该汇总 数据的 来源 - 在服务方面。答案显然是不唯一的。

没有 源聚合的聚合服务框架的最大好处 是简单。但是,简单的代价是:

  • 修正了聚合器(端点)地址。 如果您更改聚合器的地址,则必须重新配置每个收集器。
  • 许多网络连接。 还记得我们说我们需要小心不要超载我们的网络?这就是网络过载发生的原因。在源端聚合我们的数据要比在目的端聚合更有效的网络效率 - 导致网络支持的套接字和数据流更少。
  • 聚合器中的高负载。 源端聚合不仅会导致网络流量过大,而且会导致聚合器中的CPU过载,造成数据丢失。

现在我们来看看源端聚合的另一面。

在源头上聚合有一个缺点:这是一个更多的资源密集型。它需要每个主机上有一个额外的容器。但是这个额外的资源带来了几个好处

  • 更少的连接。 较少的连接意味着较少的网络流量。
  • 较低的聚合器负载。 由于此资源成本分散在整个数据基础架构中,因此您将不会有任何单个聚合器超载的机会,从而减少数据丢失的机会。
  • 容器中的配置较少。 由于每个收集器的聚合器地址是“本地主机”,所以配置被大大简化。目标地址只需要在一个节点(本地聚合容器)中指定。
  • 高度灵活的配置。 这种简化的配置使您的数据基础架构高度“模块化”。您可以将服务交换到您的内心。

目标端聚合模式

无论我们是否在源端聚合,我们也可以选择在目的端分别有聚合器。我们是否应该这样做,又是一个折中的问题。避免目标聚合限制节点的数量,从而导致更简单的配置。

仅来源聚合

但是,就像在资源方面一样,避免在目标方面的聚合带来了成本:

  • 目标端的更改会影响源端。 这是我们在源端没有聚合器时所看到的配置问题。如果目标地址更改,则必须重新配置源上的所有聚合器。
  • 更糟的表现。 目标端没有聚合器会导致许多并发连接和写入请求到我们的存储系统。取决于您使用哪一个,几乎总是会对性能产生重大影响。事实上,这是系统中最经常发生的部分,即使是最强健的基础设施也是如此。

源和目标聚合

最佳配置是在源 目标端都进行聚合 。 再一次地,折中的是,我们最终得到更多的节点和稍微更复杂的配置。但好处很明显:

  • 目标端更改不会影响源端。 这导致整体维护少得多。
  • 更好的性能。 通过在Source方面使用单独的聚合器,我们可以对聚合器进行微调,并且在Store上的写请求更少,从而使我们能够使用标准数据库,而且性能和缩放问题更少。

冗余

源端汇聚的另一个主要优势是 容错性。 在现实世界中,服务器有时候会停下来。处理在一个大型的微服务系统中产生的服务日志的不断,重负载使得服务器崩溃的可能性更大。当发生这种情况时,停机期间发生的事件可能会永远丢失。如果系统停留时间足够长,甚至源端缓冲区(如果您正在使用带有源端缓冲区的日志平台 - 一分钟内会更多)将会溢出并导致永久数据丢失。

目标端聚合通过增加冗余来提高容错能力 。通过在容器和数据库之间提供最后一层,可以将相同的数据副本发送到多个聚合器,而不会使用并发连接压倒数据库。

缩放模式

负载平衡 是另一个重要的数据基础架构考虑 处理负载平衡有上千种方法,但是我们关心的重要因素是放大之间的权衡 ,即使用单个HTTP / TCP负载均衡器来处理比例大小的队列和大量工作人员,或者 向外扩展,在负载平衡许多客户端汇聚节点分布,以循环的方式,和规模管理通过简单地添加更多的聚合。

哪种类型的负载均衡最好?再次,这取决于。您使用的方法应该取决于系统的大小,以及是否使用目标端聚合。

至少在概念上,放大比放大略显简单。正因为如此,它可以适合初创公司。但是,在最坏的时候,企业倾向于粉碎的规模有限。当你的服务每天增加到50亿个事件,并且每次需要做垃圾收集时突然开始崩溃,你不觉得讨厌 吗?

扩展比较复杂,但是(理论上)提供了无限的容量。您始终可以 添加更多聚合节点。

因此,我们介绍了微服务和容器可以创建的日志记录问题,以及聚合模式如何帮助解决这些问题。留意系列的最后一集,我们将在这里详细介绍Fluentd以及它在缓解这个过程中扮演的角色。

本文的版权归 Shedray大数据专栏 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能计算时代

Envoy和类似的系统比较

总的来说,我们相信Envoy为现代服务导向架构提供了独特且引人注目的功能。下面我们比较一下Envoy和其他相关的系统。尽管在任何特定的领域(边缘代理,软件负载平...

3886
来自专栏CSDN技术头条

基于Storm的实时计算应用实践

有赞使用storm已经有将近3年时间,稳定支撑着实时统计、数据同步、对账、监控、风控等业务。订单实时统计是其中一个典型的业务,对数据准确性、性能等方面都有较高要...

2768
来自专栏喔家ArchiSelf

CAP理论与分布式系统设计

S 先生 是一位难得的技术同行,学者气质,一见如故。s 先生 作为本公众号(wireless_com) 的第一位投稿者,老曹深感荣幸。CAP 和 分布式系统的...

774
来自专栏大数据和云计算技术

元数据概念

刘耀铭同学元数据系列作品的第一篇,大家支持! 其他元数据相关系列文章: 基于元数据驱动的ETL Hive 元数据表结构详解 1、 元数据是描述其他数据的数据(...

36211
来自专栏媒矿工厂

SDI向IP过渡中的标准化

伴随业务的发展、新媒体的不断拓展、高清化网络制播的发展,广播电视中心从节目制作播出到节目传输中的以SDI设备为基础的技术架构,已难以满足未来技术和业务扩展的发展...

1092
来自专栏Java架构师历程

Mysql海量数据存储和解决方案之—分布式DB方案

1)  分布式DB水平切分中用到的主要关键技术:分库,分表,M-S,集群,负载均衡

962
来自专栏水击三千

数据库设计(一) 需求分析

目前,大多数的应用系统都属于数据库应用程序,都离不开数据库的支持。数据库设计方案的优劣对于应用程序的运行至关重要。数据库设计过程就是针对具体的应用环境,设计优化...

23110
来自专栏不止思考

不懂高性能的负载均衡设计?没关系,架构师带你飞

在软件系统的架构设计中,对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。负载均衡本质上是用于将用户流量进行均衡减压的,因此在互联网的大流量项目中,...

722
来自专栏互扯程序

到底什么是分布式系统,该如何学习

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

905
来自专栏

集装箱时代的分布式记录(第二部分)

欢迎回到我们的系列。在第一部分中,我们谈到了微服务和容器的最近兴起。我们介绍了这种类型的体系结构引起的日志记录问题以及可能的解决方案 - 聚合。现在我们已经完成...

1728

扫码关注云+社区