husky的配置及前世今生

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了husky的配置及前世今生相关的知识,希望对你有一定的参考价值。

参考技术A 下面是以前常见的配置,但是如果现在(2022年)你发现不管用了, 那么往下看, 这是因为新版本的husky(6.0.0)已经做了破坏性的变更,之前的设置方式已经失效了。新版本做了改动,不支持这么写了,为什么?

根据官方的说法,之前husky的工作方式是这样的,为了能够让用户设置任何类型的git hooks都能正常工作,husky不得不创建所有类型的git hooks。这样在git 工作的每个阶段都会调用husky所设置的脚本,在这个脚本中husky会检查用户是否配置该hook,如果有就运行用户配置的命令,如果没有就继续往下执行。

这样做的好处就是无论用户设置什么类型的git hook husky都能确保其正常运行。但是缺点也是显而易见的,即使用户没有设置任何git hook,husky也向git中添加了所有类型的git hook。

那有没有可能让husky只添加我们需要的git hook呢?作者尝试过解决这个问题,但是失败了。究其失败的根本原因,就是因为husky需要在两个地方进行配置才能完成一个完整的git hook功能。一个是在package.json中配置git hook所要执行的真正命令,一个是在.git/hooks/中配置相对应的git hook。也就是说无论是添加还是删除git hook就要保证在这两个地方同步执行对应的操作。作者无法找到一个可靠的方法来同步这两个地方的配置,因此失败了。

作者认为这个问题是由husky工作模型的自身缺陷导致的,如果想要解决就不得不另辟蹊径采用一种新的工作模型。因此新版husky做了破坏性的变更。

新版的husky使用了从git 2.9开始引入的一个新功能core.hooksPath。core.hooksPath可以让你指定git hooks所在的目录而不是使用默认的.git/hooks/。这样husky可以使用husky install将git hooks的目录指定为.husky/,然后使用husky add命令向.husky/中添加hook。通过这种方式我们就可以只添加我们需要的git hook,而且所有的脚本都保存在了一个地方(.husky/目录下)因此也就不存在同步文件的问题了。

首先使用 husky install 创建husky的相关目录和文件。

然后创建文件,并设置执行命令

上面创建了一个pre-commit的文件,并把npm test作为文件内容。

这样每次执行git commit的时候会先执行pre-commit 中的命令。

参考文章

透视华为云云原生数据库的前世今生及未来演进,能给行业带来哪些启发?

摘要:通过云服务形式提供数据库功能的云数据库应运而生,但这还仅仅是数据库变革的开端。

本文分享自华为云社区《透视华为云云原生数据库的前世今生及未来演进,能给行业带来哪些启发?》,作者:万佳。

自云计算出现后,风云变幻十余载,硬件、软件行业都经历了重构变革所带来的机遇与激荡。企业 IT 基础设施逐渐云化,应用转向云端,系统架构也经历了从单体到微服务再到 Serverless 架构的演进。这些变化一方面为用户提供了更优秀的特性,另一方面也对云计算的组件提出更高要求。大势的裹挟之下,数据库作为云计算关键技术和最基础的服务之一,同样需要不断进化以适应日新月异的场景需求。自此,通过云服务形式提供数据库功能的云数据库应运而生,但这还仅仅是数据库变革的开端。

云数据库进一步演进:云原生数据库诞生

相比传统数据库,云数据库确有一定的进步,但是其本质上并非针对云场景或云环境来设计和构建的,只是用到了云的资源,因此存在一些局限,比如资源利用率低、维护成本高、可用性低等,从而限制了业务发展。随着云计算深入发展,云计算步入云原生时代。同时,越来越多企业加速数字化转型,业务对数据的诉求不断提升,倒逼着云数据库进一步演进,更加适应云特性的云原生数据库就此诞生。云原生数据库的目标主要是充分利用云基础设施的资源弹性调度实现数据库资源的极致弹性伸缩、数据就近访问、多模兼容,让用户专注在业务创新,而不用在数据库管理和运维层面耗费资源。云原生数据库的这些优势,受到越来越多企业的欢迎,而且热度不断攀升,已经成为数据库行业的重要发展趋势之一。

云原生数据库缘何兴起

为什么云原生数据库这么火?在华为云数据库软件总工程师彭立勋看来,第一,传统数据库的使用门槛相对较高。以前,数据库主要是本地部署(On-Premises),从采购机器、规划容量到部署软件,整个过程非常复杂。他说:“有了云计算,尤其是云原生数据库出现后,正好遇上企业数字化转型,对数据库的需求增加,而云原生数据库可以开箱即用,不用像以前那样做大量规划、采购和部署等。”

第二,云原生数据库能满足企业对数据库弹性伸缩的需求。而传统的做法是靠 DBA 规划,这很容易出现问题。对此,彭立勋深有感触,他以前做 DBA 时,要对容量做很精细的规划。如果规划没做对的话,要么浪费资源,要么性能不足,然后还要重新调整。

第三,云原生数据库可以从技术上解决传统数据库面临的资源、性能和扩展性受限等问题。传统上,这些问题要靠 DBA 不断提升自己的技术能力去解决。他表示,云原生数据库出现后,云服务商提供的相应产品本身就具备这样的能力,因此对企业来说,数据库的使用门槛大大降低。所以,在进行数字化转型时,很多企业倾向于选择云原生数据库。从传统数据库到云原生数据库,这是数据库自身的演进。更重要的是,数据库演进的背后折射出企业业务的变化。

据彭立勋介绍,首先,从以资源为中心到以应用为中心。从企业视角出发,它一定有一些自身需求,比如要求资源能弹性扩展。以前,缺乏这种技术时,企业主要是以资源为中心,有多少资源配多少数据库,然后再根据资源的表现和负载情况进行调整。云原生数据库出现后,从以资源为中心转变成以应用为中心,通过技术手段让用户使用更简单。企业只管用数据库,不用管背后到底需要多少资源。如果资源不够,系统自动帮你扩展,或者用户手动进行弹性扩展,速度更快、效率更高。并且,企业无需像以前那样预先规划资源,直接自动或手动调整资源即可。

其次,从以地域为中心到以流量为中心。以前,数据在哪,应用就要布置在哪,或者说应用在哪,数据也要同步到哪,这是以地域为中心。为了给用户提供最快访问,企业往往需要在各地设置数据中心,然后通过各种方法把数据同步到用户就近访问的地方。基于云原生数据库,企业只需要关注流量从哪里来,用户从哪里访问,数据库会将数据分布到不同的 Region,应用就近、随时随地访问数据。彭立勋表示:“应用在哪,数据库帮你把数据往哪同步。对用户来说,全球是一张网。”

最后,从以负载为中心到以数据为中心。传统上,不同的负载要放在不同的数据库里,比如报表、分析类的会放在一种数据库里,文档或键值类的放在另一种数据库。云原生数据库出现后,用户不同的负载由云服务商在后端适配不同的数据库实例,或者帮用户做同步,将数据放到适合做相应查询的数据库里。不管用户使用什么类型的负载和数据模型,都由云服务商帮用户判断。

“比如偏 OLAP 的,我们把它转到适合 OLAP 的数据查询的节点上。简单说,华为云云原生数据库改变了用户习惯,让用户对数据库的使用变得没有那么复杂。”他补充道。

此外是商业模式的改变。传统数据库是基于授权来获取商业收入,企业在使用数据库前要先购买 license。如果预估不准,企业采购的 license 就会存在浪费或不足的情况。而云原生数据库是以云服务的方式提供给用户,按需使用,用多少资源、使用多长时间,相应的为使用资源付费。

云原生数据库命中企业痛点,最大挑战不在技术

基于长期的行业观察,彭立勋总结出云原生数据库的价值。首先,云原生数据库开箱即用,使用简单,用户只要购买云原生数据库的服务,就可以直接使用。同时,按需使用,需要多少资源,用户就购买多少资源,一旦资源不够,还能快速扩容。这大大降低了企业使用数据库的门槛,减少企业在数据库部署等基础运维和管理上的人力投入。

其次,对数据库人员来说,不用关注最底层的运维问题,可以更靠近业务,关注数据处理等更有价值的问题。如此,不仅可以提升数据库人员的能力,而且能给企业带来更大的价值。

然后,云服务商将整个技术打包成服务,提供给所有用户,这让一些中小企业能像大企业一样使用相同的云原生数据库服务,享受技术带来的红利。此外,云原生数据库可以让企业应用系统更高效快捷地处理数据,充分发挥数据的价值。彭立勋解释道,“以前,中小企业可能没有那么多资源部署数据挖掘和分析。而现在采用 华为云云原生数据库后,它提供 HTAP 混合负载的能力。这样,中小企业也可以做一些轻量级的数据分析,挖掘数据中的价值,让企业更专注在业务创新上。”

目前,虽然云原生数据库很火,但是企业在采用过程中依然存在挑战。在彭立勋看来,很多企业从传统的商业数据库向云原生数据库迁移时,最大的挑战倒不是技术本身,而是很多的技术人员还是从传统数据库的角度出发,利用传统数据库的思维和积累的经验,来使用云原生数据库。

他强调,云原生数据库并非简单地把传统数据库搬到云上,它对数据库进行了全面重构,充分利用了云的能力,带来一些新优势。所以,如果还是按照传统数据库的使用习惯和思维模式,将无法发挥云原生数据库的优势,甚至可能会增加其使用成本。当然,对企业而言,是否采用云原生数据库,它需要根据具体业务进行判断。

从业务角度看,云原生数据库更适合偏互联网型的业务,诸如电商、社交、文娱、游戏、车联网等。偏互联网型的业务非常敏感,变化快,业务体量的弹性非常大。以游戏为例,一款游戏在突然火爆后,游戏公司需要在短时间内弹性扩展整个系统处理能力。而一款游戏进入收缩期后,需要快速收缩资源、节省成本。这类变化非常快的业务会对数据库的性能、弹性伸缩、快速部署等提出很高的要求,这恰恰是云原生数据库的优势所在。无论是什么样的企业,只要是偏这种类型的业务,都非常适合使用云原生数据库。

云原生数据库未来将如何发展

从星星之火到燎原之势,在数据库领域,云原生数据库蔚然成风,风起云涌之后的云原生数据库又将怎样演进、驶向何方?

在华为云看来,“以客户为中心,解决客户最关注的问题”是接下来云原生数据库发展演进的关键。基于此,华为云提出云原生数据库的三大发展方向:Serverless、Regionless 和 Modeless,这也成为 华为云云原生数据库 的发展指南

彭立勋说:“客户最关注的几个问题,一是资源调度,二是数据访问,三是使用体验。现在,越来越多的客户希望聚焦业务,聚焦于挖掘数据的价值,而非聚焦做一个具体的技术,因为对大部分有这种业务的企业来说,它并非一家做 IT 技术的企业,它关注的是自己所在领域的业务。所以,针对这几个方面,我们提出 Serverless、Regionless 和 Modeless 三大发展方向。”

具体说来,Serverless 要解决资源调度问题,实现资源的极致弹性。在遭遇故障、规格变更时,整个资源弹性调度速度可以从分钟级缩短到秒级,这样对用户来说,真正的无感知;Regionless 是解决用户的数据访问,数据库全域可用,业务可以在任意地方进行接入和访问,同时带来跨地域的高可用,用户只需关注业务的数据流动而不用担心业务的跨地域部署和访问;Modeless 要解决的是使用体验,一个统一入口能智能地处理各种类型的负载,不管是交易型、分析型、 NoSQL模型、 MySQL 模型,我们以统一入口,提供给用户,提升用户的易用性和效率。

当然,Serverless、Regionless 和 Modeless 的落地应用还需要更具体的技术支撑。Serverless 方向,华为云云原生数据库在三个能力上重点投入,分别是 ALT、AST、ATC。首先是通过 ALT 应用无损透明倒换框架(Application Lossless and Transparent)实现应用层对底层调度倒换的无感知,当用户进行主备切换、小版本升级或者规格变更时,系统可以打包用户的会话上下文状态,在达到安全的事务边界后,确保会话上下文状态被完整重放至目标节点并与原会话一一关联保证业务持续性,不受各种操作的影响。

其次是通过 AST 应用弹性透明调度框架(Application Scaling Transparent)满足根据负载智能调度实例的需求,AST 融合了一些 AI 的能力,能够根据客户负载情况生成模型预测,从而以更精确的方式,提前扩缩资源。

最后是通过 ATC 应用透明集群(Application Transparent Cluster)实现读写能力的横向透明扩展。

Regionless 方向,华为云云原生数据库会重点聚焦于全域分层式引擎、全域数据总线(Global Dataflow Bus )和全域一致性集群三个方面。彭立勋认为, Regionless 首先要实现的便是低成本跨越存储,不同的数据中心的存储成本是不一样的,从成本角度考虑,最合理的方式就是将客户不常用的或者对时间不敏感的资源,放到一些比较低成本的地域, 华为云云原生数据库的全域分层式引擎就是为了实现这个诉求;同时,要为所有的数据提供就近访问、跨域访问的数据分布,还需要有一个全域的数据总线(Global Dataflow Bus),它能让用户在不同的 Region 之间按需复制数据,接下来还将根据数据的访问频次更加智能地判断、精细化调度;此外,面向数据全球化的场景,华为云云原生数据库也在投入全域一致性集群方面的研发,利用类似全球转发的技术,去实现用户不管从全球哪里接入,所看到的数据都是一致的。

彭立勋称:“最终我们要达到的目的是通过 Regionless 实现全球数据多活、故障自动再倒换、本地数据就近访问、全域数据分层的低成本存储。”

Modeless 方向,一方面华为云云原生数据库充分利用软硬件结合的优势,去高效处理不同类型的查询,比如数据并行查询 NDPQ 技术;另一方面推出了 HTAP 混合负载查询能力,它能够为用户同时提供一个一致性的行存和列存,给用户提供两种数据模型,通过优化器的智能调度,就能判断用户到底是适合哪一种数据模型,然后再从相应的数据引擎中把数据抽出来,实现快速访问;除此之外,针对多种模型混合的业务,华为云云原生数据库正在规划多模一体化的模型处理与转换总线,最终实现一个接口满足所有模型。

写在最后

毫无疑问,云原生数据库逐渐成为数据库行业的“宠儿”。它的流行代表着云原生发展的深化,更反映出数字化转型背景下,企业对数据库的诉求和态度。技术的巨轮滚滚向前,条条大路的尽头,终归是用户的需求,核心都是帮助用户优先解决业务问题,从而走上业务发展的快车道。作为国内云原生数据库的代表之一,华为云云原生数据库的实践和探索正是基于华为云多年来对用户需求洞察的结果而展开的,如何真正做到以客户为中心,解决客户最关注的问题,是华为云数据库求索的方向,也是值得全行业去思考的话题,由此,将可能再一次迸发出改变世界的力量。

点击关注,第一时间了解华为云新鲜技术~

以上是关于husky的配置及前世今生的主要内容,如果未能解决你的问题,请参考以下文章

云计算的前世今生

并发进程的前世今生

SSO单点登录之前世今生

标记接口,注解和注解处理器的前世今生

标记接口,注解和注解处理器的前世今生

透视华为云云原生数据库的前世今生及未来演进,能给行业带来哪些启发?