Node.js过载

2020-06-19 14:28:05

我们之前采用了.NET Core,这表明它已经成为我们.NET项目的默认设置。但是我们觉得这是值得的,再次唤起人们对.NET内核的关注。随着去年发布的.NET Core3.x,.NET Framework的大部分功能现在都已移植到.NET Core中。随着.NET Framework发布最新版本的宣布,Microsoft强化了.NET Core是.NET的未来的观点。Microsoft已经做了大量工作来使.NET Core容器友好。我们的大多数基于.NET Core的项目都以Linux为目标,并且通常部署为容器。即将发布的.NET5看起来很有前途,我们非常期待。

如果您正在构建和运营一个可伸缩的微服务体系结构,并且已经接受了Kubernetes,那么采用服务网格来管理运行该体系结构的所有横切方面是默认的立场。在服务网状网的各种实现中,Istio获得了大多数人的采用。它具有丰富的功能集,包括服务发现、流量管理、服务到服务和源到服务的安全性、可观察性(包括遥测和分布式跟踪)、滚动发布和弹性。由于其易于安装和控制面板架构,其用户体验在其最新版本中得到了改进。Istio已经降低了为我们的许多客户实施具有运营质量的大规模微服务的门槛,同时承认运营您自己的Istio和Kubernetes实例需要足够的知识和内部资源,这不是胆小者所能做到的。

ANKA是一套工具,用于为iOS和MacOS创建、管理、分发、构建和测试MacOS可复制的虚拟环境。它为MacOS环境带来了类似Docker的体验:即时启动、用于管理虚拟机的CLI,以及用于对虚拟机进行版本控制和标记以供分发的注册表。我们已经使用Anka为客户端构建了MacOS私有云。在虚拟化IOS和MacOS环境时,此工具值得考虑。

在不对GitOps技术做出判断的情况下,我们想讨论一下在Kubernetes环境中部署和监控应用程序的范围内的Argo CD。基于其在Kubernetes的指定目标环境中自动部署所需应用程序状态的能力,以及我们在排除部署失败、验证日志和监控部署状态方面的良好经验,我们建议您尝试一下Argo CD。您甚至可以图形化地查看集群中正在发生的事情、更改是如何传播的以及Pod是如何实时创建和销毁的。

大多数具有多语言支持的项目都是从开发团队开始,用一种语言构建功能,然后通过电子邮件和电子表格进行离线翻译来管理其余部分。虽然这个简单的设置可以工作,但是事情可能很快就会失控。您可能不得不为不同语言的翻译员回答相同的问题,从翻译员、校对人员和开发团队之间的协作中抽出精力。Crowdin是为数不多的帮助简化项目本地化工作流程的平台之一。有了Crowdin,开发团队可以继续构建功能,同时该平台可以将需要翻译的文本简化为在线工作流程。我们喜欢Crowdin推动团队持续、增量地合并翻译,而不是在接近尾声时对其进行大批量管理。

几年来,Linux内核已经包含了扩展的Berkeley Packet Filter(EBPF)虚拟机,并提供了将eBPF筛选器附加到特定套接字的能力。但是扩展的BPF远远超出了数据包过滤的范畴,它允许在内核内的不同位置触发自定义脚本,而开销很小。虽然这项技术并不新鲜,但随着越来越多的微服务被部署为精心编排的容器,它现在已经发挥了作用。在这些系统中,服务到服务的通信可能很复杂,因此很难将延迟或性能问题与API调用关联起来。我们现在看到发布的工具带有预写的eBPF脚本,用于收集和可视化数据包流量或报告CPU利用率。随着Kubernetes的崛起,我们看到了基于eBPF脚本的新一代安全实施和规范,这些脚本有助于驯服大型微服务部署的复杂性。

自从我们在2016年将谷歌的Firebase作为无服务器架构的一部分提到以来,它已经经历了重大的演变。FireBase是一个全面的平台,用来构建移动和网络应用程序,谷歌的底层可扩展基础设施也支持这种方式。我们特别喜欢Firebase App Distribution和Firebase Remote Config,前者可通过CD管道轻松发布应用程序的测试版本,后者可将配置更改动态推送到应用程序

并不是每个人都需要自托管的OAuth2解决方案,但是如果您需要的话,可以看看Hydra-一个完全兼容的开源OAuth2服务器和OpenID连接提供程序。Hydra具有用于开发的内存存储支持和用于生产使用情形的关系数据库(PostgreSQL)。九头蛇本身是无状态的,在Kubernetes这样的平台上很容易横向扩展。根据您的性能要求,您可能需要在扩展Hydra实例时调整数据库实例的数量。由于Hydra不提供任何开箱即用的身份管理解决方案,因此您可以通过一个干净的API将您拥有的任何身份管理风格与Hydra集成。这种身份与OAuth2框架其余部分的明确分离使Hydra更容易与现有的身份验证生态系统集成。

开放遥测是一个开放源码的可观测性项目,它合并了OpenTracing和OpenCcount。OpenTelemeter项目包括规范、库、代理和其他从服务捕获遥测所需的组件,以便更好地观察、管理和调试它们。它涵盖了可观察性的三大支柱-分布式跟踪、指标和日志记录(目前处于测试阶段)-其规范通过相关性将这三部分联系在一起;因此,您可以使用指标来精确定位问题,定位相应的跟踪以发现问题发生的位置,并最终研究相应的日志以找到确切的根本原因。开放遥测组件可以连接到后端观测系统,如普罗米修斯和积家等。OpenTracing的形成是朝着标准化和工具简单化的方向迈出的积极一步。

事实证明,对于我们的许多客户来说,Snowflake是一个强大的SaaS大数据存储、仓库或湖泊解决方案。它具有卓越的体系结构,可扩展存储、计算和服务,以加载、卸载和使用数据。它还非常灵活:它支持结构化、半结构化和非结构化数据的存储;为不同的访问模式(如用于数据科学的Spark和用于分析的SQL)提供越来越多的连接器;并且在多个云提供商上运行。我们对许多客户的建议是,将托管服务用于其公用事业技术(如大数据存储);但是,如果风险和法规禁止使用托管服务,则Snowflake是拥有大量数据和繁重处理工作负载的公司的理想选择。虽然我们已经在中型项目中成功地使用了Snowflake,但我们还没有在需要跨组织各部门拥有数据的大型生态系统中体验过Snowflake。

我们看到,组织正在从意外的混合云或全资产云迁移计划转变为有意而复杂的混合云、多元云或便携式云战略,在这些战略中,组织应用多维原则来建立和执行其云战略:根据风险、控制能力和性能状况将其各种数据和功能资产托管到何处;如何在降低运营成本的同时利用其内部基础设施投资;以及如何利用多个云提供商及其独特的差异化服务,而不会给用户构建和运营应用程序造成复杂性和摩擦。

Anthos是谷歌的解决方案,通过在GKE、Service Mesh和基于Git的配置管理等一系列开源技术之上提供高级管理和控制平面,来实现混合和多云战略。它支持在不同的托管环境(包括Google Cloud和内部硬件)上运行便携工作负载和其他资产。虽然其他云提供商也有可比较的产品,Anthos打算超越混合云,使用开源组件实现可移植云,但这还有待观察。我们看到人们对安东斯的兴趣与日俱增。虽然谷歌在托管混合云环境中的方法看起来很有希望,但它不是灵丹妙药,需要改变现有的云和内部资产。我们对考虑Anthos的客户的建议是,在从Google Cloud生态系统中选择服务和其他选项之间进行权衡,以保持正确的中立和控制水平。

Apache Pulsar是一个开源的pub-sub消息传递/流媒体平台,与Apache Kafka在类似的领域展开竞争。它提供预期的功能-例如低延迟异步和同步消息传递和可扩展的消息持久存储-以及各种客户端库。让我们兴奋地评估Pulsar的是它的易伸缩性,特别是在拥有多个用户群的大型组织中。Pulsar本身支持多租户、地理复制、基于角色的访问控制和计费隔离。我们也在期待脉冲星来解决我们法律界无休止的信息记录的问题。

JupyterLab是Project Jupyter的下一代基于Web的用户界面。如果你一直在使用Jupyter笔记本,JupyterLab值得一试;它为你提供了一个互动的环境,让你可以接触到Jupyter笔记本、代码和数据。我们认为它是Jupyter Notebook的发展:它通过扩展原有的功能,允许代码、可视化和文档存在于一个地方,从而提供了更好的体验。

Marquez是一个相对年轻的开源项目,用于收集和提供关于数据生态系统的元数据信息。它表示一个简单的数据模型,用于捕获元数据(如谱系、上下游数据处理作业及其状态),以及一组灵活的标记,用于捕获数据集的属性。它提供了一个简单的RESTful API来管理元数据,从而简化了Marquez与数据生态系统内的其他工具集的集成。

我们已经使用Marquez作为起点,并轻松地将其扩展以满足我们的需要,例如强制实施安全策略以及对其域语言的更改。如果您正在寻找一个小型而简单的工具来引导您的数据处理作业和数据集的存储和可视化,Marquez是一个很好的起点。

Matomo(前身为Piwik)是一个开源的Web分析平台,为您提供对数据的完全控制。您可以自行托管Matomo并保护您的网络分析数据不受第三方的影响。Matomo还可以轻松地将网络分析数据与您的内部数据平台集成,并允许您根据需要构建使用模型。

MeiliSearch是一个快速、易用、易部署的文本搜索引擎。多年来,Elasticsearch已经成为可伸缩文本搜索的流行选择。但是,如果您没有足够的数据量来保证分布式解决方案,但是仍然想提供一个快速的容错搜索引擎,那么我们建议您评估一下MeiliSearch。

Ultraaleap(前身为Leap Motion)一段时间以来一直是XR领域的领先者,创造了非凡的手部跟踪硬件,让用户的手可以跳跃到虚拟现实中。Stratos是Ultraaleap的底层触觉、传感器和软件平台,它可以使用定向超声波在半空中产生触觉反馈。一个用例是响应司机的手势来改变车内的空调,并提供触觉反馈作为界面的一部分。我们很高兴看到这项技术,以及创意技术员可能会做些什么来将其融入到他们的用例中。

Trillian是一个可加密验证的集中式数据存储。对于不可信、分散的环境,您可以使用基于区块链的分布式分类账。但是,对于企业环境来说,大量占用CPU的共识协议的成本是不必要的,我们建议您尝试一下Trillian。

技术,特别是广受欢迎的技术,有被过度使用的趋势。我们目前看到的是Node过载,一种不分青红皂白或出于错误原因使用Node.js的趋势。在这些中,有两个在我们看来是突出的。首先,我们经常听说应该使用Node,以便所有编程都可以在一种编程语言中完成。我们的观点仍然是,多语言编程是一种更好的方法,而且这仍然是双向的。其次,我们经常听到团队将性能作为选择Node.js的原因。尽管有无数或多或少明智的基准,但这种看法是植根于历史的。当Node.js变得流行时,它是第一个采用非阻塞编程模型的主要框架,这种模型使得它对于IO密集型任务非常有效。(我们在2012年对Node.js的撰写中提到了这一点。)。然而,由于Node.js的单线程特性,对于计算繁重的工作负载来说,Node.js从来都不是一个好的选择,而且现在其他平台上也存在功能强大的非阻塞框架-有些平台具有优雅的现代API-性能不再是选择Node.js的原因。