与 Python 相比,我们系统的其他一些组件在 Go 中构建所需的时间要多得多 。作为一个总体趋势,我们看到开发Go 代码需要更多的努力 。但是 , 我们花更少的时间优化代码以提高性能 。
我们评估的另一种语言是Elixir. 。Elixir 建立在 Erlang 虚拟机之上 。这是一种迷人的语言 , 我们之所以考虑它,是因为我们的一名团队成员在 Erlang 方面拥有丰富的经验 。对于我们的用例 , 我们注意到 Go 的原始性能要好得多 。Go 和 Elixir 都可以很好地服务数千个并发请求 。但是,如果您查看单个请求的性能,Go 对于我们的用例来说要快得多 。我们选择 Go 而不是 Elixir 的另一个原因是生态系统 。对于我们需要的组件,Go 有更成熟的库,而在许多情况下,Elixir 库还没有准备好用于生产环境 。培训/寻找开发人员使用 Elixir 也更加困难 。这些原因使天平向 Go 倾斜 。Elixir 的 Phoenix 框架看起来很棒,绝对值得一看 。
Go 是一种非常高性能的语言 , 对并发有很好的支持 。它几乎与 C++ 和 Java 等语言一样快 。虽然与 Python 或 Ruby 相比,使用 Go 构建东西确实需要更多时间 , 但您将节省大量用于优化代码的时间 。我们在Stream有一个小型开发团队 , 为超过 5 亿最终用户提供动力和聊天 。Go 结合了强大的生态系统、新开发人员的轻松入门、快速的性能、对并发的可靠支持和高效的编程环境,使其成为一个不错的选择 。Stream 仍然在我们的仪表板、站点和机器学习中利用 Python 来提供个性化的订阅源. 我们不会很快与 Python 说再见 , 但今后所有性能密集型代码都将使用 Go 编写 。我们新的聊天 API也完全用 Go 编写 。
GoLang -- gRPC框架四大服务 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端 应用的方法,使得您能够更容易地创建分布式应用和服务 。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型) 。在服务端实现这个接口 , 并运行一个 gRPC 服务器来处理客户端调用 。在客户端拥有一个存根能够像服务端一样的方法 。
gRPC 客户端和服务端可以在多种环境中运行和交互 - 从 google 内部的服务器到你自己的笔记本,并且可以用任何 gRPC 支持的语言来编写 。所以,你可以很容易地用 Java 创建一个 gRPC 服务端,用 Go、Python、Ruby 来创建客户端 。此外,Google 最新 API 将有 gRPC 版本的接口,使你很容易地将 Google 的功能集成到你的应用里 。
gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON) 。名叫 proto3 的新风格的 protocol buffers,它拥有轻量简化的语法、一些有用的新功能,并且支持更多新语言 。当前针对 Java 和 C++ 发布了 beta 版本,针对 JavaNano(即 Android Java)发布 alpha 版本 , 在protocol buffers Github 源码库里有 Ruby 支持,在golang/protobuf Github 源码库里还有针对 Go 语言的生成器,对更多语言的支持正在开发中 。
有了 gRPC, 我们可以一次性的在一个 .proto 文件中定义服务并使用任何支持它的语言去实现客户端和服务器 , 反过来,它们可以在各种环境中 , 从Google的服务器到你自己的平板电脑—— gRPC 帮你解决了不同语言及环境间通信的复杂性.使用 protocol buffers 还能获得其他好处,包括高效的序列号,简单的 IDL 以及容易进行接口更新 。
现在让我们来仔细了解一下当 gRPC 客户端调用 gRPC 服务端的方法时到底发生了什么 。我们不究其实现细节,关于实现细节的部分 , 你可以在我们的特定语言页面里找到更为详尽的内容 。
推荐阅读
- 吉林市直播吃肉串的主播,吉林吃货
- 微信小店如何做广告推广,微信店铺小程序怎么推广
- word目录超链接怎么做,word目录超链接怎么设置
- 体育游戏的音乐,体育游戏音乐游戏还有哪些游戏?
- 怎么创建用户mysql 怎么创建用户样式
- 安卓怎么传送照片到苹果机,安卓怎么传照片到另一个苹果手机上
- 重庆拉屎的视频叫什么,拉屎事件
- hbc面板路由器怎么设置,hbc路由器上网设置
- c语言将函数的段地址打印 c语言 打印地址