nginx 提供了 gRPC 的原生支持

2018-03-27 13:31:42 +08:00
 Klingon
在 NGINX 的 v1.13.10 原生支持 gRPC 通信,比如
可以使用 nginx 转发各个服务
location /helloworld.Greeter {
grpc_pass grpc://127.0.0.1:50051;
}
location /helloworld.Dispatcher {
grpc_pass grpc://127.0.0.1:50052;
}
相较与服务注册发现,有了另一种实现方式。

实现及压测示例代码: https://github.com/Xiaoshuai/nginx-grpc

对比与 consul、etcd 或 kafka 这种服务注册及服务发现的微服务组织方式,大家有什么想法哈~
7580 次点击
所在节点    Python
21 条回复
Klingon
2018-03-27 13:35:10 +08:00
小项目初期阶段是不是直接用 nignx 去组织各个 gRPC 服务,类似于一个 gateway 的作用。这样不用花太多时间在服务的治理上了。
Klingon
2018-03-27 13:38:02 +08:00
示例代码 greeter_cient_timeit.py 中,提供了对比测试,HTTP/2.0 的多路复用大约能节省一半的时间。
tomychen
2018-03-27 13:58:35 +08:00
我一直在想 nginx 有一天会不会也像 apache 一样臃肿
Klingon
2018-03-27 14:02:13 +08:00
@tomychen openresty 就挺大,但是功能的确很实用。
e80b21
2018-03-27 14:05:52 +08:00
@tomychen 会成为变形金刚,这 nginx 真正的强大的地方,而不是单纯的一个 http 服务器
pynix
2018-03-27 17:54:15 +08:00
和 tcp_pass 好像没啥区别。。。
lastpass
2018-03-27 18:06:30 +08:00
就我一个看成了 gRGB 吗?
我还在想这是什么灯光效果,
nginx 怎么玩的光污染。
rrfeng
2018-03-27 18:08:03 +08:00
对比?楼主你醒醒...根本不是一回事。
janxin
2018-03-27 18:23:26 +08:00
@pynix #6 区别比较大,tcp_pass 没法做负载均衡
janxin
2018-03-27 18:24:23 +08:00
现在有人用上这个版本的 nginx 了嘛?版本太新了,真的不敢更新,后面跟着 openresty 升吧
zhs227
2018-03-27 18:51:33 +08:00
@pynix 负载均衡,按请求内容分发节点,这些都是 tcp_pass 做不到的。
原来这类框架不及 http 的就是在这些方面,现在支持 gRPC 以后,估计原来 REST 的一些东西,http 类的 api 接口,微服务都会慢慢的往这边转。
Klingon
2018-03-27 19:21:00 +08:00
@pynix 针对多个 gRPC 的服务,可以在 nginx 配置不同端口,类似 url 地址不同。
Klingon
2018-03-27 19:22:31 +08:00
@janxin 同意,针对 gRPC,目前 nginx 可以通过 upstream 实现负载均衡。
Klingon
2018-03-27 19:24:01 +08:00
@zhs227 同意,感觉这东西会接下来会很有用途的
Klingon
2018-03-27 19:30:36 +08:00
@rrfeng 嗯嗯,请帮对比下区别。
想抛出来,让大家讨论下,有哪些是 nginx 的新模块不能实现的,而且这些是否在项目演进各个阶段是否重要 开发维护工作量如何 有什么替代方案。
timonwong
2018-03-27 20:29:37 +08:00
出 grpc 支持能更好的驱动 ngmesh,这是我个人比较看好的。因为之前基本上就 envoy 可以选择。

另外的就是做 GRPC API Gateway 也多了个选择
janxin
2018-03-27 21:57:21 +08:00
@timonwong #16 caddy 了解一下?
timonwong
2018-03-27 22:03:42 +08:00
@janxin 了解 但是 license 不讨好
graysheeep
2018-03-28 09:21:47 +08:00
楼主这个怎么跑 能说明下么?直接 docker-compose?怎么验证呢
Klingon
2018-03-28 11:00:19 +08:00
@graysheeep 我是在 mac 下跑的 nginx 和 python3,可以分别看下这俩目录下的 readme.md 文件

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

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

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

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

© 2021 V2EX