Golang Go语言实现一个数据库中间件项目应该采用什么框架?
自身情况:熟练掌握其他语言,go 看了一下午现在勉强能写。
需求:实现一个类似数据库中间件,帮忙处理一些解协议、读取数据、归纳等等的请求。想了想感觉这种纯 IO+计算的任务,还是 Go 比 Java 更适合需求。项目定位不是特别企业化流程那种的,大概是需要实现微服务和容器化,但不需要大规模组织部署管理这样的。
想问下现在构建类似的项目主流依赖的环境都有哪些?有无老哥列一些关键字,让我搜索学习。感觉大概就是消息队列、网络通信、稍微有那么一丁点科学计算、日志、监控这几个主要环节吧。不想用特别新或者特备旧的框架。(后端是 RocksDB ,开源项目没查到比较满意的,想自己做一个实现)
Golang Go语言实现一个数据库中间件项目应该采用什么框架?
更多关于Golang Go语言实现一个数据库中间件项目应该采用什么框架?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Java 和 Go 的异构微服务我是用 Consul 做注册/配置,服务间通信用 grpc
更多关于Golang Go语言实现一个数据库中间件项目应该采用什么框架?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
表达能再清楚一点???
数据库中间件做什么用?兼容什么协议(mysql/postgresql/mssql 协议)?
可以参照 geth, 以太坊的 go 实现
写这种基础设施还要用框架吗,不是应该直接上手撸吗
挺清楚的吧,OP 写的类似中间件+RocksDB ,你这 mysql/pg/mssql 什么鬼
中间件不怎么用各种框架,都是想法设法减轻对第三方依赖的,这不是业务开发,中间件要想可控性强,就别用什么框架,一些通用的 bug 少的库可以用用
开发中间件是没有什么框架的,你可以参考其他开源中间件怎么实现的。一般都是 reactor 模式,在 go 语言里面套路都一样,accept 客户端连接,然后开个 goroutine 处理。推荐看看 nsq ,nats, rpcx 等开源项目。
看来你已经理解的很清楚了,中间件+RocksDB 。
那你能解释一下,这个中间件的主要功能是什么?
我记得这种中间件有人实现过,可以做数据库高可用的代理,做拆库的数据聚合,查询的性能优化。
帮忙处理一些解协议、读取数据、归纳等等的请求
-----------------------------------------------
感觉你这个纯业务,称不上中间件
大哥,中间件不去解析协议,那叫个毛中间件?
用什么中间件, 直接用 go 写一个开源数据库啊
我看了两遍没看明白 OP 想弄个啥,盲猜一个 envoy ?
感觉解协议、读取数据、连接池管理之类是 driver 做的事,而日志和监控需要自己封装 database/sql ,至于归纳和科学计算,虽然知道是什么意思,但结合你这个场景不知道是什么意思
做了你就知道 jdbc/odbc 的好了
database proxy???
ORM? gorm xorm???
在Golang(Go语言)中实现一个数据库中间件项目时,选择合适的框架至关重要。以下是一些推荐的框架及其优缺点,帮助你更好地决策:
-
GORM:
- 优点:GORM 是一个功能强大的 ORM(对象关系映射)框架,支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。它提供了简洁的 API 和丰富的功能,如链式操作、事务管理、自动迁移等。
- 缺点:对于复杂的查询,GORM 的性能可能不如原生 SQL。此外,它可能引入一些额外的复杂性,特别是在处理复杂数据结构时。
-
SQLBoiler:
- 优点:SQLBoiler 是一个从数据库架构生成 Go 代码的工具,它提供了类型安全的数据库操作。与 GORM 相比,SQLBoiler 更接近于底层数据库操作,因此性能更好。
- 缺点:需要手动编写一些查询逻辑,这可能会增加开发工作量。
-
Chi + SQLX:
- 优点:Chi 是一个轻量级的路由框架,非常适合构建 RESTful API。SQLX 是对标准库
database/sql
的扩展,提供了更方便的数据库操作方式。两者结合使用可以构建一个高性能、灵活的数据库中间件。 - 缺点:需要手动处理 SQL 查询和结果映射,这可能增加了出错的风险。
- 优点:Chi 是一个轻量级的路由框架,非常适合构建 RESTful API。SQLX 是对标准库
综上所述,选择哪个框架取决于你的具体需求,如性能、易用性、功能丰富程度等。对于大多数项目来说,GORM 是一个不错的选择,因为它提供了良好的平衡。然而,对于性能要求极高的项目,可能需要考虑使用 SQLBoiler 或 Chi + SQLX。