解决方案:外贸网站优化策略三:7款强大的SEO工具?
优采云 发布时间: 2022-10-03 08:27解决方案:外贸网站优化策略三:7款强大的SEO工具?
大多数SEO优化软件只能监控和显示网站相关的问题,而不是解决方案。不过除了提供可视化的网站问题列表,Woorank 还可以带来网站技术优化的解决方案。Woorank 指导您如何改进 网站 以满足 SEO 指标。
3、CanIRank()
CanIRank 是一个超级详细的关键词难度分析和网站优化工具。除了展示关键词的竞争水平,也为关键词的排名提供了有利的依据。
#4、SEMRush()
SEMRush在外链数据挖掘和竞争对手关键词优化排名等领域发挥着举足轻重的作用。通过SEMRush SEO搜索引擎工具的关键词、外链数据、参考域数据的下载和筛选,我们能够关键词优化我们的网站,以及更多有针对性的外部链接。连锁推广。
此外,SEMRush外贸网站SEO优化软件还可以有效识别外链的权重转移(dofollow/nofollow)。
#5、Keywordseverywhere()
Keywordseverywhere 是一个用于搜索引擎的关键词 研究插件。当我们在Google中使用target关键词进行自然搜索时,这个外贸网站关键词工具可以随时随地显示target关键词及其长尾搜索量,比赛,每次点击费用付费点击。
#6、KWfinder()
KWfinder的强大之处在于它对关键词趋势的准确预测和对关键词难度的准确把握,可以帮助我们进行关键词筛选。
#7、Siteliner()
对于网站页面和内容的搜索引擎优化,我们主要推荐Siteliner。它是对网站SEO内容的全面监控,可以免费提供完整的SEO报告。
Siteline 的突出特点是将您的网站与 Siteliner 数据库中的其他网站进行比较。为我们的网站SEO优化提供合理量化的指导。
#更多最新外贸网站推广、Facebook运营、SEO排名、Instagram社交媒体营销、YouTube视频营销实战攻略,请微信搜索关注公众号“外贸网站SEO推广策略”。
好了,文章的这个内容营销圈就分享到这里了。对线上推广创业感兴趣的可以加微信:Dao8484 备注:营销圈引流学习,我拉你进直播课学习群,每周135晚免费分享推广引流技术课程,实用干货!
看过这篇文章的人还看过以下内容:seo营销工具有哪些?,8个免费而强大的SEO工具?如何优化标题,标题优化的3个实用技巧?《SEO实用密码(第3版)》的精髓?关键词优化工具有哪些,关键词优化的高效工具有哪些?seo营销优化软件有哪些,15种SEO优化工具分析?
完整的解决方案:基于Golang的云原生日志采集服务设计与实践
<p style="white-space: normal;color: rgb(62, 62, 62);letter-spacing: 0.544px;font-size: 15px;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);text-size-adjust: auto;word-spacing: 2px;text-align: center;">点击上方"云时代架构"右上角选择“设为星标”
精品技术文章准时送上!</p>
一、背景
云原生技术的浪潮已经到来,技术变革迫在眉睫。
在这种技术趋势下,网易推出了青州微服务云平台,该平台集微服务、服务网、容器云、DevOps等于一体,在公司集团内得到了广泛的应用,也支持了许多外部客户的云原生转型和迁移。
其中,日志记录是通常容易被忽视的部分,但它是微服务和DevOps的重要组成部分。没有日志,就无法讨论业务排查,日志的统一采集也是许多业务进行数据分析、处理和审计的基础。
但在云原生容器化环境中,日志采集变得有些不同。
二、容器日志采集的痛点
传统主机模式
对于传统的物理机或虚拟机部署服务,日志采集清晰地工作。
服务日志
直接输出到主机,服务在固定节点上运行,手动或采取自动化工具在节点上部署日志采集代理,添加代理的配置,然后就可以启动采集日志。同时,为了方便后续的日志配置修改,还可以引入配置中心来发布代理配置。
Kubernetes 环境
在库伯内特斯,事情并没有那么简单。
有很多
在 Kubernetes 节点节点上运行不同服务的容器,并且有许多不同类型的容器日志存储,例如标准输出、主机路径、空地,pv 等。由于 Kubernetes 集群中 Pod 的主动或被动迁移、频繁的破坏和创建,我们无法像传统方式那样人为地向每个服务采集配置发送日志。此外,由于日志数据将在采集后集中存储,因此根据命名空间,pod,容器,节点甚至容器的环境变量和标签来检索和过滤日志非常重要。
以上就是不同于传统日志采集配置方式的要求和痛点,究其原因,是因为传统方式与 Kubernetes 分离,无法感知 Kubernetes,也无法与 Kubernetes 集成。
随着近年来的快速发展,Kubernetes已经成为容器编排的事实标准,甚至可以被认为是新一代的分布式操作系统。在这个新的操作系统中,控制器的设计思想驱动着整个系统的运行。控制器的抽象解释如下图所示:
由于库伯内特斯
良好的可扩展性,Kubernetes设计了自定义资源CRD的概念,用户可以自己定义各种资源,并在一些框架的帮助下开发控制器,这些框架使用控制器将我们的期望变为现实。
基于这个想法,对于日志采集,一个服务需要采集哪些日志和什么样的日志配置是用户的期望,所有这些都需要我们开发一个日志采集控制器来实现。
三、探索和建筑设计
有了上面的解决方案思路,除了开发控制器之*敏*感*词*绕这个思路的一些选择分析。
日志采集代理选择
日志采集控制器仅负责对接 Kubernetes、生成采集配置,不负责实际日志采集。市场上有许多日志采集代理,例如传统ELK技术堆栈的Logstash,CNCF毕业生项目Fluentd,最近推出的洛基,以及节拍系列的文件节拍。让我们快速看一下它。
代理集成模式
对于日志采集代理,通常有两种方法可以在 Kubernetes 环境中进行部署。
sidecar 的一种方式,就是将业务容器部署在同一个 Pod 中,这样,Filebeat 只采集业务容器的日志中,
而且只需要配置容器的日志配置,简单,隔离性好,但最大的问题是每个服务都必须有一个Filebeat才能采集,通常一个节点上有很多 Pod。内存等的额外成本并不乐观。
在每个节点上部署 Filebeat 容器的另一个也是最常见的部署通常是内存占用小得多,并且对 Pod 不具有侵入性,这更符合我们传统的使用方式。
同时,普遍采用 Kubernetes 的守护程序集部署,省去了安捷等传统的自动化运维工具,大大提高了部署运维效率。
因此,我们优先考虑达明斯特部署文件节拍的方式。
整体架构
选择Filebeat作为日志采集代理后,集成自研日志控制器后,从节点的角度看,架构如下:
日志记录平台将特定的 CRD 实例发送到库伯内特
集群,日志记录控制器瑞波币负责来自库伯内特的列表和监视容器和CRD实例。
通过Ripple的过滤和聚合,最终生成一个Filebeat输入配置文件,该文件描述了服务的采集路径路径、多行日志匹配等,并且还默认将PodName、Hostname等配置到日志元信息中。
文件节拍根据瑞波币生成的配置,自动在节点上重新加载和采集日志,并将其发送到Kafka或弹性搜索。
由于Ripple会*敏*感*词* Kubernetes 事件,因此它可以感知 Pod 的生命周期,无论 Pod 是被销毁还是调度到任何节点,它仍然可以自动生成相应的 filebeat 配置,而无需人工干预。
瑞波可以感知日志
由容器挂载的卷,无论是泊坞站 Stdout 的日志,还是使用主机路径、EmptyDir、Pv 来存储日志,您都可以在节点上生成日志路径并告诉 Filebeat 采集。
瑞波币可以获得CRD和波段信息
同时,所以除了默认在日志配置中添加PodName等元信息外,还可以结合容器环境变量、Pod标签、Pod注释等来标记日志,方便后续的日志过滤和检索查询。此外,我们还在Ripple中增加了日志定时清理功能,确保日志不丢失,进一步提升了日志采集的功能和稳定性。
四、 基于文件节拍的做法
功能扩展
通常,文件节拍
可以满足大部分日志采集需求,但是仍然无法避免一些需要我们自定义Filebeat的特殊场景,当然Filebeat本身也提供了良好的可扩展性。文件节拍目前只提供几种类型的输出客户端,如弹性搜索,卡夫卡,日志等。如果我们希望Filebeat直接发送到其他后端,我们需要自定义我们自己的输出的开发。同样,如果您需要过滤日志或添加元信息,您也可以制作自己的处理器插件。无论是添加输出还是编写处理器,Filebeat都提供了基本相同的想法。一般来说,有3种方式:
直接分叉文件节拍,在现有源代码上开发。
输出或处理器提供Run、Stop等接口,只需要实现类接口,然后在 init 方法中注册相应的插件初始化方法即可。
当然,由于 Golang 中的 init 方法仅在导入包时调用,因此您需要在初始化 Filebeat 的代码中手动导入。
复制文件节拍的 main.go 的副本,导入我们自主开发的插件库,然后重新编译。
基本上与模式1没有太大区别。
文件节拍
还提供了基于Golang插件的插件机制,需要将自研插件编译成.so共享链接库,然后在Filebeat启动参数中通过-plugin指定库的路径。
然而,事实上,一方面,高朗
插件并不成熟稳定,另一方面,自主开发的插件仍然需要依靠同一版本的libbeat库,还需要相同版本的Golang来编译,坑可能更多,不推荐。
如果您想了解有关Filebeat设计的更多信息,可以参考我们的文章。
()
为了支持各业务方的对接,我们扩展了grpc输出的发展,支持多Kafka集群的输出等。
三维监控
但是,
真正的困难是,在业务端实际使用后,各种采集日志,多行日志配置,或者采集二进制大文件导致Filebeat oom等问题。我们投入了更多时间来监控 Filebeat 和日志采集各个方向,例如:
接入青州监控平台,有磁盘io、网络流量传输、内存占用、CPU使用率、Pod事件报警等,保证了基础监控的改进。
新增日志平台数据全链路延时监控。
采集 Filebeat 自己的日志,通过自己的日志报告哪些日志文件开始采集,以及何时采集结束,以免每次都需要ssh检查各个节点上的日志配置来解决问题。
自主研发的Filebeat导出器,获取普罗米修斯,采集报告自己的指标数据。
通过立体的监控和增强,极大地方便了我们问题的调查,降低了运维和人工成本,保证了服务的稳定性。
五、高浪的性能优化和调优
从 Docker 到 Kubernetes,从 Istio 到 Knative,基于 Golang 的开源项目已经成为云原生生态系统的主力,Golang 的简单性和效率继续吸引着新的项目将其作为开发语言。
除了使用Golang编写Filebeat插件,开发日志采集控制器之外,我们的青州微服务平台还有许多基于Golang的组件,其中我们踩了很多坑,积累了一些Golang优化经验。
但很多时候,我们看到太多的GC原理,内存优化,性能优化,但往往在编写代码并完成项目之后,我们无法开始。实践是对真理的唯一检验。因此,自己检查和探索是提高姿势水平和发现关键问题的捷径。
为了优化性能,Golang深思熟虑地为我们提供了三个关键点:
下面是一个简单的示例。
进行同步。以池为例,同步。池通常用于保存和重用临时对象、减少内存分配和降低 GC 压力。有许多应用场景,例如FastHttp,它声称比使用同步的Golang官方Http快10倍。池以充分利用同步。池,文件节拍使用同步。池将批处理日志数据聚合成批处理并分批发送,Nginx-入口控制器也使用同步。池以在生成nginx配置时优化渲染效率。我们的日志记录控制器瑞波也使用同步。池以在呈现文件节拍配置时优化性能。
首先,使用 go 基准测试来测试是否未使用同步。池通过 go 模板呈现文件节拍配置的方法。
您可以看到显示每次执行方法的时间以及分配的内存的结果。
然后获取 go 基准测试生成的配置文件,并使用 go pprof 查看整体性能数据。
Go pprof实际上有很多数据供我们观察,这里只是内存分配信息。可以看出,基准测试在此期间总共应用了多达5个多G内存。
接下来,我们使用 go 跟踪在压力测试期间查看戈鲁廷、堆内存、GC 等。
这里只截获了600ms到700ms的时间段,从图中可以清楚地看到,在这100ms内发生了170个GC。
使用相同的方法和步骤来使用同步对其进行压力测试。池后的结果。
分配的内存总量减少到160MB,同期的GC数量减少到5个。差距是显而易见的。
总结与展望
在云原生时代,日志作为可观察性的一部分,是我们调查和解决问题的基础,也是后续大数据分析和处理的开始。
在这个领域,虽然有很多开源项目,但仍然没有强大而统一的日志采集代理,也许这种开花的场景还会继续下去。因此,我们也在自主开发的日志代理Ripple的设计中提出了更多的抽象,保留了与其他日志采集代理对接的能力。将来,我们计划支持更多的日志采集代理,以创建更丰富、更强大的云原生日志采集系统。