V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Klingon
V2EX  ›  Python

nginx 提供了 gRPC 的原生支持

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

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

    给我在 nginx 里写死,貌似可以一战
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2951 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:14 · PVG 23:14 · LAX 08:14 · JFK 11:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.