The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
tbss

想用 Go/Kafka/Redis/Mongo 做一个 IM 系统

  •  
  •   tbss · Jul 20, 2019 · 8442 views
    This topic created in 2664 days ago, the information mentioned may be changed or developed.

    技术栈 Go/Kafka/Redis/Mongo 不知此方案是否成熟 能否满足轻量级的 IM 系统 包含群聊

    27 replies  •  2021-03-05 14:37:54 +08:00
    darkweb
    darkweb
    Jul 20, 2019
    1
    做吧 加油
    polebug
    polebug
    Jul 20, 2019 via Android
    2
    为什么要用 mongo...
    richzhu
    richzhu
    Jul 20, 2019 via iPhone
    3
    可以带我一个吗?我是 Go 新人,给我点边边角角的活就好,不收钱只收反馈,告诉我代码哪里有需要改进的地方
    securityCoding
    securityCoding
    Jul 20, 2019
    4
    可以看看 goim , B 站的架构师开源的
    guyeu
    guyeu
    Jul 20, 2019
    5
    这技术栈我也有。。。
    niubee1
    niubee1
    Jul 20, 2019
    6
    老实说, 用这个架构你根本没有这么多机器去撑连接数
    lihongjie0209
    lihongjie0209
    Jul 20, 2019
    7
    "Go/Kafka/Redis/Mongo"

    "能否满足轻量级的 IM 系统"

    自己想想如果你开发出来要部署的话需要多少机器, kafaka*3 redis*3 mongodb*3, 光存储这一块就最少需要 3 台机器, 而且只会更多.

    一个光部署就需要 3 个中间件, 3 台以上服务器的软件怎么可以被称为轻量呢?
    misaka19000
    misaka19000
    Jul 20, 2019 via Android❤️1
    8
    你问可不可以?那当然是可以的
    liulaomo
    liulaomo
    Jul 20, 2019
    9
    Kafka 太耗内存,nats 要好很多。Mongo 的必要性也不是很大。

    其实只用 redis 就行,redis 5 已经支持 stream 了。
    tbss
    tbss
    OP
    Jul 20, 2019
    10
    @polebug 需要一个关系数据库的一种替代
    laravel
    laravel
    Jul 20, 2019
    11
    gopush-cluster、goim 我学 go 语言的时候经常看他们的代码
    iamJack
    iamJack
    Jul 20, 2019
    12
    @misaka19000 7 月加急名单
    Leigg
    Leigg
    Jul 20, 2019 via Android
    13
    最近也在构思一个 im 框架,用 ws,先看看别人的架构是怎样的,比如怎样支持海量连接数 /私聊 /群聊,怎样方便集群部署快速提高性能等等
    Immortal
    Immortal
    Jul 20, 2019
    14
    我也一直在想这个。。但一直没去做 感觉自己功力不够 期待楼主分享
    pubby
    pubby
    Jul 20, 2019 via Android
    15
    最近刚做了一套
    Go/beanstalkd/redis/mysql
    ws 接入支持分布式部署
    niubee1
    niubee1
    Jul 20, 2019
    16
    呵呵, 都是老套路, 不搞一堆机器都跑不起来的, 自己玩太重(太贵),公司拿来用的话, 你是要怼微信? Slack ?拿投资了么?没投资服务器的钱都花不起吧。
    crossoverJie
    crossoverJie
    Jul 20, 2019
    17
    @Leigg #13 用 Java 实现过一个,可以参考下。

    https://github.com/crossoverJie/cim
    python
    python
    Jul 21, 2019 via Android
    18
    最近写了个单机客服系统,用的 Go,MySQL,Redis
    STRRL
    STRRL
    Jul 21, 2019 via Android
    19
    先明确要实现什么功能 再考虑用什么中间件
    脱离实际需求谈组件都是耍流氓
    laminux29
    laminux29
    Jul 21, 2019
    20
    题主其实就是喜欢 Go/Kafka/Redis/Mongo 这一套技术栈,想凭借兴趣,用这一套东西,做个 IM 玩具,来玩玩罢了。

    对于这种情况,建议大家支持鼓励他。
    Leigg
    Leigg
    Jul 21, 2019 via Android
    21
    @crossoverJie 真是缘分,我前几天就看过老哥的项目,还给你了 star。
    alpha2016
    alpha2016
    Jul 21, 2019
    22
    redis + go ,使用长连接 + brpop 这个方法阻塞消费 redis 队列数据,然后数据持久化可以使用 mysql,消息 ack 机智可以使用延迟队列,或者 brpoplpush 这个方法,多个线程检查一下就可以的。楼主喜欢这套技术栈不错,可以尝试一下,弄好了叫我围观哈
    imndx
    imndx
    Jul 21, 2019 via Android
    23
    也晒下我们用 java 写的,目前 3k+ star 了

    https://github.com/wildfirechat
    Y4ssss
    Y4ssss
    Jul 21, 2019 via iPhone
    24
    加油,做好了围观
    opengps
    opengps
    Jul 21, 2019
    25
    问下楼主侧重点是啥?我想到 2 个:
    1,技术:为了把这几个技术用起来,那么直接开干吧
    2,功能:轻量级 im 重点在于 socket 长连接,配合下数据库完事了
    0x567
    0x567
    PRO
    Aug 23, 2019
    26
    @python 请问是否有机会交流一下 你的客服系统是怎么样设计的 我自己最近也有实现一个不过感觉写的很垃圾
    lairdnote
    lairdnote
    Mar 5, 2021
    27
    哈哈 哥们你做出来了吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1678 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 23:39 · PVG 07:39 · LAX 15:39 · JFK 18:39
    ♥ Do have faith in what you're doing.