写点什么

Contentsquare 跨多个服务的通知解决方案:微服务和 Apache Kafka

  • 2023-10-30
    北京
  • 本文字数:1059 字

    阅读完需:约 3 分钟

大小:505.13K时长:02:52
Contentsquare跨多个服务的通知解决方案:微服务和Apache Kafka

Contentsquare 平台的许多场景都需要通知功能。作为其微服务架构的一部分,该公司创建了一个跨多个服务的通用解决方案。在实现过程中,开发人员改进了可观察性,同时还克服了一些可扩展性挑战。

 

Contentsquare 的通知功能可以用于密码重置、API 配额超标告警等,并根据用户的喜好通过电子邮件、Slack 或 Microsoft Teams 发送。该公司选择循序渐进地推出与通知相关的功能,以便在需要时提高性能和可扩展性。



通知组件(来源:Contentsquare工程博客

 

Contentsquare 的平台使用了微服务架构,通知子系统由几个微服务组成。Notification Consumer 负责处理来自Apache Kafka主题的消息。Mailer Service 用于电子邮件通知发送,并使用EJS模板引擎根据预配置的模板呈现电子邮件内容。最后,Integration Service 负责 Slack 和 Microsoft Teams 通知,它将基于Slack的Block KitMicrosoft Teams Adaptive Cards编写 JSON 消息体。Slack Service 和 Microsoft Teams Service(如下所示)分别负责向 Slack 或 Microsoft Teams API 发送通知消息。



用于向 Slack 和 Teams 发送通知的微服务(来源:Contentsquare工程博客

 

Contentsquare 软件工程师Joseph-Emmanuel Banzio分享了该团队在推出通知功能时的经验:

在此过程中,我们遇到了几个瓶颈,为此,我们扩展并增强了系统的可靠性。一个值得注意的挑战是,在创建 Notifications 主题之前,我们最初使用了单个 Kafka 主题进行微服务间通信。在我们发布实时告警测试版之前,这个功能一直运行良好。

 

除了使用专用的 Kafka 主题进行告警通知外,该团队还优化了通知存储,以免读取时出现高延迟。他们实现了一种数据保留机制,用来删除旧的通知记录。另一个需要调查的问题是,一些用户没有收到电子邮件。经过仔细研究,这是由于 SPF(Sender Policy Framework)配置错误引起的,安全团队已经解决了这个问题。

 

为了帮助解决电子邮件通知问题,该团队创建了一个专门的电子邮件可观察性解决方案。其中,它会定期检索第三方电子邮件服务收集的发送事件并存储在 Contentsquare 的平台中。这种方法提供了电子邮件通知流的端到端可见性。

 

在该功能上线的过程中,开发人员还致力于提高了平台的可观察性。他们创建了一个Kibana仪表板来监控和分析日志,一个Grafana仪表板来监控通知微服务使用的云资源。此外,该团队还扩展了对 Kafka 生产集群的监控,以确保资源利用率和 Consumer Group Lag 在可接受的范围之内。将来,该团队计划提升系统弹性,以防系统故障,并提高通知发送的及时性,实现近实时发送。

 

原文链接:

https://www.infoq.com/news/2023/10/contentsquare-notifications/

2023-10-30 08:0063311

评论

发布
暂无评论
发现更多内容

华为云弹性公网IP,如何解决现代企业的网络IP烦恼

科技怪授

弹性公网IP

超高性价比的云服务器-华为云耀云服务器

科技之光

聚焦云计算、大数据、人工智能等开源技术,这场开源开发者的盛会不容错过!

OpenAnolis小助手

人工智能 云计算 大数据 COSCon'22 开源盛会

Wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniPCIe-Module//QCA9882/QCA9880

wallys-wifi6

QCA9882 MT7915

华为云对象存储OBS,安全可靠的云存储服务,让企业轻松上云

科技之光

精细化边缘安全防护:如何防止CDN域名被恶意刷量?

阿里云CloudImagine

CDN 边缘安全

将 NGINX 部署为 API 网关,第 3 部分:发布 gRPC 服务

NGINX开源社区

nginx api 网关 gprc

华为云CDN,如何赋能企业数字化发展?

IT科技苏辞

华为云虚拟专用网络VPN,专为解决现代企业云链路痛点而生

科技怪授

网络 网络VPN

聊一聊作为高并发系统基石之一的缓存

Java全栈架构师

Java 缓存 后端 高并发 架构师

华为云CDN,海量资源智能路由,让内容传输更快一步

IT科技苏辞

华为云虚拟专用网络VPN,为现代企业打造优质的混合云计算环境

科技怪授

网络VPN

前端监控系列4 | SDK 体积与性能优化实践

字节跳动终端技术

性能优化 前端监控 sdk 体积优化

全嘉宾阵容官宣 | 2022 云原生峰会即将启动,实战派企业向你发出邀请

阿里巴巴云原生

阿里云 云原生 峰会

10-6-华为云OBS大数据存算分离方案,助力企业顺利实现数字化转型!

科技之光

Spring Boot「15」统一异常处理

Samson

Java spring 学习笔记 spring-boot 10月月更

Spring Boot「16」自定义错误页面

Samson

Java spring 学习笔记 spring-boot 10月月更

NFTScan 与 Cobo 达成合作,双方将共同推动 NFT 资管安全市场的发展

NFT Research

区块链 NFT 数据基础设施

阿里技术专家压箱底好货:Redis深度历险笔记

小小怪下士

Java redis 程序员

华为云CDN,是怎样满足各行业全场景加速需求

IT科技苏辞

【融云出海白皮书免费看】出海洞察之沙特的「土豪行为」盘点

融云 RongCloud

白皮书 出海

ript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

03 详细架构设计

神奇的叶叔叔

JavaScript刷LeetCode模板技巧篇(二)

Geek_07a724

JavaScript LeetCode

JavaScript刷LeetCode-字符串类解题技巧

Geek_07a724

JavaScript LeetCode

这几款音乐人必备的软件,你了解吗?

懒得勤快

2022云原生峰会开启报名 | 一年一度云原生技术风向标就看这里!

阿里巴巴云原生

阿里云 云原生峰会

华为云对象存储OBS,为不同企业提供云存储方案,助力企业更好经营

科技之光

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

华为云CDN,用技术实力助力企业创新,促进产业化转型

IT科技苏辞

华为云虚拟专用网络VPN,助力现代企业云上业务创新发展

科技怪授

网络 网络VPN

Contentsquare跨多个服务的通知解决方案:微服务和Apache Kafka_微服务_Rafal Gancarz_InfoQ精选文章