我看到越来越多的软件组织在其面向服务的架构中使用gRPC,但人们也仍然在使用REST。在什么用例中使用gRPC是有意义的,什么时候使用REST进行服务间通信是有意义的?
有趣的是,我遇到过同时使用REST和GRPC的开源项目。例如,Kubernetes和Docker Swarm都在某种程度上使用gRPC来进行集群协调,但也公开了REST API来与主/主节点进行接口。为什么不上下使用gRPC?
如果做得正确,REST以牺牲性能和增加复杂性为代价,提高了长期的可演化性和可伸缩性。REST对于必须独立开发和维护的服务非常理想,比如Web本身。客户机和服务器可以松散耦合,在不中断对方的情况下进行更改。
RPC服务可以更简单、性能更好,但代价是灵活性和独立性。RPC服务非常适合客户机和服务器紧密耦合并遵循相同开发周期的情况。
然而,大多数所谓的REST服务实际上根本不遵循REST,因为REST只是任何类型HTTP API的流行语。事实上,大多数所谓的REST API都是紧密耦合的,与RPC设计相比,它们没有任何优势。
问题内容: 流式XML解析器(例如SAX和StAX)比构建像DOM解析器之类的树结构的解析器更快,内存效率更高。SAX是推送分析器,这意味着它是观察者模式(也称为侦听器模式)的实例。SAX首先出现,然后是StAX- 拉式解析器,这意味着它基本上像迭代器一样工作。 您可以找到在任何地方都偏爱StAX而不是SAX的原因,但是通常可以归结为:“更易于使用”。 在JAXP上的Java教程中,StAX被模糊
我目前正在学习做rosalind问题(基本上是一堆与生物信息学相关的代码)。 我目前正在用以下类型表示一条DNA链: 我最初的原因是封装字节片,这样我就知道它只包含代表核苷酸的字节:。我意识到这显然没有保护,因为我可以简单地做: 也不再保证我的dna链包含一个字节数组,其中只有来自这四个字节的元素。 因为我的结构只包含一个字节数组是更好/更理想的做法: 还是让类型包含dna链更好?对于何时使用这两
我目前正在通过做rosalind问题(基本上是一堆生物信息学相关的代码katas)来学习Go。 我当前表示的DNA链类型为: 我最初的原因是封装字节片,这样我就知道它只包含代表核苷酸的字节:。我意识到这显然不是瓜分,因为我可以简单地做到: 由于我的结构只包含一个字节数组,这样做是否更好/更理想: 还是让类型包含dna链更好?对于何时使用这两种方法中的任何一种,有什么经验法则吗?
问题内容: 我正在尝试查找一个表中的行,而不是另一个表中的行,这两个表都在不同的数据库中,并且在我要用来匹配的列上也有不同的列名。 我有一个查询,下面的代码,我认为它可能有效,但是速度太慢: 因此查询尝试执行以下操作: 从R2R.partmaster数据库中选择wpsapi4.product_details数据库中没有的所有ID。我匹配的列是partmaster.id和product_detail
抱歉,如果这是一个天真的问题,但我已经看了谷歌员工的一系列谈话,仍然不明白为什么我会使用AE而不是CF? 如果我理解正确的话,这两种服务的整体概念都是构建“微服务架构”。 CF和AE都是无状态的 两者都应该在有限的时间内执行 两者都可以与dbs和其他gcp api交互。 然而,AE必须封装到自己的服务器中。基本上,它在与CF相同的功能基础上利用了许多复杂性。那么,我应该什么时候使用它来代替CF呢?
问题内容: 在本文中, Nick Coghlan讨论了PEP 435类型的 一些设计决策,以及如何将其子类化以提供不同的体验。 但是,我给出的建议(我是stdlib的主要作者)关于使用元类的建议是,在没有充分好的理由的情况下不应该这样做- 例如,无法使用类装饰器或专用工具来完成所需的工作隐藏任何丑陋的功能;而在我自己的工作,我已经能够做到我需要什么简单的使用,在创建时,和/或正常类/实例方法类: