我把项目从 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 问题~~~

10066 次点击
所在节点    程序员
61 条回复
qinyusen
2018-09-28 11:01:29 +08:00
windows 的 docker 很坑, 不同的版本的实现是不一样的,老的版本是 VMware,新版本是 linux sub system。
whxme
2018-09-28 11:12:04 +08:00
这是给黄色产业链提供技术支持啊
imcnan
2018-09-28 12:25:14 +08:00
@whxme 大哥,我们主要用途是企业内部沟通,OA 集成啊。。。
jimrok
2018-09-28 13:48:39 +08:00
java 的优势在于,你把接口开放给他们,他们就能给你实现 OA 机器人,PHP 不是所有企业里,外包供应商都会的。
liukanshan
2018-09-28 13:59:23 +08:00
没太明白 Docker 在 Windows 上的使用太反人类了 是指什么?
Soutxx
2018-09-28 14:02:39 +08:00
https://fiora.suisuijiang.com/ 就外观而言,我觉得这个漂亮点
lsls931011
2018-09-28 14:07:16 +08:00
明明是讨论 “”能在 Windows 上完美解决环境一致性的解决方案“”,你们一下子又回到语言之争了
whwlsfb
2018-09-28 14:29:59 +08:00
我这边也有类似的情况,Windows 的服务器跑一些 Linux 上的服务,结果还是用 docker for windows 解决的,几个月了,目前来说还算比较稳定
whwlsfb
2018-09-28 14:33:50 +08:00
说 docker for windows 一无是处还是比较浮夸,微软的 vs 上的.net core for docker 的调试&运行就完全依靠 docker for windows,说明微软还是挺重视这个的。
imcnan
2018-09-28 14:58:59 +08:00
@whwlsfb 微软高版本支持的还行,Docker 也专门做了工作。

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

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

这里也请大家帮我 review 下代码,我也能进行改进优化一下。
imcnan
2018-09-28 17:53:27 +08:00
@sh7ning 🆙
dilu
2018-09-28 18:19:36 +08:00
homestead 是用的 vagrant,比起 docker 很重,各有优劣,如果只是想统一开发环境可以用 homestead
classyk
2018-09-28 19:14:48 +08:00
win10 pro 用 docker 还不错啊。不需要额外安装其他的虚拟机,系统自带的 hyperv 就行
xiaolanger
2018-09-28 19:35:17 +08:00
@sagaxu #20 那你说一下,PHP 大概多大规模的时候,会因为动态类型影响项目?
liuxyon
2018-09-28 19:50:22 +08:00
这个是收费还是什么? 我自己可以用不?
imcnan
2018-09-28 19:54:28 +08:00
@liuxyon 可以用
lyhiving
2018-09-28 23:21:04 +08:00
一直在找小程序的演示,结果没发现哪里可以看得到。

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

有一个首页、消息聊天界面(两个位置)、可编程消息三个地方。
yc8332
2018-09-29 15:44:33 +08:00
一致性的方案就是 docker 或者虚拟机方案(vagrant 来管理),docker 不要的话,那就是 vagrant

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

https://tanronggui.xyz/t/493182

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

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

© 2021 V2EX