Golang Project: MySQL proxy helping with distributed transactions


It is a database proxy that aims to solve the distributed transaction problems during business development, which provides solutions for read && write splitting, database and table sharding. Through the mesh-based deployment method, DBPack shields complex basic logic, so that business development does not need to rely on a specific SDK, which simplifies the development process and improves development efficiency.

Go Application Features

  • support MYSQL protocol.
  • event-driven distributed transaction solution inspired by Kubernetes.
  • support read && write splitting, customized SQL route through Hint
  • support audit log, support SQL tracing.
  • sharding: support query on a sharded table, support order by, support limit.
  • sharding: support insert, delete, update on the sharded table
  • can be deployed as a sidecar so that any programming language can use it to handle the distributed transaction
  • more features on the road

Golang and MySQL Prerequisites

  • Go >= 1.17
  • MYSQL >= 5.7

Architecture

  • Listener:parse SQL protocol
  • Executor:forward SQL request to actual DB server
  • Filter:quota statistics, SQL interception, sensitive information encryption and decryption, etc
  • ConnectionFilter:handle SQL interception on the DB connection