在上一篇文章高性能API网关goku底层开发框架的设计与实现1(https://www.toutiao.com/article/7039998811200487943/)中,我们对其底层的eosc中间件开发框架的选举原理与进程管理进行了分析。(注意goku现在更名为apinto)本篇文章将给大家详细介绍下如何在本地调试Apinto,这个对于大家了解其实现与工作原理至关重要。
go 1.17以及以上(本文环境是go 1.19)
Goland(集成开发环境)
git clone https://github.com/eolinker/apinto.git
2.下载依赖
cd到项目目录下
go mod tidy
3.安装最新的gops
go install github.com/google/gops@latest
4.编辑Goland的Debug配置
5.运行程序
启动后,apinto会启动三个进程,分别是Master,Admin,Worker.其中各个节点的Master实现了raft协议,Admin是实现api的http服务。
通过下述命令,创建一个服务。
curl -X POST
'http://127.0.0.1:9400/api/service'
-H 'Content-Type:application/json'
-d '{
"name": "apintoapi",
"driver": "http",
"description": "访问官方示例接口",
"timeout": 3000,
"retry": 3,
"scheme": "https",
"nodes": ["demo.apinto.com:8280"],
"balance": "round-robin"
}'
返回结果
{
"create": "2022-06-16 11:00:45",
"description": "访问官方示例接口",
"driver": "http",
"id": "apintoapi@service",
"name": "apintoapi",
"profession": "service",
"retry": 3,
"scheme": "https",
"timeout": 3000,
"update": "2022-06-16 11:00:45",
"discovery": "",
"service": "",
"nodes": ["demo.apinto.com:8280"],
"balance": "round-robin",
"plugins": null
}
然后接下来我们通过postman调用服务接口,获取服务的基本信息,然后通过debug,查看他是如何工作的。
在弹出的进程列表中选择需要Debug的Admin进程即可
注意 : Debug模式开启后,master进程名称为“apinto start”,当Debug模式关闭,master进程名称为“apinto: master”
然后我们触发http请求,可以看到请求被apinto:admin进程截获了,然后通过pa.router分配给具体的控制权执行处理,而具体的处理Handler上图的oe.getEmployeeByName便是具体的处理核心。
func (oe *Workers) GetEmployee(profession, name string) (*WorkerInfo, error) {
id, ok := eosc.ToWorkerId(name, profession)
if !ok {
return nil, fmt.Errorf("%s %w", id, ErrorNotMatch)
}
d, has := oe.data.GetInfo(id)
if !has {
return nil, fmt.Errorf("%s %w", id, ErrorNotExist)
}
return d, nil
}
其中上述代码变获取了相应的服务信息
页面更新:2024-03-20
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号