# He3Proxy **Repository Path**: he3db/he3proxy ## Basic Information - **Project Name**: He3Proxy - **Description**: He3Proxy是中移(苏州)软件技术有限公司基于PG协议专为He3DB打造的高性能数据库代理项目。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/he3db/he3proxy - **GVP Project**: No ## Statistics - **Stars**: 70 - **Forks**: 16 - **Created**: 2022-08-29 - **Last Updated**: 2024-07-25 ## Categories & Tags **Categories**: database-service **Tags**: 数据库中间件 ## README [comment]: <> "[![Build Status](https://travis-ci.org/flike/kingshard.svg?branch=master)](https://travis-ci.org/flike/kingshard)" [![LICENSE](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://gitee.com/he3db/he3proxy/blob/master/doc/License) [comment]: <> "[![Build Status](https://travis-ci.org/XiaoMi/Gaea.svg?branch=master)](https://travis-ci.org/XiaoMi/Gaea)" [![Go Report Card](https://goreportcard.com/badge/gitee.com/he3db/he3proxy)](https://goreportcard.com/report/gitee.com/he3db/he3proxy) # He3Proxy ## 简介 He3Proxy是中移(苏州)软件技术有限公司基于[PG协议](https://www.postgresql.org/docs/current/protocol.html) 专为[He3DB](https://gitee.com/he3db) 打造的高性能数据库代理项目,采用Go语言开发, He3Proxy为[He3DB](https://gitee.com/he3db) 提供读写分离、负载均衡、连接池管理、 读一致性等基础能力,让用户像使用单机一样使用[He3DB](https://gitee.com/he3db) 集群,并提升集群整体吞吐量、提高节点资源利用率, 同时兼具[He3DB](https://gitee.com/he3db) 集群管理功能,如集群监控、灰度升级、数据分层存储、动态扩缩容等,助力[He3DB](https://gitee.com/he3db) 实现serverless。 同时He3Proxy也兼容其他基于[PG协议](https://www.postgresql.org/docs/current/protocol.html) 的主从架构数据库,可作为其数据库中间件使用。 ## 架构图 ![架构图](./doc/pic/architecture.png) ## 集群部署图 ![集群部署图](./doc/pic/deployment.png) ## 功能介绍 - 支持PG协议连接。 - 支持SQL读写分离。 - 支持连接池管理,可复用已有后端数据库链接,减少建立链接时的性能损耗。 - 支持多个slave,slave之间通过权值进行负载均衡。 - 支持多个slave,slave之间通过节点负载情况进行负载均衡。 - 支持显式事务内先读操作的负载均衡。 - 支持强制读主库。 - 支持所有请求均主库执行。 - 支持配置proxy到后端数据库的最大连接数限制。 - 支持SQL黑名单机制。 - 支持通过配置hba文件,实现数据库安全访问权限控制。 - 支持热加载配置文件,动态修改He3Proxy配置项。 - 支持session读一致性,并根据节点负载情况进行负载均衡。 - 支持客户端链接维度的tracing数据采集(jaeger)。 ### 功能演示 ![功能演示](./doc/pic/functional_demonstration.gif) ## 安装部署 ``` 1. 安装Go语言环境(请使用最新版) 2. git clone https://gitee.com/he3db/he3proxy.git $GOPATH/src/gitee.com/he3db/he3proxy 3. cd $GOPATH/src/gitee.com/he3db/he3proxy 4. source ./dev.sh 5. make 6. 设置配置文件 7. 运行he3proxy ./bin/he3proxy -config=./etc/he3proxy.yaml -hba=./etc/hba.conf -log-level=info ``` **Goland打包Linux二进制文件配置可参考下图** ![Goland打包配置](./doc/pic/goland_pkg.png) ### 配置文件说明 [配置文件说明](./doc/He3Proxy/configure_description.md) ### 启动参数说明 ``` postgres@he3db:~/he3proxy$ ./bin/he3proxy -h __ __ _____ ____ / / / /__ |__ / / __ \_________ _ ____ __ / /_/ / _ \ /_ <______/ /_/ / ___/ __ \| |/_/ / / / / __ / __/__/ /_____/ ____/ / / /_/ /> "- [x] example" - [ ] 支持根据冷热数据分布情况进行读节点选择 - [ ] 整体性能调优,目标性能损耗15%以内 - [ ] 支持注册中心(优先etcd) - [ ] 支持性能监控,如SQL执行时长、节点负载等 - [ ] 支持对He3DB的管理功能,如节点扩缩容、故障切换等 - [ ] 支持He3DB集群灰度升级 - [ ] 支持流量管控,愿景DB订购参数不再是CPU、Mem、Disk而是所需的TPS、QPS - [ ] 支持Web页面管理中间件功能 ## He3Proxy用户列表 **注意: 当前为非release版本,不建议生产使用!** ## 社区 [项目地址](https://gitee.com/he3db/he3proxy) :https://gitee.com/he3db/he3proxy 欢迎加入[slack](https://dbspecialzone.slack.com/archives/C0403CV7TDY) 进行沟通交流~ 更多技术细节欢迎查阅[技术文章专栏](https://www.zhihu.com/column/c_1551505442693394432) ## License He3Proxy采用Apache 2.0协议,相关协议请参看[目录](./doc/License)