首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Go重写Node.js服务:项目性能提升5倍,内存减少40%

使用了 k6 并设计了以下测试: 测试开始,它会在前 10 秒内将 workers 的数量从 1 增加到 TARGET 然后再运行 60 秒才结束。...(包括系统处于压力之下)。...测试用例 download_small_file 的结果不好从图中目测,但 Hasura Storage 称其将场景的响应时间从 Node.js 用例的 29ms 提高 Golang 用例的 7ms。...除了在 download_image_manipulated 实现了大约 2 倍的改进外,在其他场景则均实现了 4 倍的改进。 图片 再是 P95。...“我们希望能够在使用更少资源的同时满足更多请求,同时还可以改善我们用户的响应时间,我相信他们会喜欢的。” 来源:OSC开源社区(ID:oschina2013)

4.1K10

用Go重写:项目性能提升5倍,内存减少40%

Hasura Storage 方面表示,在使用 Golang 进行重写后,其可处理的服务请求数增加了 5 倍,同时内存消耗减半。...使用了 k6 并设计了以下测试: 测试开始,它会在前 10 秒内将 workers 的数量从 1 增加到 TARGET 然后再运行 60 秒才结束。...另一个重要的指标是响应时间,Hasura Storage 提供了两个数据:最小响应时间,开源告诉我们系统未承受压力的响应时间;以及 P95,开源告诉我们大多数用户的响应时间最多是多少(包括系统处于压力之下...测试用例 download_small_file 的结果不好从图中目测,但 Hasura Storage 称其将场景的响应时间从 Node.js 用例的 29ms 提高 Golang 用例的 7ms。...除了在 download_image_manipulated 实现了大约 2 倍的改进外,在其他场景则均实现了 4 倍的改进。 再是 P95。

31630
您找到你想要的搜索结果了吗?
是的
没有找到

2020年AWS,Microsoft和Google应进行的云收购

而且,由于构建这些服务的团队都是相对独立的,因此即使他们已经精通该平台的另一部分,他们使用新的AWS工具,用户通常也面临着重大的学习曲线。 亚马逊已经做出了一些努力来解决这个问题。...AWS依靠Elasticsearch作为其可搜索的索引服务,但是Elasticsearch已经开始在日益关注开发人员体验和安全性的世界展示其时代。...将Algolia集成AWS并远离Elasticsearch可能会消除其中的一些紧张局势。 这些云计算收购的最大风险将是与其他AWS产品集成。...Cognito在其他AWS产品尤为根深蒂固,使用Auth0可能是一个工程项目。话虽如此,回报可能是巨大的。...Google在添加服务在竞争拥有巨大的早期优势,但是在2014年使用Firebase的人今天可能不会注意除了增加功能之外的很大差异。

6.5K20

GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口 | 开源日报 No.75

picture hasura/graphql-engine[1] Stars: 30.3k License: Apache-2.0 picture Hasura GraphQL Engine 是一个开源产品...查询转换为实时查询 合并远程架构:通过单个 GraphQL 引擎端点访问自定义业务逻辑的自定义 GraphQL 架构 使用 Actions 扩展功能:编写 REST API 以在 Hasura 模式添加自定义业务逻辑...此外,该项目还包括触发 Webhooks 或无服务器函数 (基于 Postgres 插入/更新/删除事件)、定期触发器 (根据特定时间点执行自定义业务逻辑) 和细粒度访问控制等其他关键特征。...该课程涵盖了 Rust 的各个方面,从基本语法泛型和错误处理。它还包括对 Android、bare-metal 和 concurrency 等主题的深入讲解。...多渠道搜索:使用两种技术手段寻找每个 CVE 对应的 PoCs,一方面根据参考文献是否存在指向 PoC 网址进行检查;另一方面在 GitHub 上搜索与 CVE ID 相关联且提到了漏洞利用代码库。

44550

受不了 Rust 这些问题,我将后端切换到了 Go

我能感受到你点击这篇文章怀有的愤怒。我并不讨厌 Rust——在许多场景,我都倾向于使用它。所有编程语言都是达成目的的手段。...需要一些比较复杂的逻辑,它就不那么有效了——为此,Hasura 允许你将 GQL 请求映射到自定义 webhook。举例来说,我就是用这种方法进行 S3 文件上传或身份验证。...编写一个测试;意识无法依赖注入。难过。 将结构转换为 trait;开心。 心满意足地依赖注入。 使用 mockall crate 自动生成 mock。非常非常开心! 做一个异步 http 调用。...意识这个宏无法很好地与 Mockall 一起工作。 难过。 事后来看,这个问题是有办法解决的。...如果我正在编写本地辅助库、性能敏感代码、任何不需要在容器运行的后端服务……那么,Rust 会是我的第一选择。特别是如果我不需要说服其他任何人使用它。

63210

写在2021: 值得关注学习的前端框架和工具库

虽然这样也造成我目前没有特别深入的方向,比如21届的大佬们在工程化、微前端、AST、NodeJS等等方向都已经开始深耕,我还在追着各种新框架学弟弟,但不得不说,在学习新事物的过程,你会逐渐对这些框架进行分类...同样是淘系到集团广泛使用的跨端方案。 Remax,小程序跨端框架,基于React,亮点是运行时方案(大部分跨端方案都是编译,还有Rax这种两套方案都支持的)。...它提供的GraphiQL就是我上面提到的增强版本: Hasura还提供了前面说的GraphQURL作为client,hasura-code-gen来从Hasura服务生成TS代码,所以基本上可以用Hasura...的生态做为一套方案了,包括我也有看到过一些创业公司就在使用Hasura(有提供企业级支持)。...Monorepo Nx,我在用这个作为业务项目的Monorepo管理,目前感觉都挺好,尤其是Angular + Nest项目,基于后端的GraphQL Schema生成TypeScript的类型定义和函数

2.8K10

写在 2021: 值得关注学习的前端框架和工具库

虽然这样也造成我目前没有特别深入的方向,比如21届的大佬们在工程化、微前端、AST、NodeJS等等方向都已经开始深耕,我还在追着各种新框架学弟弟,但不得不说,在学习新事物的过程,你会逐渐对这些框架进行分类...同样是淘系到集团广泛使用的跨端方案。 Remax[19],小程序跨端框架,基于React,亮点是运行时方案(大部分跨端方案都是编译,还有Rax这种两套方案都支持的)。...Hasura还提供了前面说的GraphQURL作为client,hasura-code-gen来从Hasura服务生成TS代码,所以基本上可以用Hasura的生态做为一套方案了,包括我也有看到过一些创业公司就在使用...Monorepo Nx[77],我在用这个作为业务项目的Monorepo管理,目前感觉都挺好,尤其是Angular + Nest项目,基于后端的GraphQL Schema生成TypeScript的类型定义和函数...Reactive.How[92],生动的展示RxJS Observable在操作符管道的流动,入门期间使用有奇效。

4.2K10

激荡二十年:HTTP API 的变迁

2005-2010:从混沌有序 — Ruby on Rails 横空出世 然而,成也萧何败也萧何,脱胎于 Web 开发的 PHP,与 Web 的亲和性是其优势,也是其后续没落的原因 —— 毕竟, Web...随后,大获成功的 iPhone 4(及 4s)真正把我们的生活扯入了移动互联网时代 —— 作为当时最成功最流行的 3G 手机,iPhone 4让移动应用进入主流用户的视野。...然而,你如何保证只热衷于进行 CRUD 的开发者能够正确使用 ETag 作为乐观锁(optimistic locking)进行条件更新(conditional update)呢?...莫非,Hasura 也从 postgREST 那里「偷师」?稍稍查询一下,发现代码确实有一些 postgREST 的痕迹。...这里 source 我使用 webassembly,并不是为了装 B,而是我希望这样的工具就像 postgREST 一样,你不需要,也无法对其二次开发。

1.7K30

使用数据库编程在PostgreSQL上构建石头剪刀布游戏

数据库编程正在卷土重来 近年来,我观察到我们行业的许多工程师和架构师越来越意识完全避免数据库编程的成本。许多人正在寻找更好的方法将高级数据库功能集成到他们的应用程序。...但是,在实践,将某些逻辑构建纯应用程序/后端代码,并将责任委托给数据库来处理其他部分,这完全是可以的。...出于这个原因,Supabase 提供了 边缘函数 作为其平台的一部分,就像 Hasura 提供 操作和远程模式 一样。...这意味着您可以跟踪系统随时间的变化,轻松比较状态,并在需要回滚。 机器可以理解代码。作为正式语言,机器可以处理、分析和执行代码。 代码可以进行测试和验证。...简而言之,当我们的用户调用 play ,会发生以下情况: 对手选择一个随机的动作。 使用 turn_result 计算回合的结果。 将结果插入 games 表。

8510

设计数据网格以控制数据蔓延

像 AWS Redshift Spectrum 和 AWS Athena 这样的产品彻底分离了计算和存储,在对象存储的异构数据上提供了 SQL 接口,降低了对转换(“ETL”的“T”)的需求,并鼓励将原始数据转储...数据目录 诸如 Atlan、Collibra 和 Amundsen 之类的 数据目录遵循四个指导原则的三个:领域所有权、数据作为产品和联邦计算治理。...API 网关 诸如 Hasura 和 Apollo Router 之类的 API 网关往往只关注一个指导原则:自助数据平台。...两个领先的选择,Hasura 和 Apollo Router,可以很好地协同工作,但是只有 Hasura 才能真正为使用 GraphQL 调整现有数据源做好准备。...许多人正在认识它在机器学习、分析或数据密集型应用的效用,所有这些都成为当今数据生态系统竞争的必备条件。

9710

我们在未来会怎样构建Web应用程序?

于是每当我们获取什么东西,我们都会对其标准化并把它放在一个地方(通常是一个存储)。然后,每个组件(使用一个选择器)读取并转换所需的数据。...Firebase 要求你使用一种受限的语言来编写权限。在实践,这些规则很快就会变得非常混乱——于是人们开始自己编写一些高级语言并编译成 Firebase 规则。...像 Hasura 这样的服务可以使用像 Postgres 这样的数据库,并做一些聪明的事情,比如给你一个 GraphQL API。 Hasura 很适合读取数据。...Hasura 可以做轮询,而且可扩展。我们也可以尝试使用特定的订阅语言,类似于 Supabase。如果我们可以证明某些查询只能通过事实的某些子集来更改,我们可以将它们从轮询移出。...这个抽象可能太大了 框架通常无法通用化。例如,如果我们想共享鼠标位置怎么办?这是短暂的状态,不适合数据库,但我们确实需要让它实时化——我们应该把它保存在哪里?

10K30

2021年11个最佳无代码低代码后端开发利器

尽管似乎有一个从写代码使用可视化开发工具的范式转变,但拥有一个后端和前端的基本概念仍然是相同的。要为你的业务建立一个应用程序,你将需要一种方法来连接你的后端和前端。...开发一个应用程序时,你通常在后端和前端之间来回调用API。 Draftbit是一个构建本地移动应用程序的可视化开发平台。它与后端无关。...在使用Supabase,你将在其图形用户界面(GUI)中度过大部分时间。它还提供了一个SQL编辑器,你可以用它来编写自定义的SQL查询,以操作表的数据。...最令人喜欢的特点之一是,它在创建数据库就提供了一个随时可用的REST API。它与前端无关,可以与任何前端工具构建的应用程序一起使用。...Hasura使用Postgres连接连接到数据库。它可以横向扩展并保持状态以缓存查询。基于JSON网络令牌(JWT)的认证可用于添加权限或基于角色的系统。

12.5K20

罗永浩:Face ID不是好东西;Facebook开源oomd

【程序员头条】 1、第一家 GraphQL 即服务公司瞄准开源数据库 PostgreSQL‍ 作为第一家 GraphQL-as-a-Service 公司,Hasura 推出了其开源 GraphQL 引擎...基于此,开发人员可以在几分钟之内使用 GraphQL,以便在 Postgres 上构建可扩展的 GraphQL 应用程序。‍...oomd 是新型的用户空间内存溢出杀手(OOM Killer),允许应用程序开发者在工作负载消耗所有可用系统内存自定义响应。...谈及苹果的技术,罗永浩认为,Face ID 是一种倒退,不应该用于解锁,在这方面远不如指纹技术,但对于人脸识别还是很有作用的。‍...目前,该公司表示, 2019 年 7 月,将实现每年量产 1000 个紧凑型 SpotMini 机器人。

1.1K50

「Mysql索引原理(六)」聚簇索引

行的主键值要求必须将这一行插入某个已满的页,存储引擎会将该页分裂成两个页面来容纳该行,这就是一次页分裂操作。页分裂会导致表占用更多的磁盘空间。...例如,从性能角度考虑,使用UUID作为聚簇索引则会很糟糕:他使得聚簇索引的插入变得完全随机,这是最坏的情况,使得数据没有任何聚集特性。...为了演示这一点,我们做两个基准测试: 1、使用证书ID插入userinfo表,和uuid作为主键的userinfo_uuid表 CREATE TABLE `userinfo` ( `id` int(...达到页的最大容量后,下一条记录就会写入新的页。一旦数据按照这种顺序的方式加载,主键页就会近似于被顺序的记录填满,这也正是所期望的结果。 UUID插入 ?...把这些随机值载入聚簇索引后,也许需要做一次OPTIMIZE TABLE来重建表并优化页的填充。 结论:使用InnoDB应尽可能地按主键顺序插入数据,并且尽可能地单调增加聚簇键的值来插入新行。

2.8K40

MySQL 8.0.23新特性 - 不可见列

所有的二级索引也将主键作为索引的最右边的列(即使没有公开)。这意味着使用二级索引检索一条记录,将使用两个索引:二级索引指向用于最终检索该记录的主键。...如上所述,数据存储在聚簇索引的表空间中。这意味着如果您不使用顺序索引,执行插入时,InnoDB不得不重平衡表空间的所有页。...如果我们用InnoDB Ruby来说明这个过程,下面的图片显示了当使用随机字符串作为主键插入记录表空间是如何更新的: 每次有一个插入,几乎所有的页都会被触及。...使用自增整型作为主键,同样的插入: 自增主键的情况下,只有第一个页和最后一个页才会被触及。...异步复制 使用"传统复制",如果您修改了一行记录(更新和删除),那么要在副本上修改的记录将使用索引来标识,当然如果有主键的话,还会使用主键。

1.3K10

ZincSearch获得360万美元融资,重新定义下一代Web3.0搜索引擎

ZincSearch 由 AWS 的前解决方案架构师 Prabhat Sharma 创立,它的诞生是因为意识主要企业客户在查询和管理数据遇到了巨大的成本和可维护性挑战。...Zinc 通过一个没有依赖关系的单一二进制可执行文件在两分钟内部署服务器或笔记本电脑上。...不幸的是,由于存储成本的上升(在集群基于磁盘的存储通常比基于 S3 的存储成本高出十倍)以及搜索引擎的低效率,现如今团队不得不经常在他们可以存储的日志数量上做出妥协,创建不完整的数据集。...Zinc 支持对象存储作为分布式搜索的主要存储方式。...Nexus 产品组合包括 Apollo.io、Arya ka、Clover Health、Delhivery、Druva、FingerprintJS、Hasura、H2O.ai、Infra Market

66320

【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)

https://blog.csdn.net/huyuyang6688/article/details/51428427   向数据库插入数据,大多数情况都会使用自增列或者UUID做为主键。...主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B插入数据(A的主键是B的外键),向A表插入数据之后,向B表插入数据需要用到A的主键。...id }   这里总结一下mybatis插入数据返回主键的4种情况:mysql环境下主键自增、mysql环境下主键为uuid、mysql环境下主键自增、mysql环境下主键为uuid。   ...主键为UUID(主键必须为字符类型)   使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以在插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键...#{sex},#{address})   在上述代码可以看到order 的属性值为BEFORE ,说明在插入之前就已经生成了UUID,并且已经把UUID赋值给user的id

2K20

使用雪花iduuid作为MySQL主键,被老板怼了一顿!

磊哥,前几天在做项目demo的时候,使用雪花iduuid作为Mysql主键,被老板怼了一顿!...因为uuid相对顺序的自增id来说是毫无规律可言的,新行的值不一定要比之前的主键的值要大,所以innodb无法做到总是把新行插入索引的最后,而是需要为新行寻找新的合适的位置从而来分配新的空间。...这个过程需要做很多额外的操作,数据的毫无顺序会导致数据分布散乱,将会导致以下的问题: ①:写入的目标页很可能已经刷新到磁盘上并且从缓存上移除,或者还没有被加载到缓存,innodb在插入之前不得不先找到并从磁盘读取目标页内存...结论:使用innodb应该尽可能的按主键的自增顺序插入,并且尽可能使用单调的增加的聚簇键的值来插入新行 2.3 使用自增id的缺点 那么使用自增的id就完全没有坏处了吗?...id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入的性能损耗,详细的解释了这个问题。

8K32

被追着问UUID和自增ID做主键哪个好,为什么?

新生成的 UUID 可能会插入已有数据的中间位置,导致范围查询出现数据重复或漏数据的情况。 不方便展示:UUID 通常比较长,且没有明确的业务含义,因此不太适合在系统间或前台页面进行展示。...使用 UUID 进行排序时,新生成的 UUID 通常会插入叶子节点的中间位置,导致 B+树的频繁分裂和平衡操作,进而影响查询性能。...自增 ID 在 MySQL ,可以通过设置 AUTO_INCREMENT 属性实现 ID 的自增长,通常用于作为主键 ID。...使用自增 ID 作为主键的好处包括: 存储空间节省:ID 为数字,占用的位数比 UUID 小得多,因此在存储空间上更加节省。 查询效率高:ID 递增,利于 B+Tree 索引的查询效率提高。...然而,使用自增主键也存在一些问题: 分库分表困难:在分库分表无法依赖单一表的自增主键,可能导致冲突问题。 可预测性:由于 ID 是顺序自增的,因此具有一定可预测性,存在一定的安全风险。

65910
领券