V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
chenqh
V2EX  ›  Linux

有个小问题,你们都説 golang 并发高

  •  1
     
  •   chenqh · 2017-06-14 17:38:41 +08:00 · 5372 次点击
    这是一个创建于 2721 天前的主题,其中的信息可能已经有所发展或是发生改变。
    那么 golang+mysql 的并发会有多少呢
    mysql 的配置就选个一般点的吧,没有 SSD 的
    
    golang+mysql 会有 25 倍 python+mysql 的并发吗
    
    26 条回复    2017-06-18 09:17:27 +08:00
    JohnSmith
        1
    JohnSmith  
       2017-06-14 17:42:06 +08:00   ❤️ 1
    不是这样衡量的,首先不应该带着 mysql 来评测语言性能,其次要看使用示例,最直接的办法是写个 benchmark
    maemual
        2
    maemual  
       2017-06-14 17:42:16 +08:00
    。。。。。瓶颈在 mysql
    pengdu
        3
    pengdu  
       2017-06-14 17:42:30 +08:00
    不会,因为你这个瓶颈在 mysql 这里。
    pengdu
        4
    pengdu  
       2017-06-14 17:45:59 +08:00
    golang 的并发高,你可以理解为你有一个 server,同时 10w 个长连接。golang 可以给每个连接一个 goroutine。你用 python/c/java 都做不到,需要些比较复杂的线程池或者用 epoll 之类的。
    tairan2006
        5
    tairan2006  
       2017-06-14 17:46:59 +08:00
    楼主好像没搞清一些基本的问题……
    jarlyyn
        6
    jarlyyn  
       2017-06-14 17:47:11 +08:00
    楼主只认识 mysql 么……

    比如后端挂一个 redis?
    chenqh
        7
    chenqh  
    OP
       2017-06-14 17:50:13 +08:00
    @jarlyyn 主要还是 mysql 啊,redis 在我现在的业务来説是很少説,因为 mysql 毕竟 有个 web gui,找数据比 redis 要好找点。。而且我现在并发也不高,最高一分钟 600 吧
    jarlyyn
        8
    jarlyyn  
       2017-06-14 17:54:36 +08:00
    @chenqh

    web gui …………

    前后端用什么技术,肯定是由业务来决定的。

    你确定你大部分的数据都需要走 mysql,而不是缓存么?

    是的话你应该把心思花在优化 Mysql 上……
    alexsunxl
        9
    alexsunxl  
       2017-06-14 17:54:41 +08:00
    @chenqh 那你瞎折腾啥,就用熟悉的技术栈啊
    chenqh
        10
    chenqh  
    OP
       2017-06-14 17:56:49 +08:00 via iPhone
    @jarlyyn 要走 mysql,所以我现在很烦 mysql 分库分表的事情
    incompatible
        11
    incompatible  
       2017-06-14 18:14:55 +08:00 via iPhone
    你这个场景瓶颈在 mysql 上。
    另外 golang 又不止是让你用来写 CRUD 的,你若有机会做个高性能的网络产品比如 API 网关,golang 自然要比 python 性能好的多。
    orvice
        12
    orvice  
       2017-06-14 18:17:10 +08:00
    是写并发方便😋
    gamexg
        13
    gamexg  
       2017-06-14 18:25:12 +08:00   ❤️ 2
    实际 golang 并不是并发高,而是只需要按照多线程阻塞模式写网络程序,编译器自动转换成为 协程+epoll。

    没实测,理论上 golang 的性能和 c 语言用 epoll 写的性能是一致的,可能由于自动垃圾回收性能还次于 c。

    但是重点是写起来简单啊,epoll 之类的用起来比较麻烦,但是 golang 只需要疯狂开协程就行,一个连接来了,直接开一个协程 阻塞 read,阻塞 write,高兴了一个连接开两个协程,一个负责 read 一个负责 write 也没问题。开几十万协程也没什么性能问题。
    zjsxwc
        14
    zjsxwc  
       2017-06-14 18:31:09 +08:00
    瓶颈在 io,不在 golang
    sampeng
        15
    sampeng  
       2017-06-14 20:22:56 +08:00
    你要带 mysql。。。。我想没有任何一门语言能够碾压吧。。。
    reus
        16
    reus  
       2017-06-14 21:02:56 +08:00
    用了 mysql,你用啥语言都差不多
    chenqh
        17
    chenqh  
    OP
       2017-06-14 22:56:33 +08:00 via iPhone
    @reus 所以我先要学门 noSQL ?那个好
    chenqh
        18
    chenqh  
    OP
       2017-06-14 22:56:55 +08:00 via iPhone
    @reus 除了 redis
    reus
        19
    reus  
       2017-06-14 23:05:08 +08:00   ❤️ 1
    @chenqh 学 PostgreSQL
    changwei
        20
    changwei  
       2017-06-15 03:18:29 +08:00 via Android   ❤️ 1
    就算是用 php,python 这种脚本语言开发网站,实际性能瓶颈也在 mysql,更别说 golang 了。
    ryd994
        21
    ryd994  
       2017-06-15 04:36:18 +08:00 via Android   ❤️ 1
    先别急着分库分表,缓存做好了么?
    weer0026
        22
    weer0026  
       2017-06-15 08:46:42 +08:00
    看业务场景,不可能所有数据都是热数据,所以还是看场景加缓存隔离 mysql,不用 redis 那就 memcache。
    RubyJack
        23
    RubyJack  
       2017-06-15 09:11:06 +08:00
    先做缓存,我们一秒 2k 个动态请求,mysql 单机搞定,而且流量很低
    chenqh
        24
    chenqh  
    OP
       2017-06-15 10:45:06 +08:00 via iPhone
    mengzhuo
        25
    mengzhuo  
       2017-06-15 11:38:13 +08:00
    别急着分库分表, 索引做好了么,引擎调优了么, 数据项精简了么?
    pantingwen
        26
    pantingwen  
       2017-06-18 09:17:27 +08:00
    估计跑出来的结果都差不多,mysql 才是瓶颈,不要 db 才能对比两者的并发
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:36 · PVG 04:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.