无服务器、Rust,都是旧技术的二次创业!

news2024/9/25 15:26:31
  • 原文标题:​​Serverless Is the New Timeshare​​,作者:Shai Almog

还记得大型机吗?无服务器就好比如:我们拥有这台机器,你来我这里租借。创新往往都是在踩在巨人肩膀上诞生!

分时度假是一种源于欧洲的度假模式,就是把酒店或度假村的一间客房或一套旅游公寓,将其使用权分成若干个周次,按10至40年甚至更长的期限,以会员制的方式一次性出售给客户,会员获得每年到酒店或度假村住宿7天的一种休闲度假方式。并且通过交换服务系统会员把自己的客房使用权与其他会员异地客房使用权进行交换,以此实现低成本的到各地旅游度假的目的。

回过头看,无服务器就是新的分时度假!

我们都有健忘症。当我与年轻的开发人员谈论过去的技术时,我经常会得到茫然的目光。公平地说,有些是因为我有点“紧张”或“怪异”,但有些是因为年轻的技术人员并不了解过去的技术。

举个例子:有些年轻的技术人员根本不清楚什么是两端提交(2 Phase Commit)。难道是事务管理已经不需要了吗?

银行是否不再需要一致性?如果你不在“同一页”上,该技术通过在不同的服务器之间传输事务上下文来工作。因此,一台服务器上的提交是一个多阶段过程,几乎可以保证所有服务器都成功或作为一个服务器回滚。这是相当惊人的,实际上效果相当好(显然有一些警告)。令人惊讶的是,这是通过方法调用实现的。你不需要做任何事,即使在完全不同的服务器上调用远程方法,它也能好好工作。

几年前,我与银行业的一家叫 Node-based 的初创公司交谈。他们表示,银行对与Node合作非常开放。我知道他们在更“成熟”的环境中重写他们的东西。当我使用一些“较新”的工具,如Node时,我总是对缺少的基本功能感到惊讶。当然,如果你不把我们需要的一切都融入其中,它会更简单、更小。当您放弃核心功能时,很容易构建简单的东西。

 

2010 年代的 NoSQL 戏剧

早在 1999 年,我正在组建自己的咨询公司,一位朋友让我见见他的老板。我去了这个办公室,“老板”说他有一个没有人想到的最惊人的想法。他们有资金,将在 6 个月内推出产品,并在第一天就向 100 万用户推出!

我:好的。什么想法?

他:我会在你报名为我们工作后告诉你。

我:我会签署 NDA(NON-DISCLOSURE AGREEMENT,即不公开协议)。

他:不。这个主意太好了。那些保密协议一文不值。你注册然后…

不知道为什么,我居然能够顶住为这家公司工作的诱惑。大概一年后,他们显然没有推出,但我的咨询公司做得很好。朋友又打电话给我了。这一次他们需要产品方面的帮助,所以我以咨询的身份去那里帮助他们。

他们的想法是在网站中内置一个聊天应用程序,这样网站的访问者就可以互相聊天。一个竞争对手已经推出,我正在咨询其他几家具有相同想法的公司。他们转而专注于与电子商务相关的聊天。但我离题了……

他们的系统表现非常糟糕。一个用户的速度就像黏了蜜糖的蚂蚁一样慢。显然,CEO 坚持他们需要在第一天就能支持 100 万用户(正如他告诉我的那样)。他们将这一点传达给Oracle公司,Oracle说他们需要一个由三台服务器组成的集群来支持这个容量。然后他们与一家面向对象的数据库供应商进行了交谈,后者承诺他们可以用一台机器处理 100 万用户。所以他们全神贯注于面向对象的数据库。当我对此表示震惊时,他们声称他们的数据非常“面向对象”,因为每个用户都可以拥有多个项目……呃。

他们不了解事务边界,存储代码与所有代码混合在一起,而且速度很慢。这是不可靠的,无法理解。您可能不记得面向对象的数据库时期,但它是 2010 年代席卷我们行业的 NoSQL 时尚的先驱。在担任顾问的那段时间里,我重新观看了这个故事的重播。这一次大多数公司都成功推出了。

但后来他们发现拥有非结构化数据并不是万能的。与仅使用良好的缓存和经过良好调整的 SQL 相比,他们在性能方面获得的好处是微不足道的。部署故事非常复杂,辅助工具可能永远无法达到我们在 SQL 世界中所拥有的水平。

需要明确的是:NoSQL有自己擅长的领域,但是这些数据库常见的用途并不是很好,并且源于 RDD(恢复驱动开发)。这是我们这些已经在街区附近转过几次的人一遍又一遍地看到的模式:

  • • 旧技术笨重复杂
  • • 人们发明了一些干净简单的东西
  • • 忘记旧技术的存在
  • • 新东西过于简单化,并没有做很多基本的东西
  • • 重塑这些复杂性
  • • 新的东西变成了需要重新发明的旧的和笨重的复杂性……冲洗/重复
  •  

无服务器是新的大型机

在过去的一个月里,我做了很多无服务器的工作,我觉得这是一个很大的倒退。这是重蹈覆辙我们在 PaaS 上遇到的问题。它实际就是一个大型机。过去,我们曾经为在共享使用的大型机上运行工作付出代价。这有点像​​虚拟化环境​​,但想法相似:我们不拥有该环境。可以说这对于云 SaaS 也是如此,但无服务器将这个概念带到了很远的地方。

甚至调试体验也很糟糕。我们没有对我们的代码或基本应用程序逻辑的基本控制。我正在努力弄清楚为什么人们将它用于基本任务之外。

我能想到一个很好的用例:webhook。获取 webhook 的管道代码总是很痛苦。他们不经常触发,处理它是一件苦差事。使用无服务器功能将内容添加到数据库并完成工作可能非常简单。由于无论如何都很难调试回调,因此无服务器中糟糕的调试体验并不是一个巨大的障碍。但是对于其他所有用例,我绝对感到困惑。

人们花费大量时间检查和测量吞吐量,但仅使用一台稍大的服务器,并且只有本地调用会产生超出您可能需要的吞吐量。没有我们陷入的所有供应商捆绑。使用 Linode、Digital Ocean 等托管会节省很多钱。在上市时间方面,仅使用缓存和快速本地工具将比您可以在云中构建的任何东西容易得多。

容器是一个很好的进步,它们让这一切变得简单多了,但我们会被为了使用容器而带来的复杂性累垮,比如K8S。不要误会我的意思。K8S很棒。但我们 98% 的人并不真正需要它,也不应该使用它。如果你是一家小型的创业公司,Kubernetes 是在浪费你的时间和精力。

 

回到 Java 和 Rust

Java 就是一个在“健忘方面”做得很好的例子。我们有 Smalltalk,它很棒。当 Java 刚出现时,它是一种具有怪异 C 语法风格的劣质解决方案。Java 在 Smalltalk 和 C++ 中抛弃了许多伟大的想法。它采用了一些有争议的想法(检查异常、原语等)。然而它成功了。它吸引了人们的注意力;它能够利用这一点。

它最初是一种轻量级语言,可以丢弃其他平台添加的所有垃圾和过度工程。现在看看,再也没有人将其描述为“轻量级”。开发人员正忙于创建更轻、更简单的语言来抱怨 Java 的错误。成功会让他们回到我们开始的地方。一种成长太多的轻量级语言。Java 目前处于应有的位置。这是一个好的重写的少数例子之一。

Rust 似乎也是少数例外之一。它以一种全新的方式重新发明了 C。很难说它是否能长期生存。但毫无疑问,它需要在此过程中承担很多复杂性。

 

有意识的重塑

是什么让对现有语言或工具的重新发明成功赢取大众市场,又是什么让这些工具被搁置一旁?

SQL 起死回生,再次受到新创业公司的青睐。对于 C++ 则不能这样说。它们有何不同?

尽管缺少我们在 JVM 世界中拥有的基本功能,但 Node 和 Python 仍然很受欢迎。那是怎么回事,他们会维持这种受欢迎程度吗?他们会把这些东西加回去吗?

直到青少年时期,我们的大脑不断地增加突触。在我们十几岁的时候,我们把它们砍掉了。一种理论是,这是我们作为青少年所经历的所有变化的根源。我们需要断开不再为我们工作的东西。否则,我们只会学习父母所知道的。我们不能通过犯自己的错误来改进。再次尝试那一代人失败的事情。

结果,我们重复了错误,犯了一些新的可怕的错误。我们也取得了一些惊人的飞跃和发现。这是创新起飞的地方,工程也是如此。

我们如何区分:青少年焦虑与光明的新方向?

老实说,我们不能。作为一个年长者,当我第一次看到这些东西时,我觉得很多东西都很愚蠢。我们已经尝试过这些事情并且失败了。为什么要重复那个错误的方向?这就是创新所在。但是,如果我们仔细观察成功的尝试,我们可以看到对他们有用的东西。

Java 并非旨在结束 C++。当然,这可能是一个幻想。但高斯林设计它是为了简单和轻小。要解决非常狭窄的利基市场,请关注安全性、规模和网络。

Rust 并非旨在终结 C。它旨在使 Firefox 等项目更加稳定和高性能。

我认为,当我们最初将自己限制在一个非常小而狭窄的用例时,二次发明就像任何初创公司一样,效果很好。通过这样做并保持最初的关注点,我们可以建立一些好的东西,然后实现伟大的飞跃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven基础总结

前言 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。 基本要求掌握 配置Maven环境直接查。 得会在IDEA创建Maven的java项目吧、会创建Maven的web项目吧、会创建多模块项目吧。 得会配置插件pligin、依赖dependency吧 一、Maven四大特性 1、…

利用Google Docs的评论功能投递钓鱼链接

情报背景 利用Google drive等可信云服务进行的网络钓鱼攻击活动日益增长,这种攻击手段利用了高可信度的云服务骗取受害者的信任,并且可以绕过基于域名的安全策略。 近期Avanan公司发现了一种新的邮件钓鱼方式,攻击者利用Google docs的评论功…

【CAS定制】定制化密码编码器--支持密码组合编码或加密 PasswordEncoder

CAS中,默认支持的PasswordEncoder只能通过一种密码算法进行编码或加密,但是日常场景经常存在组合编码的需求,这就需要我们去定制一种支持密码组合编码或加密的编码器。 文章目录 场景定制目标定制方案定制代码 场景 一般项目中有很多需要进行…

HTTP协议讲解

HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核…

贝锐蒲公英:智能组网助力企业智慧工地信息化建设

随着现代信息化技术的不断发展,为了让企业工地施工管理、监督更为高效、精准,及时发现并处理工地单位施工中的安全和质量问题,视频监控已成为“智慧工地”建设中不可或缺的重要环节。 视频监控系统主要通过安装摄像头对施工现场进行实时监控和…

RK3568蓝牙程序开发过程

1、搭建蓝牙开发环境 蓝牙开发可以使用C语言开发或python语言开发,使用的是蓝牙开发库为bluez库。 本文开发使用python语言开发,安装bluez库,可以使用pip install PyBluez来安装。 如果安装不上的话,可以使用sudo apt install pyt…

Springboot中拦截GET请求获取请求参数验证合法性

目录 目的 核心方法 完整代码 创建拦截器 注册拦截器 测试效果 目的 在Springboot中创建拦截器拦截所有GET类型请求,获取请求参数验证内容合法性防止SQL注入(该方法仅适用拦截GET类型请求,POST类型请求参数是在body中,所以下面…

ADB连接安卓手机提示unauthorized

近期使用airtest进行自动化测试时,因为需要连接手机和电脑端,所以在使用adb去连接本人的安卓手机vivo z5时,发现一直提示unauthorized。后来经过一系列方法尝试,最终得以解决。 问题描述: 用数据线将手机接入电脑端&…

数据分析 绘图工具

prism呢… 拼dd上看到卖prism的终身包 GraphPad Prism GraphPad Prism 就是为生物科研统计作图而生的一款数据处理绘图软件,它不仅能分析数据,还能快速作图,简直是科研人的福音! GraphPad 最新版本拥有最新的气泡图&#xff0…

Springboot中使用过滤器校验PSOT类型请求参数内容

目录 目的 实现步骤 完整代码 目的 在Springboot中创建过滤器,用来过滤所有POST类型请求并获取body中的参数进行校验内容是否合法;该方法仅适用于POST类型请求,因为POST和GET请求的参数位置不一样所以处理方式也不一样,如果想要…

恒盛策略:早盘A股三大指数表现分化 CRO概念板块逆势涨超6%

周三(8月9日),A股三大指数体现分化,到上午收盘,上证指数跌0.36%,报3249.02点;深证成指跌0.28%,创业板指涨0.24%;沪深两市合计成交额4550.78亿元,总体来看&…

DARPA-TC-engagement5-theia部分数据格式分析

转换出来的jsons数据主要分为四大类:Event、Subject、Object和Principal,分别代表系统事件、主体、客体和用户。各种大类中子类的数量,取决于CDM的版本。ShadeWatcher使用的是e3的数据,采用的是CDM18,而e5默认使用的是…

HTTP——十一、Web的攻击技术

HTTP 一、针对Web的攻击技术1、HTTP 不具备必要的安全功能2、在客户端即可篡改请求3、针对Web应用的攻击模式 二、因输出值转义不完全引发的安全漏洞1、跨站脚本攻击2、SQL 注入攻击3、OS命令注入攻击4、HTTP首部注入攻击5、邮件首部注入攻击6、目录遍历攻击7、远程文件包含漏洞…

Win10的日历软件中怎么新增日程安排及提醒?

在经济发展加速的时代,职场中做好时间管理的重要性不言而喻,而想要在工作中做好时间管理,关键在于按时完成每项日程安排。所以每天在使用win10电脑办公时新增日程安排并设置提醒不仅是非常有必要的,而且是提高效率和生活质量的重要…

Java课题笔记~ JavaWeb概述/开发基础

JavaWeb概述/开发基础 1.XML基础 (1)XML概述 (2)XML语法 (3)DTD约束 (4)Schema约束(XML Schema 比 DTD 更强大) 2.Web基础知识 Web是一个分布式的超媒…

Celery的基本使用

1.Celery介绍 1.1 Celery是什么? Celery是Python开发的简单、灵活可靠的、处理大量消息的分布式任务调度模块专注于实时处理的异步任务队列同时也支持任务调度 Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Ce…

设置height:100%无效的原因以及两种解决方法

原因&#xff1a;我们知道在把盒子宽度自适应为浏览器窗口宽度&#xff0c;只需设置width:100%就可轻松解决问题&#xff0c;但是让盒子的高度自适应浏览窗口的高度并非那么容易&#xff0c;这是因为css内部计算的原因 <!-- 高度实际为字体大小 --> <div class"…

ElasticSearch:环境搭建步骤

1、拉取镜像 docker pull elasticsearch:7.4.0 2、创建容器 docker run -id --name elasticsearch -d --restartalways -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.typesingle-node" elasti…

logo设计用什么工具比较好?为你推荐这9个

在海报设计工作中&#xff0c;logo设计是必不可少的一步&#xff0c;今天本文为大家推荐9个特别好用的logo生成器&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时灵感是一个结合了AI技术的logo生成器&#xff0c;它无需设计师提供设计素材&#xff0c;只要在文本框中…

软件系统测试报告

1.简介 1.1.编写目的 本文档是对重庆市XXX项目验收测试所做的说明&#xff0c;为充分利用已有的软硬件资源&#xff0c;配合对系统应用模块的运行测试方案,查缺补漏完善系统的各项具体功能,保证项目的顺利进行&#xff0c;本测试报告有助于实现以下目标&#xff1a; 明确本次…