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

2018-09-27 15:30:44 +08:00
 imcnan

之前发了 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 问题~~~

9803 次点击
所在节点    程序员
61 条回复
x86
2018-09-27 19:46:37 +08:00
套个壳卖给老罗
x86
2018-09-27 19:47:25 +08:00
套个壳卖给老罗名字都想好了 > 锤信
STRRL
2018-09-27 19:59:47 +08:00
docker machine 或者直接配一个远程地址
dockerd 跑在远端
ccnccy
2018-09-27 20:11:20 +08:00
老罗在流口水怎么办
imcnan
2018-09-27 23:11:27 +08:00
@ccnccy 子弹挺好的,资金、团队都充裕,产品质量也不错。
Symo
2018-09-28 00:16:09 +08:00
java 是 v2 上的政治正确. 其实像 gitlab 或者 redmine 这种 ruby 写的, 只要打好了包装, 一样应用的很广泛. 东西好用是首要的.
vHypnos
2018-09-28 02:56:56 +08:00
你们都说 docker 我还有一个更大的疑问,有谁会用 windows 做服务器去起 docker 的?
pheyer
2018-09-28 08:56:18 +08:00
@mmdsun 并没有看到有 iOS 啊
passerbytiny
2018-09-28 09:14:55 +08:00
大哥,真感觉你要被自己弄疯。
你的原因主要是:用户需要 Web 版 ,而用 Java 写 Web 版太麻烦。你的解决方案是:用 PHP 做全套,Golang 做基础设施。那如果将来用户需要 IOS 版呢、需要 Android 版呢、需要 UWP 版呢。
为什么不换成 JavaScript 做前端、Java 做后端这种方案。另外既然你是 windows 服务器,又真闲 Java 麻烦,可以用.NET 做后端。
imcnan
2018-09-28 09:20:57 +08:00
@pheyer iOS 一直在审核中,群里和管理员要企业包吧。
s609926202
2018-09-28 09:36:41 +08:00
@imcnan 赞成,为何商用就要用 java 了?没听过这种说法~
mxtob
2018-09-28 09:47:21 +08:00
看了下 php,发现是全源码,有点厉害了。。。
goozp
2018-09-28 10:17:21 +08:00
之前研究 windows 的 docker,天真的以为 WLS 可以完美解决,结果发现并不支持守护进程,还是要依赖于 Docker for Windows
eeyykk
2018-09-28 10:22:29 +08:00
请教楼主,源码里面 go 的部分在哪?没看到啊。
xmh51
2018-09-28 10:23:43 +08:00
性能有压测过吗?什么配置下能支持多少个人在线聊天?
xmh51
2018-09-28 10:24:41 +08:00
ipwx
2018-09-28 10:25:41 +08:00
@passerbytiny 说的很有道理。

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

但是这个东西不好用,也没很好的解决一些特殊配置下的环境问题。
另外,没法直接把 Gateway 封进去,还需要用户自己启动。
jlkm2010
2018-09-28 10:54:37 +08:00
换语言的理由着实不充分,本来 java 一套撸完,现在搞成 php+golang,感觉怪怪的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/493182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX