1
liujavamail 2020-11-17 13:37:48 +08:00
grpc
|
2
anUglyDog 2020-11-17 13:39:58 +08:00 2
别折腾!别折腾!别折腾!
|
3
misaka19000 2020-11-17 13:41:11 +08:00
Unix domain socket
|
4
PureWhiteWu 2020-11-17 13:42:20 +08:00
游戏后端服务器,用 Python……认真的么……
|
5
a554340466 2020-11-17 13:44:26 +08:00 via iPhone
c++ + lua
|
6
xx6412223 2020-11-17 13:44:36 +08:00
这么做就是自己把自己搞死
|
7
index90 2020-11-17 13:51:16 +08:00
rpc 要做多一次序列化和反序列化,如此浪费不可取
可以考虑一下 go 编译成动态库,然后在 python 里面用 |
8
joesonw 2020-11-17 14:05:59 +08:00
golang skylark
skylark 是 babel 用的语言, 是 python 的 subset. 如果只是写逻辑的话可以试一试, 做个 benchmark 看一看 |
10
Kamiyu0087 2020-11-17 14:31:37 +08:00
不会 GO 也不会 Python 的能问下为啥 Python 更适合写逻辑?
|
11
TypeError 2020-11-17 14:35:08 +08:00
静态类型语言➕动态脚本嵌入,应该是游戏服务器主流做法吧
某个挺出名的游戏后端框架 skynet 就是这么做的 可以参考楼上说的 skylark |
12
cmdOptionKana 2020-11-17 14:38:48 +08:00
@Kamiyu0087 动态语言、鸭子类型,写业务逻辑是可以很爽,更何况 Go 目前还没有泛型,因此 Go 写业务会有点麻烦。
但话又说回来,动态语言如果不认真写 unittest, 维护起来就很容易出问题了,因此也有人说 “动态一时爽,重构火葬场”,就是这个意思。 |
13
qieqie 2020-11-17 15:19:49 +08:00
cgo
c shared library python ctypes 觉得 ctypes 写着麻烦的话也有通过 header 自动生成的工具 |
14
xulolololololo 2020-11-17 15:26:51 +08:00
不知道你要什么级别的性能,python asyncio 异步协程已经很成熟,现在瓶颈一般都是网络 io 和数据库 io 了吧
|
15
paoqi2048 2020-11-17 15:55:10 +08:00
@PureWhiteWu 🐷用 Python 的
|
16
paoqi2048 2020-11-17 16:02:13 +08:00
带 gc 的 Python 调用带 gc 的 Go 提供的库,这样不太稳吧?
|
17
ytymf 2020-11-17 16:05:28 +08:00
@PureWhiteWu 网易有话说。。
|
18
est 2020-11-17 16:25:44 +08:00
你以为的性能问题:网络处理能力不行
实际上的性能问题:DB 存取和外部 IO 一塌糊涂 |
19
a719114136 2020-11-17 16:27:50 +08:00
比较成熟的方案就 rpc 。不过同意楼上的别折腾,老老实实用 go 吧
|
20
xuanbg 2020-11-17 16:32:04 +08:00
Python 写游戏?楼主你是认真的吗?
|
21
magiclz233 2020-11-17 17:09:04 +08:00
为啥不直接都用 go 呢,业务用 python 的好处是啥,go+python 比纯 go 的优点在哪
|
22
Vegetable 2020-11-17 17:12:08 +08:00
绝大部分性能损耗在逻辑上,这么做没意义,你想做的可能是中台?中间件?
|
23
PEIENYKYK 2020-11-17 17:12:12 +08:00
现在就在这么开发项目,说一下我的处理逻辑吧
1. RPC 这个是完完全全的方案,而且还涉及到旧代码屎山 2. 编译 Go 直接 Python 调用 |
24
Leigg 2020-11-17 17:15:34 +08:00 via iPhone
你想加班吗?
|
25
zzzzzzggggggg 2020-11-17 17:29:38 +08:00
闲的。。。
|
26
aincvy 2020-11-17 17:43:01 +08:00
方案一: go 调用 python 代码。
参考项目: https://github.com/sbinet/go-python 方案二:python 调用 go 的模块 参考阅读: https://cloud.tencent.com/developer/article/1568553 http://chingchuan-chen.github.io/posts/201804/2018-04-16-python-call-go.html 方案三:c/c++ 调用 go && python 1. 把 go 项目编译成动态链接库。 2. c/c++ 调用上一步生成的动态链接库, 外加调用 python 的库,建立 python 的脚本环境。 3. 可能还需要做一个桥 链接两个项目的接口。 |
27
zzlettle OP 是不是 rpc 比较适合简单的整合。
感觉可能适合我。 |
28
Hanggi 2020-11-17 20:13:43 +08:00 1
Go 写业务怎么蛋疼了?如果无法用 Go 写业务建议去掉 Go,因为你不需要它。
不要为了用 Go 而用,用了 Go 基本就不太需要其他语言了, 你去看看几个排名靠前的 Go 开源项目,基本都是纯 Go, 感觉你的思路没有理清楚,要么纯 Python,要么纯 Go 。 如果有个别库只有 Python 有,我会开一个 Python 的微服务,用 gprc 调用它。 |
29
lasuar 2020-11-18 09:58:42 +08:00
项目中,go 一般和 C/CPP 结合,没见过和 py 结合的
|
30
zzlettle OP |
31
sunshinev 2020-11-27 17:59:33 +08:00
请关注下 chat.osinger.com 最近写的,在 v2 上也好多朋友去看过
|