# panda-ugn **Repository Path**: panda-foundation/panda-ugn ## Basic Information - **Project Name**: panda-ugn - **Description**: 基于Apinto的功能定制 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-08-10 - **Last Updated**: 2024-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Panda-UGN 基于[Apinto](https://github.com/eolinker/apinto) **本项目为定制项目,生产环境请使用Apinto** 【完】 ## 改进计划 * PGO优化: * https://go.dev/doc/pgo * https://juejin.cn/post/7204121228016959549 * 切片操作:sort改为slices,更快、更符合认知 * 代理 * http/https * tcp * 轻量级MQTT服务器 * 轻量级IM(消息通知) ## 开发文档 https://community.apinto.com/d/34082-debug-apinto *注意* : Debug模式开启后,master进程名称为“apinto start”,当Debug模式关闭,master进程名称为“apinto: master” ```shell # 使用goland macos m1 # 安装最新的gops go install命令主要用于安装Go代码,将Go源码编译成二进制可执行文件,并将其安装到$GOPATH/bin或$GOBIN目录下 go install github.com/google/gops@latest # git clone https://gitee.com/panda-foundation/panda-ugn.git # 如果运行不起来 chmod 777 tmp ``` ```shell # 添加SLL证书 # 参考https://help.apinto.com/docs/apinto/certificate/server.html#%E9%85%8D%E7%BD%AE%E7%A4%BA%E4%BE%8B # 需要base64 # demo.mbu.ltd curl -X POST \ 'http://127.0.0.1:9400/api/certificate' \ -H 'Content-Type:application/json' \ -d '{ "name": "demo_certificate", "driver": "server", "description": "示例证书", "key":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUUNSdWIvOW8yTlVTTFVmCnNNTlhNN0E1N0Zmc3F1aWNqTlhrTWFMYWJ0ajlibGhORzlmVU9ONmMrOXhtUkZjcTFTVXVNOXFJaEdTOVh5MDcKMFY0cVRYYUVCNGE2bE8yTHVZc3BjalpWRjdNdjZHcGFpWE45a293ZXArcXVyUWpiWmVtb1hIdkRqKzZBVTlURApNMVcxaXdIK0hTT1R3SkJEekpRaFFhcU9qSmJhTFhHK09NRFJBQWNLY2RUcEFMQmVRQkRzaU9NbXdZUU1vR0sxCjRCd1Y2YXd0em9pd1JqNDBwMXg3WCtNamJ4WlhyV2QrSnFkUFZBdjFVYkpCbndkdWhGOUw2WmNhMHBVUmFiSGIKdFJuWXRYSDF2WC9yOU5MR2lyYkpwaEEreFZsMVV0dEljMnRvZWg0bWw0aTJ6YWFnVlhQR1h0Zk5WQ2RLSVlPZApEUXJuTk8rdkFnTUJBQUVDZ2dFQUQ2dGdpSjUwQk5FWW9NSzZEbnRoWEtrY1B6ZVZjWmYzTytWV2RKUnN3cnVGCnhTelVSVjZrR1U4L3dNTmllQm1aT09HY2d3ZHhhYWQ5VHF4UnFzelBqSnpla051SXUzaUZEVHpadU1hbW51VW4KNG5wYkw4cDlSS0ticXBLeW5CeldSaU5EcjZDZmJhOFY5ck5qYVBUOGp0MkZRTkw0OEVGa1FEczJZc09kU1BKbQpjZWoxcXJxRENtYkhUNkh0eFBtbDRQU09QWFV1aG9UWUVqaURoVUxIcFRVYXdLTzZVK0x6aGREVzBtTXQ4U3Y4Clg4M0hhdnZVOEcycDczOXN3UVRaUG50bmNwaHI0ZytwK1ZUeXlwL0RKVkNaUnZyL2wwUE1kbXhRN2tUdmZyTVYKZDc4ZjViTldKU3Q1Y0NFbmRwWHNrY05YMUtmQnV5czdJaTBPaUVMcFVRS0JnUURJMUNISldiMWVveVA4MXZOVwp6VGN0T3ZwWms4RG5XanBYK2o0QUE3RUwzcjIyeDJOaW9zZkFrbGlqd1Fsb0FJLzdCU1MrY1orekE5Z2dONFhrCkJJbjc5Nk5VK0tPMVY2UnZGL2Q2Zm9UOTU3UlJVdEhmL0tuVWdNTVJGYlM5TC9RNEJyTkFjODlTMysyNTljYXUKM3VScVF1V2lLaEQ3OU52bmlpL1VVaHZueVFLQmdRQzV3bFVzdTdzemJwekxUZnZjbW5iM2xFTFM0ZmFNeTluTAoyUUErWDE2emF1YlRxYWlwaGtaZFhOMFZvc1QrRVFGbE52NnJIaTAvaW5ibnhEb3Y3a3dkaURNQjNzT1UxazNaCjJkU21UbTkwSCtzVTBpa2p2NTYwZ1FWUU9OOUpScDYvN09lRi83UEZ4YTJabGIxWXduSFVxeHduTnoxRktpY00KRjh3NDkrM0h0d0tCZ1FDYTBIVHZQQit3aWNEZlUzQ285Ry9aalVLYXRUMGEyOEpvT2I5NzBWeTFVdE1heU9BRApsSXE2RjliKy9YdGIwanNyL2c0U1JaTWZ0Qkh5Mi9wNkNVbTVsSEF6dTZ5dnljMDMydGpyZEFiZm1MTzNrVW03CkNwSjgvM25nZk1Ra3A0ZnpmSzdJTzc2U0c0K3VNQm9taWlxNUE3THo3TXZFLzBCYVlIdDRpSWQ4aVFLQmdIVmoKS0Q0dm1IcEZFVktzd2xmRFNTRGxrV0VBcUxTSzhlU1BDa2RnTDFGRVlnQXFPOHA5YnlQNjFqK2c3OG42Wng1VwpKWk52YTNxMi9yTXgzdStCTUpxTkFtYlJKbGw5SUE5bVI2cWM4SE82NCt6eGJrd0lBTHZpdUwvY1lNWkdtWFdCCnVVR0Z1RTVud0cvSkg3SGlsdHFsRXhKNUp2LzVSbG12QkVDUDlMUjdBb0dBYnVoY0lzc3BGTWEzZVRLeDV1UUEKdlZVaXlUbndXWXJGcVBsa216Q3R4ME5RVVBJUEM0ZnMvbWtaR05XQnJEWXlPVXJNZ0RzSkxoQi9BcjY4T0pGUgpVcHJDaUZqQTVDYVBMR1Q1MzByNTIwbllzNEhvdGdKbFdHaGxua05nbThDc01QMkJZY2ZDR2F6bWpYaEJaWFZSCjVZaEZvdlV4bFNwcU5EWENKOUZSZW1BPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", "pem": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lFRnV6M1Z6QU5CZ2txaGtpRzl3MEJBUXNGQURDQmlqRVNNQkFHQTFVRUF3d0oKYkdSa1oyOHVibVYwTVF3d0NnWURWUVFMREFOa1pYWXhEakFNQmdOVkJBb01CV3hrWkdkdk1Rc3dDUVlEVlFRRwpFd0pEVGpFak1DRUdDU3FHU0liM0RRRUpBUllVYkdWamFHVnVaMkZrYldsdVFERXlOaTVqYjIweEVUQVBCZ05WCkJBY01DSE5vWVc1bmFHRnBNUkV3RHdZRFZRUUlEQWh6YUdGdVoyaGhhVEFlRncweU16RXlNRGN3TXpRd01qQmEKRncweU5URXlNRFl3TXpRd01qQmFNQmN4RlRBVEJnTlZCQU1NREdSbGJXOHViV0oxTG14MFpEQ0NBU0l3RFFZSgpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFKRzV2LzJqWTFSSXRSK3d3MWN6c0Ruc1YreXE2SnlNCjFlUXhvdHB1MlAxdVdFMGIxOVE0M3B6NzNHWkVWeXJWSlM0ejJvaUVaTDFmTFR2UlhpcE5kb1FIaHJxVTdZdTUKaXlseU5sVVhzeS9vYWxxSmMzMlNqQjZuNnE2dENOdGw2YWhjZThPUDdvQlQxTU16VmJXTEFmNGRJNVBBa0VQTQpsQ0ZCcW82TWx0b3RjYjQ0d05FQUJ3cHgxT2tBc0Y1QUVPeUk0eWJCaEF5Z1lyWGdIQlhwckMzT2lMQkdQalNuClhIdGY0eU52RmxldFozNG1wMDlVQy9WUnNrR2ZCMjZFWDB2cGx4clNsUkZwc2R1MUdkaTFjZlc5Zit2MDBzYUsKdHNtbUVEN0ZXWFZTMjBoemEyaDZIaWFYaUxiTnBxQlZjOFplMTgxVUowb2hnNTBOQ3VjMDc2OENBd0VBQVRBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFKcmNHUXJCVFRHU1JDcDZpMWxiYWNwWXBtMktGejcranJ5cHU1V0FVCnVhcDZETTJiWmdYY3U1RWJnUm5kQ3JFVXU5NnJLZVZPVVI2QUwrWEE2dEdGRFIyS0FGNU80ZHo1RGpRUkZNRFMKWTlZTXdwWU4rSFZwSlorYTZnTjVyYUJNbi9meEpTeXNRMlBMYnJWOFgyZnZ6elYxRGZleXRGaG9qSEhndzU3NQpJWXRKQko5d2tPbmlRR2pJdHQrQ3ZGeGRmQ3ZoUmZOZWJ0bVZvbjJUbUNRNUxKbUNuUFRZOEZSbm9xbEVGU1dZCmJVV1VWTjFRODlhY3BhT1JrRDQyUjZLZlpxYUR4K0VSdWVQRHNpZWRZbzdIRFVuL0RSMTdGSDJrUEo1d09xTU4KWXZ5SDVKb21wSU5GanZxemVnR2kydU53VVIzeUtIanp5SEJiZGl5NG5VditqQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" }' ``` ## 功能架构图: img_v2_22590d84-f8a4-4d3a-9c67-b481ecfdf1fg ![](http://data.eolinker.com/course/Cdkvdtkdcc50a65d3e5b068bae658c343d7b6a188730218.png) ![](http://data.eolinker.com/course/zqIaYaa0ac1273511504a4bad96e0e78de56e8e12850677.png) ### 产品特性 | 功能 | 描述 | | ------------ | ------------------------------------------------------------ | | 集群 | 集群不限制网关节点,自由剔除或加入网关节点,主从网关节点具备无缝切换功能,提升网关高可用性 | | 动态路由 | 可通过设置location、query、header、host、method等参数匹配对应的服务 | | 服务发现 | 支持对接Eureka、Nacos、Consul | | 负载均衡 | 支持轮询权重算法 | | 用户鉴权 | 匿名、Basic、Apikey、JWT、AK/SK认证 | | SSL证书 | 管理多个证书 | | 访问域名 | 可为网关设置访问域名 | | 健康检查 | 支持对负载的节点进行健康检查,确保服务健壮性 | | 协议 | HTTP/HTTPS、Webservice、Restful、gRPC、Dubbo2、SOAP | | 插件化 | 流程插件化,按需加载所需模块 | | OPEN API | 支持使用open api配置网关 | | 日志 | 提供节点的运行日志,可根据日志设置的等级输出 | | 多种日志输出 | 可将节点的请求日志输出到不同的日志接收器,如file、nsq、kafka等 | | Cli命令支持 | 通过Cli命令操控网关,插件安装、下载和网关的开启、关闭等操作均可使用一键命令操控 | | 黑白名单 | 支持多维度筛选流量,设置黑白名单IP,拦截非法IP | | 访问策略 | 支持多维度筛选流量,可针对应用、IP、应用与IP、应用与API、应用与上游等多维组合设置黑白名单 | | 流量策略 | 支持多维度筛选流量,控制应用、应用与API、应用与上游之间的请求次数和请求报文大小限制 | | 熔断策略 | 支持多维度筛选流量,熔断上游或API | | 灰度策略 | 支持多维度筛选流量,按百分比或高级规则灰度流量到目标节点 | | 缓存策略 | 支持多维度筛选流量,缓存API响应内容 | | 参数映射 | 将客户端的请求参数映射到转发请求中,可按需改变参数的位置及名称 | | 额外参数 | 转发请求时,额外加上后端验证参数,如apikey等 | | 转发重写 | 支持对 `scheme`、`uri`、`host` 的重写,同时支持对转发请求的请求头部header的值进行新增或者删除 | | 流量镜像 | 线上流量或请求内容进行拷贝到镜像服务中 | | MOCK | 模拟web服务器端API的响应 | | CORS | 支持api请求跨域 | | 同步API | 提供OpenAPI同步API文档,支持swagger3.0 json或yaml格式文件 |