Google分布式框架Weaver(三):测试与可观测性
上一次我们通过weaver中的组件完成了一个简易的商品后台系统,并对外提供http接口。 但是在实际开发中,除了业务逻辑的实现,少不了测试代码,也少不了可观测性(日志,指标,链路追踪)。
上一次我们通过weaver中的组件完成了一个简易的商品后台系统,并对外提供http接口。 但是在实际开发中,除了业务逻辑的实现,少不了测试代码,也少不了可观测性(日志,指标,链路追踪)。
组件是weaver中的一个核心抽象,在我们的应用中,组件是一组接口的实现,可以理解为微服务对外提供的API。 所以,组件是学习这个框架的第一步,接下来我将使用组件从零搭建一个简易的商品后台系统。
最近,Google开源了一个用于编写、部署和管理分布式应用程序的编程框架:Service Weaver。 这个框架设计思想很巧妙,使用该框架可以以函数调用的方式去调用其他服务,无需考虑任何网络或者序列化问题,在部署时却能够以微服务的方式运行。 这样一来,开发者可以在自己的机器上运行、测试和调试,非常的方便。
当应用程序面临高并发请求时,重复请求往往是一种常见的问题。针对这一问题,Go 语言中提供了 SingleFlight 库,它可以有效地解决并发请求中的重复请求问题,提升应用程序的性能和稳定性。在本文中,我们将介绍 SingleFlight 库的作用和价值,并详细讲解如何在 Go 语言中使用 SingleFlight 库来解决并发请求中的重复请求问题。同时,我们将探讨 SingleFlight 库的原理和实现,以及其在实际项目中的应用场景和注意事项。
在日常开发中,我们大多的精力都花在业务开发上,设计可能只占用了少部分的时间。 实际上,好的架构会让别人维护起来很舒服,很轻松。而不好的设计,会浪费你更多的时间,提高成本。 近些年来,整洁架构,领域驱动设计特别火,很多程序员也都用上了。 接下来,我将基于实际开发,介绍go使用整洁架构的例子。
上一节过后,我们已经完成了所有代码的生成工作,最后的任务就是将解析,生成的模块全部集成在一起,并对外提供命令行调用(cmd)。
上一节我们完成了对SQL的解析,得到了表的相关信息。根据这些信息,我们就可以确定表相对应的curd代码,生成代码我们使用go自带的标准包text/template。 下面将为大家介绍template,并使用template实现代码生成功能。
在上一节我们了解了go的抽象语法树AST,并利用go提供的AST包拿到了用户定义的sql。接下来就是如何解析sql,将sql语句中的表名,列字段的名称,类型等关键信息提取出来。 这就需要我们的语法分析了,在本项目中我们决定采用ANTLR来完成此任务,他是一个强大的工具,下文我将为大家介绍是如何实现的。
在上一篇文章中,介绍了我对这个项目的想法,总体设计与思路,而在项目中AST是一个很重要的模块,他主要负责输入的解析,还负责部分代码生成工作。 接下来,我将为大家介绍go中的抽象语法树,也会跟大家分享我是如何利用AST去实现功能的。
在平常业务开发中,我们经常会使用一些数据库框架,诸如gorm,sqlc,ent等等。 每当想新加一个表时,就会产生很多重复性的操作,例如插入数据,读取数据,删除之类。 这大大降低了开发效率,于是,我萌生了一个想法,想把这些操作都交给程序去实现。