V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnbattle
V2EX  ›  程序员

日活 3K 左右的 app,后端有必要上 Java 吗?

  •  
  •   cnbattle ·
    cnbattle · 2017-12-17 18:58:09 +08:00 via Android · 12942 次点击
    这是一个创建于 2529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前是 php,thinkphp5.0

    我的感觉是 php 又背锅,让我们看看 Java 书,3K 左右的日活就是这样,php 都没玩的怎么样,就要上 Java,之前还提过要换 nodeJS …

    目前对公司程序的了解,问题是在数据库方面,无内部编码规范,数据库设计规范,导致数据库结构惨不忍睹,有很多在我去之前遗留的数据库设计问题,不同属性的数据存在同一个字段里…本人虽然技术一般,但对技术规范代码质量等还是有一些追求的

    怎么变成吐槽了…干的就是没那么顺心

    第 1 条附言  ·  2017-12-18 09:44:00 +08:00
    1.珠宝行业,互联网转型做的 app,养活公司没啥问题
    2.不是黑 php 啊,别跑题了,同事一说都是三五年以上的 phper,我入职面试时自称一年半,不敢称两年的,也点绝望啊,我只是接触 web wap 网站时间久点,大概 10 年在学校开始的折腾的,但只是对别人的程序 html 级别的折腾
    99 条回复    2017-12-20 13:06:32 +08:00
    toarya
        1
    toarya  
       2017-12-17 19:08:32 +08:00
    微博不也是 PHP 么,和语言关系不大。
    loading
        2
    loading  
       2017-12-17 19:09:19 +08:00 via Android
    php 哪个版本,7 不是很彪悍吗?
    firefox12
        3
    firefox12  
       2017-12-17 19:14:22 +08:00 via iPhone
    3k 日活是什么项目?能养活一个公司吗?
    nosay
        4
    nosay  
       2017-12-17 19:14:48 +08:00   ❤️ 4
    脱离了当前开发人员的技能水平,然后讨论上哪个语言,有什么意义?现学现卖,真不把 java 当回事啊...
    sagaxu
        5
    sagaxu  
       2017-12-17 19:15:35 +08:00   ❤️ 2
    我司 app 日活是你 1000 倍以上了,照样用 PHP 扛住了啊
    zhx1991
        6
    zhx1991  
       2017-12-17 19:16:03 +08:00   ❤️ 2
    3k 和语言没啥关系
    wxsm
        7
    wxsm  
       2017-12-17 19:18:47 +08:00 via iPhone   ❤️ 2
    现学一个月 java,不知道能扛住 300 不
    zjsxwc
        8
    zjsxwc  
       2017-12-17 19:20:13 +08:00
    楼主自己都说了是数据库方面问题了(数据库设计以及 SQL 查询效率问题),那么楼主领导让他换 Java,就是外行指挥了,跳槽吧
    prolic
        9
    prolic  
       2017-12-17 19:20:55 +08:00
    3k 日活都吃不下还是想想其他的问题吧,php 达到 300qps 还是毫无压力的
    alwayshere
        10
    alwayshere  
       2017-12-17 19:22:34 +08:00
    这就好比一个日访问量 3k ip 的网站,用 php 行不行?别说 php,你用小霸王做服务器都行,这么小的访问量,php 不背这个锅
    alwayshere
        11
    alwayshere  
       2017-12-17 19:23:56 +08:00
    忘了说了,我手上一个曾经 3k ip 的站,自己用 php 写的,平均在线 30 人,还不是一样跑的飞起
    zj299792458
        12
    zj299792458  
       2017-12-17 19:26:41 +08:00 via iPhone
    这么小,用 python 就够了
    bramblex
        13
    bramblex  
       2017-12-17 19:29:45 +08:00   ❤️ 5
    日活 3k ...

    我们这些专业 php 黑都看不下去了...
    bramblex
        14
    bramblex  
       2017-12-17 19:30:42 +08:00
    @zj299792458

    我们拿 python 撑过 800 w uv / 3000 w pv / 20 w 活跃用户.
    jtsai
        15
    jtsai  
       2017-12-17 19:43:24 +08:00 via Android   ❤️ 1
    你们有考虑换过一个运维人员吗?
    dangge
        16
    dangge  
       2017-12-17 19:46:19 +08:00   ❤️ 1
    你们需要请一个 DBA 来咨询.
    laohubuchiyu
        17
    laohubuchiyu  
       2017-12-17 19:55:17 +08:00   ❤️ 3
    哪个公司的瓶颈在语言啊
    tomczhen
        18
    tomczhen  
       2017-12-17 20:01:03 +08:00   ❤️ 1
    已经上线的项目,就算能解决初期造遗留的问题也需要很大的代价——技术债务越晚偿还代价越高,根本不是多个岗位能简单解决的事。

    要是真有专业点的运维或者 DBA 也根本不会出现现在的问题。

    说白了就是“短期高估”——期望一个运维 /DBA 能解决所有问题;“长期低估”——运维 /DBA 又没多少工作量,专门请一个太浪费,让开发顺便干了就行。
    beginor
        19
    beginor  
       2017-12-17 20:08:15 +08:00 via Android   ❤️ 1
    应该花心思重构数据库了吧
    Lax
        20
    Lax  
       2017-12-17 20:10:25 +08:00 via iPad
    做容量评估了吗,做高可用了吗,做备份(和恢复)方案了吗?

    本人长期提供兼职运维咨询服务,欢迎联系。
    eDeeraiD0thei6Oh
        21
    eDeeraiD0thei6Oh  
       2017-12-17 20:11:38 +08:00
    直接说什么 app 大家分析帮你
    chinvo
        22
    chinvo  
       2017-12-17 21:13:23 +08:00
    直接说什么 app 大家以后好躲着点
    lhx2008
        23
    lhx2008  
       2017-12-17 21:16:09 +08:00
    php 3k 撑不住,java 3k 的时候肯定已经挂了
    pynix
        24
    pynix  
       2017-12-17 21:31:52 +08:00
    不同属性的数据存在同一个字段里?
    json
    serializer
    cnbattle
        25
    cnbattle  
    OP
       2017-12-17 21:35:38 +08:00 via Android
    @pynix 不是纯链接在一起组成 title
    chinvo
        26
    chinvo  
       2017-12-17 21:38:19 +08:00
    优化数据库啊

    之前重构一个系统,只重构了数据库和数据抽象层就得到大幅度性能提升
    winglight2016
        27
    winglight2016  
       2017-12-17 21:47:47 +08:00
    这点用户量,整个系统推翻了重做代价比较小,不要想着重构了,这种活就是撵人走的
    Moker
        28
    Moker  
       2017-12-17 21:58:59 +08:00
    肯定不是语言问题
    alcarl
        29
    alcarl  
       2017-12-17 22:26:16 +08:00 via Android
    就算数据库结构设计的再奇葩,只要适当加些合理的索引,然后堆硬件多核心 24 核心以上加大内存 64g 以上,扛 3000 个日活绝对毛毛雨。。。。。
    jiangzhuo
        30
    jiangzhuo  
       2017-12-17 22:27:05 +08:00
    楼主是不是少打了一个 W 是 3kw 吧
    oswuhan
        31
    oswuhan  
       2017-12-17 22:49:41 +08:00
    可以考虑下使用 BaaS 服务。国外的 firebase,国内的 leancloud、野狗、bmob,还有一个知晓云,不过该平台貌似专注微信小程序开发。
    HanSonJ
        32
    HanSonJ  
       2017-12-18 00:32:37 +08:00
    平时大家黑 PHP 我都是笑笑不说话。这次忍不了,强行甩锅的节奏,重构数据库吧
    realpg
        33
    realpg  
       2017-12-18 00:36:49 +08:00
    LNMP 单古董物理服务器 日千万请求无压力……
    Kilerd
        34
    Kilerd  
       2017-12-18 00:50:49 +08:00
    日活 3k,平均下来 撑死就 100QPS 吧。

    这点请求 php 都搞不定,那就是你家程序员该背的锅了。
    Axurez
        35
    Axurez  
       2017-12-18 06:48:56 +08:00
    要不你试试 swoole ?
    Axurez
        36
    Axurez  
       2017-12-18 06:49:28 +08:00
    也不用说「据我了解」,直接 profile 一下给他看呗
    qcloud
        37
    qcloud  
       2017-12-18 07:55:55 +08:00 via iPhone
    @bramblex 哈哈哈哈哈哈
    t2doo
        38
    t2doo  
       2017-12-18 08:27:32 +08:00
    俺那小破公司,日活最多 10 吧,Java。。。我只想说,跟语言没关系哈
    ob
        39
    ob  
       2017-12-18 08:31:21 +08:00 via Android
    我觉得有机会多学一门语言应该是好事,哈哈
    opengps
        40
    opengps  
       2017-12-18 08:39:03 +08:00
    合理的架构,后端用啥都行
    sagaxu
        41
    sagaxu  
       2017-12-18 08:44:02 +08:00 via Android
    @t2doo 跟语言关系不大,跟团队中位数工资关系极大
    to2false
        42
    to2false  
       2017-12-18 08:48:55 +08:00 via iPhone
    日活 3k,在用 java,要不要用 c++重构(狗头
    Takahashi
        43
    Takahashi  
       2017-12-18 08:59:18 +08:00   ❤️ 1
    日活 3K。。高级黑
    SourceMan
        44
    SourceMan  
       2017-12-18 09:00:45 +08:00 via iPhone
    你这个黑的很有水平
    php01
        45
    php01  
       2017-12-18 09:03:19 +08:00
    用机器码 01 吧,不然还真扛不住呢。
    Norie
        46
    Norie  
       2017-12-18 09:09:29 +08:00
    php 被黑得最惨的一次,黑得不知不觉
    afeicool
        47
    afeicool  
       2017-12-18 09:10:01 +08:00
    你们领导应该是行家,用 php 天天完事就可以走了,用 java 天天加班,这样看起来大家都更努力。
    alber1986
        48
    alber1986  
       2017-12-18 09:19:54 +08:00
    php 码农路过,表示这个锅我们不背
    knva
        49
    knva  
       2017-12-18 09:22:36 +08:00
    PHP 3k 都撑不住,java 估计早挂了.
    RorschachZZZ
        50
    RorschachZZZ  
       2017-12-18 09:26:34 +08:00
    楼主是故意来黑 php 的吗。。。 。
    FradSer
        51
    FradSer  
       2017-12-18 09:27:51 +08:00
    @alcarl 真鸡儿有道理
    killerv
        52
    killerv  
       2017-12-18 09:34:58 +08:00
    日活 3k 就把锅甩给语言……
    8355
        53
    8355  
       2017-12-18 09:39:40 +08:00
    3000 日活关键还是看并发多少. 如果只是少量并发常规访问的话 512 机器都扛得住. 你跟老板聊聊 给点时间重构一下上 php7.如果做的好年后涨点工资.
    gamecreating
        54
    gamecreating  
       2017-12-18 09:40:30 +08:00
    你让我们游戏服务器 同时在线 1 万人怎么想 ....
    日活 3000 用 asp 都够了
    YMB
        55
    YMB  
       2017-12-18 09:42:47 +08:00
    我能告诉你,阿里也用 PHP 吗。
    纯属架构问题!
    l9rw
        56
    l9rw  
       2017-12-18 09:44:30 +08:00
    这种量级瓶颈大多在数据库,这个锅 php 不背
    OMGZui
        57
    OMGZui  
       2017-12-18 09:45:00 +08:00
    就目前来看,请去说服你的领导
    SourceMan
        58
    SourceMan  
       2017-12-18 09:47:00 +08:00 via iPhone
    @l9rw mysql 说请不要用这个量级侮辱我,哈哈哈
    lianxiaoyi
        59
    lianxiaoyi  
       2017-12-18 10:10:46 +08:00
    这锅 php 不背,老衲单一个验证接口日活都在 800 多万以上,(4 台 2 核 4G 服务器,平均跑在 25%,遇到大户同时请求,就会有一台 CPU 到 80%,用的 DNS 负载均衡,国内带宽太 TM 贵了),日志服务器用的一台 1 核 1G 的服务器,这台服务器 php 层日请求超千万,python udp 层日请求量超 3000 万(流量太贵,所以用的 udp ),现 CPU 跑在 20%。。好好整理你们数据库才是关键。。。。
    yujieyu7
        60
    yujieyu7  
       2017-12-18 10:25:22 +08:00
    这公司没前途,早点撤吧
    colinlet
        61
    colinlet  
       2017-12-18 10:26:10 +08:00
    我们项目日活百万,并发上千,php 也没有背锅啊,就是负载均衡+缓存+MySQL
    0ZXYDDu796nVCFxq
        62
    0ZXYDDu796nVCFxq  
       2017-12-18 10:27:19 +08:00
    并发 3K 再来考虑语言问题
    jjx
        63
    jjx  
       2017-12-18 10:33:27 +08:00
    先说数据量
    再说需求

    比方说总是对百万以上的数据做汇总查询, 那怎么优化都快不了, 类似这样的需求都是以前做 c/s 企业软件的, 转到互联网带来的, 互联网应用对响应要求高, 老早的桌面内部应用对响应要求低, 在互联网化时需求需要响应调整
    zhengxiaowai
        64
    zhengxiaowai  
       2017-12-18 10:40:14 +08:00
    3K 日活???? Python 不用优化分分钟扛下来
    sagaxu
        65
    sagaxu  
       2017-12-18 10:44:58 +08:00
    同事一说都是三五年以上的 phper
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    是一个月的经验重复了三五年,还是成长了三五年?
    xuanyan
        66
    xuanyan  
       2017-12-18 10:58:23 +08:00
    百万日活,php 都扛得住,跟语言关系不大
    skadi
        67
    skadi  
       2017-12-18 11:02:07 +08:00
    先做一下 性能分析吧. 看看瓶颈在哪.
    sobigfish
        68
    sobigfish  
       2017-12-18 11:04:10 +08:00
    应该是这个吧 https://www.jaadee.com/
    那么为啥后台最先选型时没有选已有的开源架构而是用 thinkphp 做了呢 ?
    qcloud
        69
    qcloud  
       2017-12-18 11:10:39 +08:00 via iPhone
    @sobigfish 好慢
    lwbjing
        70
    lwbjing  
       2017-12-18 11:11:55 +08:00
    PHP 要是能说话,肯定要骂一句 mmp
    vus520
        71
    vus520  
       2017-12-18 11:14:59 +08:00
    每秒请求 3000 的业务照样 php
    gaoxu387
        72
    gaoxu387  
       2017-12-18 11:36:11 +08:00
    不如想想为什么会这样,解决问题才是最重要的,是数据库慢查询?是某些接口里有 curl 请求太慢?是连接了缓存服务器导致的?
    看看数据库的慢日志、缓存的慢日志、php-fpm 的慢日志,结合 app 的日志、xdebug、strace、gdb 分析分析吧
    cnbattle
        73
    cnbattle  
    OP
       2017-12-18 11:42:19 +08:00 via Android
    @sobigfish 额,是… app 年初开始做的,我 7 月入职的
    satanandroid
        74
    satanandroid  
       2017-12-18 11:43:52 +08:00
    后台同 thinkphp 日活 10W
    php 表示,这个锅我不背
    sutra
        75
    sutra  
       2017-12-18 11:45:15 +08:00
    要想横向扩展,主要看架构,不是语言。
    wekw
        76
    wekw  
       2017-12-18 11:56:56 +08:00
    只可能是数据库问题
    LukeChien
        77
    LukeChien  
       2017-12-18 12:02:43 +08:00 via Android
    上 Java 也不行,得上 Oracle
    vjnjc
        78
    vjnjc  
       2017-12-18 12:09:36 +08:00
    话说改数据库字段的话要改查询代码的吧。。。
    这种情况简单粗暴是不是只能开索引,堆硬件?也不能拆到多台数据库服务器吧?
    leibusi
        79
    leibusi  
       2017-12-18 12:57:50 +08:00 via Android
    又黑我大 PHP
    likuku
        80
    likuku  
       2017-12-18 13:05:16 +08:00
    工作资历长短,和能力并不能直接划等号,职场里这是常识了吧。
    Denny
        81
    Denny  
       2017-12-18 13:12:46 +08:00
    @cnbattle 求头像原图
    cnbattle
        82
    cnbattle  
    OP
       2017-12-18 13:14:55 +08:00   ❤️ 1
    @vjnjc 已经到了加索引和缓存不能解决问题的地步了,服务器是分布式数据库集群,话说公司服务器是个大牛,给 freebsd 贡献代码的人,都是一开始数据库表设计不好,还有一个内部需要变更太频繁
    mrzero
        83
    mrzero  
       2017-12-18 13:16:46 +08:00
    你得知道性能瓶颈在哪才能优化啊…… 3k 的日活,能有啥瓶颈
    atcdef
        84
    atcdef  
       2017-12-18 13:19:15 +08:00
    这类型的后端,应该是以读为主吧,既然这样的话,如果性能瓶颈确实出在数据库上,直接上多个数据库副本,分摊一下查询请求,把眼下的问题先应付过去再说。然后再慢慢想办法重构也好,重做也罢,走人也行,看着办,哈哈
    we3613040
        85
    we3613040  
       2017-12-18 13:19:59 +08:00
    垃圾啊,日活 3k,关语言什么关系,素质不行明显
    mrzero
        86
    mrzero  
       2017-12-18 13:21:19 +08:00
    先把慢查询一个个找出来,改表结构、迁数据,加索引;再不行加 proxy 上 MySQL 集群;然后如果是读多,加一层 redis 缓存……但我感觉日活 3k …… emmmmm
    woshipanghu
        87
    woshipanghu  
       2017-12-18 13:34:35 +08:00
    说分布式 集群 缓存的好笑不好笑
    3k 日活 1 核 1g 的服务器都稳稳的处理了 还需要那么多花样?
    Moker
        88
    Moker  
       2017-12-18 13:36:28 +08:00
    谈谈数据量吧 加了索引和缓存都还不行?
    cnbattle
        89
    cnbattle  
    OP
       2017-12-18 14:11:37 +08:00
    @woshipanghu 我说的只是 app 日活 pc 的也是在一起的,具体不详
    slgz
        90
    slgz  
       2017-12-18 15:21:32 +08:00
    @tomczhen 所以,对于已上线的项目。后期要整改的时候,也就是解决之前遗留的问题,没什么好办法了吗?
    for8ever
        91
    for8ever  
       2017-12-18 15:32:22 +08:00
    用 Node.js 吧,自学 3 小时后就可以了,日活 300k 都没问题
    vjnjc
        92
    vjnjc  
       2017-12-18 15:49:36 +08:00
    @cnbattle 我倒是感觉日活 3k 挺多的呀,对我们这种小公司来说
    funcman
        93
    funcman  
       2017-12-18 18:09:33 +08:00
    这个日活,随便写个 PHP 挂到应用云上不就行了。
    pynix
        94
    pynix  
       2017-12-18 18:49:56 +08:00
    @pynix 如果只是单纯显示,没有解析拆分的需求,那也可以吧。。。
    tomczhen
        95
    tomczhen  
       2017-12-18 19:08:09 +08:00
    @slgz 技术债务总是要还的,只是什么时候还,由谁来还的问题。并不是说不欠债就是好的,有时也会为了一些妥协而主动选择债务。

    再说了,项目没到还债的时候就死掉的也是很多的。不管是主动选择还是被动,债务只要可控就是可以接受的——大不了离职嘛 ¯\_(ツ)_/¯。

    通常说的解决方案就是重构,不过出于自身利益风险考虑我觉得更多人都喜欢重写——毕竟就算是一坨屎也是自己的香一些。

    我只是一个负责背锅的运维,代码重构的经验还是让开发来传授吧,毕竟他们经验比较多 :doge:
    tanszhe
        96
    tanszhe  
       2017-12-18 20:43:20 +08:00
    是来搞笑的吧,3000 日活太小了 几乎就是九牛一毛 忽略不计
    alcarl
        97
    alcarl  
       2017-12-18 21:57:36 +08:00 via Android
    @cnbattle 3000 日活的 app 还有缓存的分布式数据库集群。。。。。。。。你这三千人是每秒操作一百次以上录入 50 条以上数据的机器人吗?( ̄へ ̄)
    Sapp
        98
    Sapp  
       2017-12-18 23:42:47 +08:00 via iPhone
    go、ruby 五年经验的可以当十年用,php 五年的你就当两年用,这样就不会出问题了,真不是看不起这个语言,而是 php 用的公司太多了,大量的低端外包公司都用他,你根本不知道他是不是做了五年的建站。
    LJ2010
        99
    LJ2010  
       2017-12-20 13:06:32 +08:00
    和 php 有毛关系。。。90%都是代码问题,如果真是 php 有问题。。那么 baidu,facebook 什么的还用 php 干嘛?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3289 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:37 · PVG 20:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.