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

我把项目从 Java 切到了 PHP (嗯,就是那个被 V2EX 网友刷上 Github Trends 6 月全球榜前十的 Akaxin)

  •  2
     
  •   imcnan · 209 天前 · 6681 次点击
    这是一个创建于 209 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前发了 Akaxin 后,被 V2EX 的网友的魔力直接推上了 Github 6 月份 Java 榜的全球前十,Github 官方 Twitter 也对此进行了报道。可短短一个月后,我们却不得不从 Java 切到了 PHP (+Golang ),推出了现在的DuckChat


    现在早就切完了,群里内测用户已有小千人。当初选择切换的原因有这么几个:

    1. 用户需要 Web 版 如果用 Java 写一个完整的 Web 版本,加上后续维护,效率真的太低。PHP 霸占业务开发语言老大位置是有实力的。而且我们的产品方向是要集成到用户已有业务里,比如与 Discuz 论坛集成,与 OA 办公集成,深度融合少不了彼此在 HTTP 层面的业务逻辑交互。切了后,用户在使用我们产品进行二次开发时,也容易的多。

    2. 性能、长链接等问题通过架构分层解决 之前选择 Java 是因为长链接。虽然 PHP 也有类似的常驻进程方案,但毕竟不是干这个的。这次把架构拆分了一下,把连接层和业务曾分开,连接层用 Golang 写掉,后面 PHP 就写简单的业务逻辑。这样一套代码同时支持了 Resp、Websocket、Http 三种协议。另外,对于用户业务系统,大家都知道关键性能主要卡在 IO 上。

    3. 拥抱已有技术资源 主要指的 HTTP 协议,业务层通过 HTTP 协议分发服务后,像很多压测、负载均衡之类的配套工具我们就都不用自己写了,节省出好多时间。

    4. 人员复用 这玩意和优化程序时的多路复用一样,就这么几个人,就不分那么多语种了,这样统一后,别人学起来很简单,互相帮忙起来也灵活的多,不像之前只能干看着。

    5. 还剩一个 Docker 问题,请大家帮忙出主意 Docker 在 Windows 上的使用太反人类了,我们需要一个能在 Windows 上完美解决环境一致性的解决方案,求介绍~~~~

    当然选择推出 DuckChat,还有产品和运营层面的考量,这里就不展开了。

    放一张截图(私有部署 | 安全可靠 | 随意定制)


    DuckChat 的产品目标不变,都是为了提供一个安全的私有聊天软件,都有单聊、群聊、小程序,能非常方便做一些群组游戏、OA 集成什么的。欢迎大家下载代码 review,现在还在 beta 期,问题还不少,轻拍啊~~~

    Github https://github.com/duckchat/gaga

    git clone https://github.com/duckchat/gaga.git
    

    最后,各位大神们,别忘了我们的 Docker 问题~~~

    60 回复  |  直到 2018-09-29 15:44:33 +08:00
        1
    LuffyGu   209 天前   ♥ 1
    docker 没用过,不过我在用 homestead,也是在 Windows 上的。
    不知道行不行,我是渣,不对别喷我啊。






    因为我开喷了你们喷不过我。开玩笑了
        2
    imcnan   209 天前
    @LuffyGu 其实 Docker 官方自己也给的是类似方案,给用户机器上装了一个虚拟机,不过用起来很不方便。
        3
    kulove   209 天前   ♥ 1
    没有体验地址么?
        4
    imcnan   209 天前
    @kulove

    网页版本:gaga.akaxin.com
    Android 客户端:官网下载
    iOS:官方 QQ 群拿企业签的内测包
        5
    xfcy   209 天前 via Android   ♥ 1
    vagrant_(:з」∠)_也是基于虚拟机的
        6
    luoyou1014   209 天前   ♥ 2
    看了下代码,你们这是裸写 php 啊,这工作量好大。
        7
    FakeLeung   209 天前   ♥ 1
    有几个问题:
    1. 稳定性如何?
    2. 能否商用?
    3. 商用价格?
    4. 。。。。。











    等等。。。

    我这边后台是 .Net

    打扰了。。。。
        8
    HangoX   209 天前   ♥ 2
    window 上用 hyper-v 装 linux 虚拟机是最好的选择,我之前都是这样干的,vbox 也行。
        9
    jimrok   209 天前   ♥ 6
    泼点冷水给你,你这个折腾方向不对,如果是定位私有使用,一定是企业用户买单,那 java 应该是优先选择。
        10
    imcnan   209 天前
    @HangoX 得高版本,低版本不行。高版本的话,docker 已经支持的很好了。
        11
    tradzero   209 天前   ♥ 2
    居然不用 composer............
        12
    imcnan   209 天前
    @jimrok 这个不一定。
        13
    wangxiaoaer   209 天前 via Android   ♥ 4
    @imcnan 对,企业不一定是 Java,但一定不是 php.
        14
    allinoneok   209 天前   ♥ 1
    不错 支持以下
        15
    xgfan   209 天前   ♥ 1
    感觉方向跑偏了
    定位用户是 爱折腾的计算机小白 ? 或者 个人站长 ?
        16
    Cbdy   209 天前 via Android   ♥ 1
    根据我的实践,在 windows 上用 docker 最佳的方案是虚拟机,里面装个 Linux,然后再用 docker。虚拟化可以用 VirtualBox
        17
    mmdsun   209 天前 via Android   ♥ 1
    请问安卓,iOS 应用是原生开发的吗?还是 rn
        18
    66beta   209 天前   ♥ 1
    java 是政治正确,门槛低,人好招
        19
    imcnan   209 天前
    @mmdsun 原生开发的。
        20
    sagaxu   209 天前 via Android   ♥ 1
    java 和 php 开发效率差不了多少,动态类型的弊端会随着项目增大而放大
        21
    x86   209 天前   ♥ 1
    套个壳卖给老罗
        22
    x86   209 天前   ♥ 3
    套个壳卖给老罗名字都想好了 > 锤信
        23
    STRRL   209 天前 via Android   ♥ 2
    docker machine 或者直接配一个远程地址
    dockerd 跑在远端
        24
    ccnccy   209 天前 via iPhone   ♥ 1
    老罗在流口水怎么办
        25
    imcnan   208 天前
    @ccnccy 子弹挺好的,资金、团队都充裕,产品质量也不错。
        26
    Symo   208 天前   ♥ 1
    java 是 v2 上的政治正确. 其实像 gitlab 或者 redmine 这种 ruby 写的, 只要打好了包装, 一样应用的很广泛. 东西好用是首要的.
        27
    vHypnos   208 天前
    你们都说 docker 我还有一个更大的疑问,有谁会用 windows 做服务器去起 docker 的?
        28
    pheyer   208 天前   ♥ 1
    @mmdsun 并没有看到有 iOS 啊
        29
    passerbytiny   208 天前
    大哥,真感觉你要被自己弄疯。
    你的原因主要是:用户需要 Web 版 ,而用 Java 写 Web 版太麻烦。你的解决方案是:用 PHP 做全套,Golang 做基础设施。那如果将来用户需要 IOS 版呢、需要 Android 版呢、需要 UWP 版呢。
    为什么不换成 JavaScript 做前端、Java 做后端这种方案。另外既然你是 windows 服务器,又真闲 Java 麻烦,可以用.NET 做后端。
        30
    imcnan   208 天前
    @pheyer iOS 一直在审核中,群里和管理员要企业包吧。
        31
    s609926202   208 天前 via iPhone
    @imcnan 赞成,为何商用就要用 java 了?没听过这种说法~
        32
    mxtob   208 天前
    看了下 php,发现是全源码,有点厉害了。。。
        33
    goozp   208 天前   ♥ 1
    之前研究 windows 的 docker,天真的以为 WLS 可以完美解决,结果发现并不支持守护进程,还是要依赖于 Docker for Windows
        34
    eeyykk   208 天前
    请教楼主,源码里面 go 的部分在哪?没看到啊。
        35
    xmh51   208 天前
    性能有压测过吗?什么配置下能支持多少个人在线聊天?
        37
    ipwx   208 天前
    @passerbytiny 说的很有道理。

    @imcnan 我也被你的操作惊呆了。换成 PHP,开发效率也不及 Vue.js/React.js + ES6 + Webpack 的一般吧?!后端 Java 暴露 JSON API 就完事了。嫌 Java 写起来慢,可以上 Scala 呀~ 还可以拥抱 Akka,为将来的集群拓展打下基础。
        38
    ioth   208 天前
    理由是不充分的,估计又有人来喷你是“民科”了。
        39
    imcnan   208 天前
    @goozp windows 上的 docker 方案放弃了。我们用了 xmapp https://duckchat.akaxin.com/wiki/server/windowsInstall.md

    但是这个东西不好用,也没很好的解决一些特殊配置下的环境问题。
    另外,没法直接把 Gateway 封进去,还需要用户自己启动。
        40
    jlkm2010   208 天前
    换语言的理由着实不充分,本来 java 一套撸完,现在搞成 php+golang,感觉怪怪的
        41
    qinyusen   208 天前
    windows 的 docker 很坑, 不同的版本的实现是不一样的,老的版本是 VMware,新版本是 linux sub system。
        42
    whxme   208 天前   ♥ 1
    这是给黄色产业链提供技术支持啊
        43
    imcnan   208 天前
    @whxme 大哥,我们主要用途是企业内部沟通,OA 集成啊。。。
        44
    jimrok   208 天前   ♥ 1
    java 的优势在于,你把接口开放给他们,他们就能给你实现 OA 机器人,PHP 不是所有企业里,外包供应商都会的。
        45
    liukanshan   208 天前   ♥ 1
    没太明白 Docker 在 Windows 上的使用太反人类了 是指什么?
        46
    Soutxx   208 天前   ♥ 1
    https://fiora.suisuijiang.com/ 就外观而言,我觉得这个漂亮点
        47
    lsls931011   208 天前   ♥ 1
    明明是讨论 “”能在 Windows 上完美解决环境一致性的解决方案“”,你们一下子又回到语言之争了
        48
    whwlsfb   208 天前   ♥ 1
    我这边也有类似的情况,Windows 的服务器跑一些 Linux 上的服务,结果还是用 docker for windows 解决的,几个月了,目前来说还算比较稳定
        49
    whwlsfb   208 天前   ♥ 1
    说 docker for windows 一无是处还是比较浮夸,微软的 vs 上的.net core for docker 的调试&运行就完全依靠 docker for windows,说明微软还是挺重视这个的。
        50
    imcnan   208 天前
    @whwlsfb 微软高版本支持的还行,Docker 也专门做了工作。

    但是微软低版本不行,很多用户直接在自己电脑上部署环境测试,所以问题在这。
        51
    sh7ning   208 天前   ♥ 1
    我觉得我 https://github.com/gopusher 这个项目写的跟你的思路差不多 接入层用的 go 实现,提供了 api 供接入,最近打算支持 tcp 连接,目前只支持了 websocket
    路由层和业务层用 php 或则其他语言都行,目前提供了 php 的 demo
    而且我感觉我的代码很简洁

    同时我的这个接入层支持集群部署,我没有看到你的这个 gateway 怎么实现集群部署,服务上下线对 业务怎么暴露的,如果 gateway 宕机怎么办,可能有,我没有找到,还没有细看,希望多交流。

    这里也请大家帮我 review 下代码,我也能进行改进优化一下。
        52
    imcnan   208 天前
    @sh7ning 🆙
        53
    dilu   208 天前
    homestead 是用的 vagrant,比起 docker 很重,各有优劣,如果只是想统一开发环境可以用 homestead
        54
    classyk   208 天前
    win10 pro 用 docker 还不错啊。不需要额外安装其他的虚拟机,系统自带的 hyperv 就行
        55
    xiaolanger   208 天前
    @sagaxu #20 那你说一下,PHP 大概多大规模的时候,会因为动态类型影响项目?
        56
    liuxyon   208 天前 via Android   ♥ 1
    这个是收费还是什么? 我自己可以用不?
        57
    imcnan   208 天前
    @liuxyon 可以用
        58
    lyhiving   207 天前
    一直在找小程序的演示,结果没发现哪里可以看得到。

    docker 在 windows 上的就不建议继续消耗精力去跟进了,做高负载,稳定,入门低的才有钱途呀。兼容性上去了,性能没搞定,口碑不会好的。
        59
    imcnan   207 天前
    @lyhiving 进官方群找管理问吧。

    有一个首页、消息聊天界面(两个位置)、可编程消息三个地方。
        60
    yc8332   207 天前
    一致性的方案就是 docker 或者虚拟机方案(vagrant 来管理),docker 不要的话,那就是 vagrant
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2633 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 13:48 · PVG 21:48 · LAX 06:48 · JFK 09:48
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1