【发布时间】:2021-12-24 20:29:43
【问题描述】:
我正在扩展功能正常的 web 应用程序的后端(微服务)以添加新功能。
请求的一项更改是记录所有用户活动的能力。我已经设置了一个利用 slf4j 的日志记录设施,但是我需要将它发送到 json 中的另一个服务,例如
{活动:[{用户名:...,活动类型:...},...]}
对我来说最简单的方法是在完成前端调用的 API 请求后一次发送一个活动。
我对性能表示怀疑,因为对于我的微服务的每次 api 调用,我都必须调用外部的。您是否发现此解决方案存在问题?
我的另一个想法是批量处理每个会话(在内存中)单个用户的所有活动,并在会话结束时将其发送到服务,减少调用,对用户的影响可能更小,但是对于这个解决方案(如果可行)我不知道从何下手,能指点一下吗?
另外我决定不在这个微服务的数据库上维护这些用户活动信息,因为我对它们没有用,这是一个错误吗?
任何提示都表示赞赏。
【问题讨论】:
-
让我检查一下我是否理解正确。您是否有一个单独的微服务仅用于日志记录?您如何存储此类日志,或者根本不存储它们?
-
听起来更像是分析。您可以通过写入队列系统并从另一个微服务进行实际发送来将此功能与您的应用程序分离。
-
是的,用于分析。正常的操作日志(错误、调用)未正确存储在 cloudwatch 上,但我没有开发应用程序的那部分。 @slauth 另一个微服务就是为了这个?是不是有点矫枉过正?
标签: java spring spring-boot microservices