推荐学习书目
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 · Mar 27, 2018 · 8121 views
    This topic created in 3054 days ago, the information mentioned may be changed or developed.
    在 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 replies    2018-08-01 23:22:39 +08:00
    Klingon
        1
    Klingon  
    OP
       Mar 27, 2018
    小项目初期阶段是不是直接用 nignx 去组织各个 gRPC 服务,类似于一个 gateway 的作用。这样不用花太多时间在服务的治理上了。
    Klingon
        2
    Klingon  
    OP
       Mar 27, 2018
    示例代码 greeter_cient_timeit.py 中,提供了对比测试,HTTP/2.0 的多路复用大约能节省一半的时间。
    tomychen
        3
    tomychen  
       Mar 27, 2018
    我一直在想 nginx 有一天会不会也像 apache 一样臃肿
    Klingon
        4
    Klingon  
    OP
       Mar 27, 2018
    @tomychen openresty 就挺大,但是功能的确很实用。
    e80b21
        5
    e80b21  
       Mar 27, 2018
    @tomychen 会成为变形金刚,这 nginx 真正的强大的地方,而不是单纯的一个 http 服务器
    pynix
        6
    pynix  
       Mar 27, 2018
    和 tcp_pass 好像没啥区别。。。
    lastpass
        7
    lastpass  
       Mar 27, 2018 via Android
    就我一个看成了 gRGB 吗?
    我还在想这是什么灯光效果,
    nginx 怎么玩的光污染。
    rrfeng
        8
    rrfeng  
       Mar 27, 2018 via Android
    对比?楼主你醒醒...根本不是一回事。
    janxin
        9
    janxin  
       Mar 27, 2018
    @pynix #6 区别比较大,tcp_pass 没法做负载均衡
    janxin
        10
    janxin  
       Mar 27, 2018
    现在有人用上这个版本的 nginx 了嘛?版本太新了,真的不敢更新,后面跟着 openresty 升吧
    zhs227
        11
    zhs227  
       Mar 27, 2018
    @pynix 负载均衡,按请求内容分发节点,这些都是 tcp_pass 做不到的。
    原来这类框架不及 http 的就是在这些方面,现在支持 gRPC 以后,估计原来 REST 的一些东西,http 类的 api 接口,微服务都会慢慢的往这边转。
    Klingon
        12
    Klingon  
    OP
       Mar 27, 2018
    @pynix 针对多个 gRPC 的服务,可以在 nginx 配置不同端口,类似 url 地址不同。
    Klingon
        13
    Klingon  
    OP
       Mar 27, 2018
    @janxin 同意,针对 gRPC,目前 nginx 可以通过 upstream 实现负载均衡。
    Klingon
        14
    Klingon  
    OP
       Mar 27, 2018
    @zhs227 同意,感觉这东西会接下来会很有用途的
    Klingon
        15
    Klingon  
    OP
       Mar 27, 2018
    @rrfeng 嗯嗯,请帮对比下区别。
    想抛出来,让大家讨论下,有哪些是 nginx 的新模块不能实现的,而且这些是否在项目演进各个阶段是否重要 开发维护工作量如何 有什么替代方案。
    timonwong
        16
    timonwong  
       Mar 27, 2018
    出 grpc 支持能更好的驱动 ngmesh,这是我个人比较看好的。因为之前基本上就 envoy 可以选择。

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

    给我在 nginx 里写死,貌似可以一战
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5385 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 03:42 · PVG 11:42 · LAX 20:42 · JFK 23:42
    ♥ Do have faith in what you're doing.