当前位置:首页 > 数码 > 实现通知发送-利用微服务和-Contentsquare-Kafka-Apache (发送 通知)

实现通知发送-利用微服务和-Contentsquare-Kafka-Apache (发送 通知)

admin6个月前 (05-11)数码28

Contentsquare 平台的许多场景需要通知功能。作为其微服务架构的一部分,该公司创建了一个跨多个服务的通用解决方案。

系统架构

Contentsquare 的通知功能可以用于密码重置、API 配额超标告警等,并根据用户的喜好通过电子邮件、Slack 或 Microsoft Teams 发送。

该系统由以下几个微服务组成:

  • NotificationConsumer:处理来自 Kafka 主题的消息。
  • MailerService:使用 EJS 模板引擎发送电子邮件通知。
  • IntegrationService:负责 Slack 和 Microsoft Teams 通知,使用 JSON 消息体。
  • SlackService:向 Slack API 发送通知消息。
  • MicrosoftTeamsService:向 Microsoft Teams API 发送通知消息。

实施经验

可观察性改进

在实现过程中,开发人员改进了可观察性,以监控和分析系统。

  • 创建了 Kibana 仪表板来监控日志。
  • 创建了 Grafana 仪表板来监控云资源使用情况。
  • 扩展了对 Kafka 生产集群的监控,以确保资源利用率和 Consumer Group Lag 在可接受范围内。
Apache

可扩展性挑战

开发人员通过循序渐进地推出与通知相关的功能来克服可扩展性挑战。

  • 使用专用 Kafka 主题进行告警通知。
  • 优化通知存储,以避免读取时出现高延迟。
  • 实现数据保留机制来删除旧的通知记录。

故障排除

开发人员解决了以下问题:

  • 解决电子邮件通知未收到问题,原因是 SPF 配置错误。
  • 创建了专门的电子邮件可观察性解决方案,以提供端到端可见性。

未来计划

该团队计划提升系统弹性,以防系统故障,并提高通知发送的及时性,实现近实时发送。

结论

Contentsquare 的通知功能是一个复杂且关键的系统,需要跨多个服务进行协调。通过优化可观察性、克服可扩展性挑战和解决故障,开发人员创建了一个可靠且可扩展的解决方案。


请问一下高手们下面这段JAVASCRIPT事件代码有什么问题么?问什么双击事件不能响应呢?

首先, 用到 getElementById 的代码一定要在文档加载以后执行,也就是body 的 onload 事件发生以后。 其次,HTML 的属性写法有问题, = 两边不要加空格。 还有,(oDiv);这句话完全多余,且错误。 还有, = handleEvent(event);写法错误,因为 event 不知道从何而来。 应该改成 = handleEvent;这样 onclick 事件的参数会自动传给 handleEvent。 修改后的代码如下:<html><head><meta http-equiv=Content-Type content=text/html; charset=UTF-8><title>Insert title here</title><script type=text/javascript>function handleEvent(oEvent){ var oTextbox = (txt1); += \n + ;} = function() { var oDiv = (div1); = handleEvent;}</script></head><body> <p>Use your mouse to click and double click the res square</p> <div></div> <p><textarea rows=15 cols=50></textarea></p> </body></html>

C++多态性的一道经典例题

这个例子一般在很多教材上都可以找的。 要求大概不是让你运行后生成某一个图形,模拟一下而已~多态 有编译时的多态(静态联编,即编译时确定操作对象) 和 运行时的多态(动态联编,即运行时确定操作对象),而虚函数是实现动态联编的基础。 继承是实现代码重用 而 多态 是实现 接口重用,接口是最有价值的资源,设计接口需要耗费更昂贵的人力和时间。 举个简单的例子:飞机是一个总成,它可以派生出 客机,直升机 。 所以可以设计 一个基类 “飞机” 然后公有派生出 “客机” “直升机”飞机都可以起飞,所以在基类“飞机”中设计一个 虚函数 fly(),显然“客机”和“直升机”有不同的起飞方式,所以,在“客机”和“直升机”中继承来的fly()函数应当是不同的,即相同的函数有不同的实现。 然后假设用 “飞机”生成一个指针型的对象 *p,“客机”“直升机”也分别生成各自的对象, 把“客机”的对象赋给*plan,则用plan调用fly(),则按照客机的起飞方式起飞,把“直升机”的对象赋给*plan,用plan调用fly()则按照直升机起飞的方式 起飞。 所以多态是允许你将父对象设置成为一个或更多的它的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Contentsquare