V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AerithLoveMe
V2EX  ›  问与答

kafka 生产者和业务耦合的关系

  •  
  •   AerithLoveMe · 2022-11-09 15:19:04 +08:00 · 937 次点击
    这是一个创建于 756 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想问问各位,kafka 生产者是应该和业务耦合在一块吗?比如用户注册发送邮件,是直接在用户模块里面使用 kafka 组装发送消息,还是通过 rpc 调用专门发送消息的模块呢?如果和业务直接耦合,岂不是又要引入 kafka 依赖,那岂不是很多服务都得引入;如果采用 rpc ,这样岂不是将数据又通过网络传输了一次,性能又会有影响?想请教各位都是怎么处理这个的。
    7 条回复    2022-11-10 10:03:57 +08:00
    vczyh
        1
    vczyh  
       2022-11-09 16:09:32 +08:00
    kafka 或者 rpc 只是邮件服务向外暴露的不同方式而已。

    至于引入 kafka 依赖,这不是很正常么?如果不想引入,那就使用 rpc 方式,rpc 也有可能增加依赖。
    AerithLoveMe
        2
    AerithLoveMe  
    OP
       2022-11-09 16:18:24 +08:00
    @vczyh 我目前用的是 rpc 调用 kafka 生产者发送消息到 kafka 实现异步,如果业务耦合 kafka 生产者,服务一多就需要进行很多的配置。我想问这两种方式哪种更普遍适用。
    wangxin3
        3
    wangxin3  
       2022-11-09 16:41:03 +08:00
    在生产者上套了一层 rpc ,流量高峰时期 rpc 是不是会可能导致 kafka 生产者不可用?
    多一层传输,多一次丢失的风险。
    haya
        4
    haya  
       2022-11-09 16:53:00 +08:00
    套一层 rpc 的话,会不会导致消息重发、漏发
    ipwx
        5
    ipwx  
       2022-11-09 17:10:52 +08:00
    kafka 这种东西最重要的意义在于排队。

    “用户注册发送邮件”

    如果一下你司在 1s 内分布式向 163.com 发送大量邮件,它会不会加强你司的垃圾信息权重?有了 kafka 这种队列好歹能做流控。当然,你也可以选择用 redis 。
    sadfQED2
        6
    sadfQED2  
       2022-11-09 17:43:22 +08:00 via Android
    何必要自己套一层呢,你引入自己的 rpc 不也是依赖么。
    vczyh
        7
    vczyh  
       2022-11-10 10:03:57 +08:00
    @AerithLoveMe
    我个人觉得没有必要:
    1. 增加一次网络是否有必要。
    2. rpc 服务提供者( kafka 生产者)是否有必要做成一个单独的服务,因为他功能太简单了。
    3. 通过 rpc 发送消息,是否少了很多 kafka 机制,比如丢失消息、重试等。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3799 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:26 · PVG 18:26 · LAX 02:26 · JFK 05:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.