如何用谷歌学术订阅最新文献 如何成为文献搜索小能手
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
整合chatGPT的新必应(【【淘密令】】)简直就是科研神器!在跟踪研究热点、文献深度解析、研究选题思路、科研逻辑串联甚至sci写作方面,都能极大提升我们的效率和习得能力!推荐各位研究生同学跟进视频教程指南,快速系统掌握学习~
今天和大家分享的就是【【淘密令】】在科研中的应用指南!
本次分享的内容包括四个方面:
什么是【【淘密令】】(与chatGPT关系);
New Bing获取及使用(不限次数+保留聊天记录);
【【淘密令】】科研应用指南;
推荐2个chatGPT工具!
本次内容主要我们在思维导图中为大家展开:
重点为大家分享了如何利用【【淘密令】】进行文献深度阅读分析:
同时着重分享了如何利用【【淘密令】】进行科研信息获取及科研逻辑推理:
更多精彩内容解读,大家可以去大师兄B站主页观看原版视频(点击跳转):
本次内容同时为大家分享了思维导图大纲PDF文件:
本次视频思维导图源文件和PDF文件获取方式:
关注公众号:【【微信】】;后台回复:NBchat本次视频内容涉及到的链接分享:Edge DEV 下载:【【网址】】/zh-cn/download/dev
Skype下载:【【网址】】/zh-Hans/get-skype/
chatGPT在科研中的应用:
chatPDF:https://www.chatpdf.com/
BiliGPT:https://b.jimmylv.cn/
关注大师兄,科研不迷路!
云上存储方案 上云方案设计包括应用架构设计
云存储方案意见,云存储方案有哪些概率论,云上储存是什么,chia云上存储因为说好听点叫辩论赛,实际上就是两波二极管互相偷换概念,胡搅蛮缠,企图用话术压倒另一方。
我可不可以说一个残酷的事实,你只要突破了英文,就会发现中国大部分的大学都配不上自己录取的这些学生。
有的人真的卷着卷着就傻了,认为筛选就是一切,殊不知你本科用的那些生涩难懂的教材全都是阉割过的文字游戏,被人为增加了难度而已,你只是在养蛊游戏中赢了而已,不代表985就给了你什么样的教育。
“世界一流大学无不对本科生教育给予高度重视,为何中国大学恰恰相反
近些年中国高校科研第一,教学第二
研究生数量超过本科生数量”
以上来自于约翰・霍普克罗夫特,美国科学院、美国工程院院士,“计算机界的诺贝尔奖”――图灵奖的获得者。“中国大学的新生比牛津、哈佛的更加优秀,但是四年之后却落后了,这是有问题的!”
我本科和硕士刚好经历了两种不同的教育,硕士是corsework的,虽然大部分老师也都只是lecturer而已,首先待遇不差,且大部分老师不仅具有教学热情还是行业top级从业者,是深刻了解业界的一群人,他们大部分理论都相当具有实践性意义,有的学校会用自己的校友网络给学生介绍进入top级公司的一些机会。
反观国内本科阶段的教学是一直被高校忽略的部分,大一大二把学生丢给公共课的数学系,物理系,化学系的老师,美名其约打好基础,大三专业课照着三五年不变的ppt全程念经,大四把学生介绍去系主任吃回扣学生实习工资的公司。而且就这群人,大部分人一辈子也没出过校园,一辈子呆在象牙塔里,既不懂业界也不懂社会,那你如何指望这么一群人给你正确的【【微信】】,他们的任务只有你尽快的签三方或者忽悠你读研来完成学校给他们的kpi,这样获得更多的奖金,这跟巨型传销组织有啥区别?就这还碰瓷别人世界名校?这套模式里面大部分真正获益的些寒门贵子,给了他们公平竞争的机会,所以你可以说中国本科教育的大学系统是公平,泛平民化高效选拔人的过滤器,但是可别潮人家学校水了,人家教育干了一百多年一直都是以业界指导教学的模式来让学生适应社会,比学阀们搞了三四十年光知道水论文的大型研究机构差?
――――――
有的人说到自学这个事情,那么我想问下除了头部高校,学校给你提供了什么呢?你的学生证能进清华北大的图书馆吗?你系统里查到有一本你想用的书只有香港大学图书馆有,你们学校图书馆系统可以帮你协调借到这本书吗?
我告诉你,有的学校可以,我的学校在悉尼,不是悉尼大学,另外一所商学院会计闻名的高校,有一次我看上了一本审计相关的书籍,但是只有一本还未借出去,在新西兰某个高校的图书馆,我的学校图书馆帮我发出了申请,一个星期后寄到了我家,到期后我只需要还到我学校的图书馆即可。整个过程毫无障碍,你只需要出具你的学生证,在图书馆系统填写一个电子表格即可。这种事情你放国内高校,不经历三四个部门甩锅,等十几二十几个工作日,你能办成?
―――――――
那些认为只有卷赢了,到达头部才有资格享受像样的高等教育的人你们认真的吗?现在全世界都在抢人才,我们国家真的只需要那个前1%,后面的99%就都是流水线残次品?我怕是教育部领导人都不敢有这么大的口气。
―――――
突然变成高赞,真实惊到我了。
部分评论也许误解我的意思,我没有鄙视985学生的意思,能在大量人群中卷出来的人中龙凤我是真心佩服的。
我纯从自己和自己比较的角度出发,一个在大学里只能做到很居中既没学好又没玩好差点变成呆瓜的我,在遇到好的资源下也调动了自己的积极性,得到了很大的进步,当然过程其实比那些没出去的人艰辛,也遇到了很多很奇怪的事情,比如在atm上刚取完钱准备去交房租的时候被尾随,对方拿出针头我差点吓死丢下钱就跑,还有晚上遇到原住民小孩追着我要钱,我差点被打,诸如此类很多奇葩的事情,所以大家也别光惦记贼吃肉不见贼挨打,生活上受到的委屈如果再开个帖我可以说上三天三夜,所以如果你是个胆子比较大愿意突破的人就出国,但是个性比较内向求稳就留国内。虽然我本科那个学校行政档案财务处以及住宿甚至校医院简直烂到家了,但是吃喝真的相当可以,我人生没有再吃过那么好吃的鸡蛋饼。
还有我不会删评论,但是请部分人注意自己的言辞,毕竟是个公开平台,乱说话被开盒容易社死。
你还记得当年大下岗时代吗,约7000万人下岗。
按照一家三口来算,至少两亿人受影响。
但下岗有个前提,工人还有领导层才有岗下。这证明他们起码收到了一定的教育。
现在的一些中年人,一般也经历过那个时代。
到处都有人自杀,走个夜路都要担心会不会被抢。
出个远门都要随身带着刀,自己还不一定能回来。
2000年的广州火车站,明目张胆的抢劫,警力基本瘫痪。
当然有治安队,不过是查暂住证的,没的话就拉到收容所,打一顿,再让交罚金。
没钱就去修几个月铁路,再给张火车票,当然,挨打是家常便饭,不少人直接被打死在收容所。
到处都有吸毒的,躺在街上,没人管。
男的还好,还能干些体力活。
一部分女性被丈夫踩着单车送去特殊场所上班,下班后又默默接回。
有些听了别人的话,借高利贷办签证去国外当保姆,过去才知道被坑了,进退两难,找工作又是黑户,只能去卖,被打了也没办法。
寄回去钱,身边的人看见了眼红,又把自己家的女孩送过去,形成闭环。
纸包不住火,最后自己家里的人都嫌弃,只能留在那。
这种情况一直到了中国加入世贸,人们都有钱了之后,才慢慢消失。
现在,我想问下,你觉得你比他们强多少?
说别的都是扯淡。
串并联机构混动变速箱,在机械结构方面的门槛很高。而所有和机械结构方面难度相关的,这都不是光靠买团队就能搞定的东西。很多零部件和组装工艺甚至连供应商都没有,是主机厂自制。你怎么量产?
去年我在给一家商用车新能源初创公司做技术咨询,实际的情况就是如此的。如果是用带直驱的混动变速箱方案,就要直接买全套的变速箱(商用车和乘用车不一样,动力系统都是独立的系统厂商开发,例如玉柴、潍柴、锡柴等等)。而如果买增程系统,那么硬件成本会比较低,逆变器等其他系统初创公司自己配,然后初创公司自己负责能量分配和策略算法。发动机企业只要提供另一种形式的万有特性表(横轴转速,纵轴直接就是发电功率)。
还有一个原因就是开发周期。硬件多的系统的开发周期,很多都绕不开的,里面一个轴承的裂纹就够你调查6个月,然后新设计又要重新验证,验证周期跑完又是6个月。而增程式的一些策略优化甚至可以通过OTA升级扔到客户端来实现。
理想one的集成设计是很糟糕的,这么大的车,前舱空间其实也就只能塞进这台1.2T的东安发动机,而且这也是他们能找到的最佳方案了。理想one的发动机功率无论是从车重角度,还是发动机功率/电机峰值功率比来说都太低了,所以它根本就无法具备支持直驱的能力。
理想one配1.2T发动机甚至相对于增程式来说都是太低了。而且理想内部为了控制发动机噪音不要太大,所以发动机转速实车上市控制在3000rpm以下的。这从另一个角度限制了发动机功率。
所以理想one要选择高soc条件下启动增程器,在很多工况下事实上不是一个可选模式,而可能是一个只有如此才能相对安全的模式。理想自己也在宣传中潜移默化的在宣传,如果中长距离行驶建议用户要使用高soc的增程模式。
为什么不把高soc增程模式做成默认的?因为只有低soc模式才能拿到法规优惠啊。:)
其实就这么简单。
大电池提供的辅助实质上缓和了理想one发动机功率不足的短板,但是又从另一个方面导致了小发动机发出的电更多的实质上进入了电池再转出来驱动车辆,而不是直驱式增程的本意:发电尽可能多的直接驱动车轮。这也是实质上导致了理想one亏电油耗巨大的原因之一,不仅仅是因为东安发动机的热效率低。
在我的文章:
蔚来、理想、小鹏三家新势力造车公司,哪家最有可能先倒下?
中,把理想定义为产品经理导向造车。我觉得还是蛮贴切的。提到理想,最多的一点就是“一大遮百丑”。理想现在也在砸钱尝试在1.5T的二代机实现自己设计升级,构建护城河,目前买的AVL燃烧包在开发。目前大家都在看这个市场,大概在2024年上半年大量的车型,phev和增程开始上市。大家的ppt上其实都是这句话:你看理想都能成功。
分享一篇以K8s+Istio为技术底座的服务治理方案在京东零售采灵通系统的实践文章基于Istio的灰度发布架构方案实践之路
灰度发布,又名金丝雀发布,是指能够平滑过渡的一种发布方式。基于系统稳定性和快速业务迭代的综合考虑,业务应用开发团队采取了新版本服务灰度上线的方式,即新版本服务并非全量发布到线上环境,而是发布少数几个实例进行灰度验证,没有问题后再全量发布。在部分核心服务进行接口升级和逻辑迁移时,还会通过在业务逻辑代码中增加黑白名单或者流量百分比控制的方式,逐步将旧版本接口实现迁移至新版本接口实现。尤其是对于toB业务和SAAS类平台,很多情况需要根据租户或用户维度进行灰度控制,实现业务上的A/Best功能。
对于之前我们业务中实现的传统的灰度发布, 较好地权衡了服务稳定性和业务迭代效率,但仍存在以下问题:
a. 系统侵入性强,业务开发人员在服务接口中编码大量与业务逻辑无关的黑白名单或流量百分比控制代码。
b. 当新版本接口出现波动或异常,通常需要业务团队通过紧急修改代码和紧急发布,来更新黑白名单和流量百分比控制策略,时间较长,业务影响较大。
c. 调整黑白名单或流量控制百分比,需要业务团队发布代码或者接入动态配置中心,过程复杂、可复用性差、操作灵活性差.
d. 对于单体应用来说,灰度发布方案实现还算简单,但对于微服务应用,每次发布版本可能不是全部服务需要灰度发布,实现微服务灰度发布的原子维度控制,也是导致微服务框架下灰度方案不能很好落地的原因。
笔者实际业务项目(采灵通系统)采用的是微服务的架构设计,总计服务个数60+,技术底座采用K8s+Istio的服务治理方案。如果采用传统的灰度发布方案,每个服务上下游依赖过多,相对于传统的灰度发布方案,并不能很好满足业务诉求。因此,探索了一条基于Istio的服务流量治理方案下的灵活可配置的灰度发布方案。
先上一个方案简介图:
本发明的技术方案以k8s服务部署为基础,以istio服务流量治理为核心,以Mysql为数据存储,同时结合jenkins的自动化部署方案,可以实现低成本动态的高效微服务发布方案,并且带业务服务无代码侵入。
本发明的技术方案以activiti开源工作流引擎为基础, 以Mysql作为数据存储, 通过自定义的一套规则引擎框架, 可以实现流程规则的的快速搭建和动态修改功能.
a. 如图所示,k8s management实现对服务的pod管理,在k8s管理中,正式环境和灰度环境分别隶属两个命名空间,通过deployment实现服务的创建,创建中,灰度和正式的pod实例会打上prod或gray的标签。Deployment创建过程通过jenkins管理,可以实现部署的自动化流程。具体deployment配置方案详情请跳转至3.2.2
b. 如图所示,istio控制平面可以创建虚拟服务,通过对虚拟服务的路由策略的配置不同,可以实现不同的灰度策略,配置下发通过jenkins管理,可以实现配置的自动化下发。具体策略详情请跳转至2.1
c. 如图所示,具体业务请求实现流程如上:
- 用户首先需要登录请求,请求发动到我们自建的认证中心服务中。如图中1标所示。
- 认证中心接收到请求会到cookie生成器中获取用户认证的cookie,如图中2标所示
- Cookie生成器会到数据库中读取灰度白名单信息,来确定是否在cookie中打灰度标签。如图中3标所示。
- 认证中心拿到cookie后返回给前端用户 ,如图中4,5标所示。
- 用户带着cookie请求业务请求到虚拟服务A.虚拟服务A中存在istio控制面板下发的的灰度配置信息,通过配置信息,决定当前的请求流量是流入正式环境实例A还是灰度环境实例A。如图中6,7标所示。
- 服务A中存在调用服务B的业务逻辑,所以服务A会请求到虚拟服务B中,虚拟服务B中存在istio控制面板下发的的灰度配置信息,通过配置信息,决定当前的请求流量是流入正式环境实例B还是灰度环境实例B。如图中8标所示。
通过以上8个步骤,我们完成了灰度方案下的流量管控,该方案对于业务服务A和业务服务B无任何代码侵入,同时,灰度的配置方案可以实时快速的通过jenkins管理页面进行自动化下发,实现灰度发布的动态灵活切换.
至于灰度环境的低成本,当代码完成灰度拉平线上后,通过更改灰度下发策略,可以实现灰度环境和正式环境的负载均衡,共同承担正式环境的业务流量,保证了灰度环境的主机资源不会被浪费。
在k8s管理方面,要创建两个命名空间,一个是prod环境,一个是gray环境,通过命名空间隔离正式环境和灰度环境资源,主要原因是可以更好的管理。当然此处并不强制。同时,需要配置一下deployment的标签项,在标签项增加一个【【微信】】键,根据场景,【【微信】】可以配置为prod和gray,具体配置demo如下图所示。
灰度整体方案流程图如上图所属,该流程图中主要分为三大整体方案,包括:基于用户白名单的灰度方案,按照流量百分比灰度方案,灰度拉平线上的负载均衡方案。以上灰度环境可以满足之前提到的多场景,低成本,动态,无侵入的灰度方案要求。
以下2.3,2.4,2.5将分别详细介绍三种灰度方案的具体配置策略。
- cookie中打标签。
通过认证中心,可以实现业务维度的灰度控制,cookie中会根据用户白名单,进行灰度打标签。Cookie格式如下:
cookie:tenantGray=0;rememberMe=*********;channel=
当tenantGray=0时,表示当前用户不是灰度用户,当tenantGray=1时,表示当前用户是灰度用户。
- 当选择根据cookie动态配置灰度服务时,根据选中的服务,【【微信】】配置如下:
如图所示,当请求的cookie信息匹配到tenantGray=1时,根据istio的虚拟服务规则,走test-A.gray.sv【【微信】】.local路由,然后请求会打到灰度环境的服务实例上。当tennatGray=0时,根据istio的虚拟服务规则,走test-A.prod.sv【【微信】】.local的路由,然后请求会打到正式环境的服务实例上。
- 如果用户选择根据灰度标签进行灰度方案选择,配置方案如下:
在k8s集群中我们之前创建灰度服务的deployment时,当时增加过一个标签,标签为【【微信】】: pray,用来标记该服务为灰度服务。
如图所示配置,match条件为,当请求来源是来自带有灰度标签的deployment服务时,走test-A.gray.sv【【微信】】.local路由,然后请求会打到灰度环境的服务实例上。反之,走test-A.prod.sv【【微信】】.local的路由,然后请求会打到正式环境的服务实例上。
- 然后把所有需要灰度发布的服务对应的【【微信】】的配置信息通过jenkins的自动化流程下发到k8s集群中。
当我们的业务场景不需要针对具体的用户进行灰度时,尤其是我们只是在一定范围内做A/Btest,这样的话,我们可以更改配置信息,实现业务的按照流量比例进行灰度控制,具体的配置【【微信】】方案如下:
该灰度方案比较明确,就是当该服务不再需要灰度时,为了不浪费服务器资源,将灰度服务跟线上服务代码拉平,然后通过流量管理,正式环境的流量实现负载均衡的目的。假设灰度服务跟正式服务的服务实例数比率为1:1,具体【【微信】】配置如下:
众所周知,对于单体应用来说,灰度发布只需要对单一服务进行灰度控制就会要了。但是到了微服务框架下,会存在众多服务,服务之间存在复杂的网络拓扑关系,所以当我们进行服务的灰度发布时,需要控制服务之间的灰度调用关系,实现灰度发布的服务治理功能,解决了微服务框架下动态管理多服务之间的灰度方案串联问题。
以下举例三种不同的灰度治理场景。
下图实例场景是,服务A采用基于灰度白名单的灰度策略,服务B采用灰度拉平线上的灰度策略,然后服务A访问服务B,可以实现服务A的灰度发布,服务B为正式环境。
b. 下图实例场景是,服务A采用基于灰度白名单的灰度策略,服务B采用基于服务灰度标签的访问策略,然后服务A访问服务B,可以实现灰度服务A的流量访问灰度服务B,正式服务A的流量访问正式服务B。
c. 图实例场景是,服务A采用基于流量比率的灰度策略正式环境和灰度环境的比率为8:2,服务B采用基于灰度白名单的灰度策略,然后服务A访问服务B时,在灰度白名单中的用户,在灰度服务B,不在灰度白名单中的用户,走正式服务B。
通过本次基于Istio的灰度方案的实践,最大感触就是基于服务网格的第二代微服务架构的优秀潜力。Ser【【微信】】对流量的管理可以下沉至运维维度,并且灵活度是第一代微服务架构不可比拟的。通过这次时间,很好的解决了笔者现实业务中的灰度发布问题,实现了通过配置自动化下发,无代码侵入,实现动态切换等多种灵活策略**。
k8s:kubernates的简称。k8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制
istio:Istio 是一个开源服务网格,它透明地分层到现有的分布式应用程序上。
负载均衡:意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行
【【微信】】:istio内置的一种配置类型,叫做虚拟服务,可以设置单独的路由指向。通过【【微信】】可以实现istio的流量管理。
灰度拉平:是指将正式环境的服务代码跟灰度环境的服务代码拉成一致的。
震撼。
实在想不出来为啥被这么吹,一度以为我看错电影了。
最近主要在切换工作,很久没有更新了,今天来写一写。
我在阿里云参与的最后一个项目"CloudJump: Optimizing Cloud Databases for Cloud Storages"发表在了今年的 VLDB 工业 track 里面。这篇论文的大部分内容来源于 PolarDB 的存储引擎团队在过去的几年里面向云上的 polarfs 在 【【微信】】 中所做的工程迭代和优化。有些朋友可能知道我之前是 LSM-tree 组的,那么也就能看出来这些都不是我自己所在团队的工作。大概是一年多前的某天晚上下班的时候,隔壁组的老板在卫生间门口问我有没有兴趣跟他们一起搞事情,出于对他们组工作价值的把握,我当即就答应了。后来我就和隔壁组的豪华阵容一起搞来搞去,前前后后搞了一年多时间,最终搞出来这么一篇文章。大佬拿了飞天奖,我……辞职加入初创公司,我们都有光明的未来。
背景交代了,现在我们来讲讲技术。
从 10 到 20 年前开始,传统的 on-premise 数据库架构就已经不能满足数字化企业的业务需求了。在这一点上,Amazon 和淘宝可能走在了最前面。不断爆炸性增长的业务数据以及实时处理分析数据的需求,催生了很多在今天大家已经习以为常的数据库架构。在 Amaon Web Services (AWS)上比较典型的有 DynamoDB 和 Aurora,在淘宝这边非严格对标的则是 Tair 和 PolarDB。虽然我本人也就类似问题发过一些 SIGMOD,但我认为今年 ATC 上 DynamoDB 的论文对云数据库应运而生的本质把握得更加清楚。建议阅读:
DynamoDB 强调了一个概念,也是一个主要卖点,即 'consistent performance at any scale',也就是说无论数据库如何 scale,它都能够提供一个稳定、可预期的性能,'single-digit millisecond read and write performance'。这个产品定位非常、非常清晰。至于为什么会有这么样的定位,如果你清楚 Amazon 的电商架构,或者了解淘宝大促背后的内存缓存功臣 Tair,那么应该就很容易理解了。不清楚的话,可以看看上面的论文,也可以思考一下如果你是数据库上层的 app de【【微信】】,如果底层数据库可以让你无需担心业务数据量的不断增长,同时提供非常稳定、非常低的延迟,难么你是不是可以相对容易地做出用户体验一致的 app,而且性价比还不错。
下面我把这个产品定位翻译成数据库的技术挑战或者设计上的优先级。
必须分布式。单机是不可能完成任务的,AWS 和淘宝都有每秒将近亿级别的事务或者请求量,必须保证低延迟实时处理。如果还上单机,那么势必就像一只羊站在了核爆中心。早年间分布式一致性技术还没有在数据库中普及,像淘宝一开始搞得是使用分库分表的中间件来管理多个独立的单机 MySQL;到今天,Paxos 和 Raft 成熟的理论和技术已经让非常多数据库实现了从单机到分布式的扩展,人人都可以讲五分钟脱口秀,啊不,选主。
存储必须池化。本地盘是不够用的,数据库的容量不能被存储的装机容量限制。同时对数据高可用、高性能、不丢失、低成本等等等等的需求也要求 infra 层面不能依赖本地盘。存储池化可以为单个数据库集群提供上百 TB 的总存储容量,还支持按量付费,用户无需为 always-on 的存储集群付费,也不需要管理硬件替换和故障。这些加起来非常自然地构成了一种存储服务。
而成熟的单机数据库及其存储引擎,全部都是从单机环境下迭代出来的,最著名的就是 【【微信】】 里面的 B-tree 一族和 RocksDB 里面的 LSM-tree 了。这些现成的引擎面对上述两个要求,大多捉襟见肘。
传统的存储引擎为了实现较高的 I/O 利用率,会将较为碎片的数据在内容中 buffer 起来,以顺序的方式写入磁盘;而在池化的分布式存储中,一个要执行 I/O 任务的节点可以同时向多个存储节点写入数据,聚合带宽远高于单个本地节点,无需再像本地存储上凑 buffer 了。
数据库往往依赖 cache 来隐藏 I/O 延迟并提供内存级的低延迟。但在分布式条件下,如果每个参与事务或查询处理的节点都有一份本地的 cache,那么 cache 之间的一致性开销所带来的麻烦可能会大于 cache 能够减少的 I/O 开销,尤其是在 RDMA 网络可以大幅降低网络延迟的情况下。如果没有 cache,B-tree 一族无非是需要到存储中读取被访问的 page;而 LSM-tree 麻烦就非常大了,它的读放大会被暴露,而且不仅仅暴露在查询的延迟中,也会被暴露在写入的延迟中(在需要做唯一性、存在性检查的操作中)。
负载均衡相关的问题也会有更大的影响,甚至是用户可感知的影响 。如果存储层用了非常多的存储节点来装 100 TB 的数据,但是热点就集中在其中的某个 10 GB 上,那用户就是花了翡翠白菜的价格买了个烂白菜级别的体验。上文提到的 DynamoDB 在这方面做了非常多的设计。PolarDB 的底座 polarfs 也做了非常多的设计。简单来说,数据库的文件要被散开摆放在多个节点中,还可能被重新 shuffle 来优化平衡,也可能配合 partition 和性能 throttle 等等技术。再比如说,用户一般会显式地知道他的集群买了几个计算节点,云原生数据库往往都会支持一写多读模式下的只读节点水平扩展,但只读节点往往无法满足强一致读的需求。因为同步延迟墙的问题,只有主节点能够为强一致查询和事务请求提高低延迟的服务。如果用户看到他花重金开的只读节点挺闲的,你猜他会不会挑战数据库的弹性价值。
还有更多问题此处不再展开了。
在 CloudJump 这篇文章里面,我们从 update-in-place 的 B-tree 一族和 append-only 的 LSM-tree 两个角度出发,讨论了存储引擎怎么在云上的分布式和池化场景下优化性能和成本,列举了我们所做的许多工程优化细节,虽然都不是特别 fancy 的技术,比如老掉牙的 prefetching,但有效。
从论文的角度,我们需要追求讨论的完备性,处处都会对比 B-tree 和 LSM-tree,看起来是在回答一个存储引擎技术选型的问题。具体的内容欢迎大家到文章里去看。此处我想区分一个概念,就是产品优先的选型和技术优先的选型是不一样的。
从技术角度来说,LSM-tree 难以提供稳定的性能,其读写放大都太大了。为了做成一个好的产品,像 OB 这样用 LSM-tree 用得比较好的系统,其实是使用了一些成本较高的架构才实现的这一点。比如大家如果点开 OB 的 TPC-C 结果,会发现它的单个数据库节点坐拥 712 GB 内存,而整个集群像这样的大节点一共