高性能微服务网关Apinto的本地调试
背景
在上一篇文章高性能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
图1.下载依赖
3.安装最新的gopsgo install github.com/google/gops@latest
4.编辑Goland的Debug配置
图2 Goland应用启动配置
5.运行程序
图3 debug方式启动应用
启动后,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,查看他是如何工作的。
调用服务接口
通过Attach调试进程
在弹出的进程列表中选择需要Debug的Admin进程即可
选择具体的进程
注意 : Debug模式开启后,master进程名称为"apinto start",当Debug模式关闭,master进程名称为"apinto: master" 设置断点
在process-admin的process.go里面设置断点
在process-admin的openapi-worker.go里面设置断点
然后我们触发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 }
其中上述代码变获取了相应的服务信息
一周电商大事抖音联手顺丰试点抖音超市业务一周电商大事字节跳动抖音联手顺丰试点抖音超市业务据悉,抖音超市悄悄开启了招商。根据多位爆料商家描述,抖音超市业务仍还处在前期试点阶段,除了入驻后台链接外,平台方面目前仅提供了一份在
5人112分!摆什么烂,湖人不要面子的吗马刺137134战胜步行者,拿下了赛季第1胜。首胜来得比雷霆火箭都要早,文班亚马碎片1,坏了呀,马刺这是输在起跑线上了呀。就很想问问马刺的小伙子们,你们还记得你们的目标是什么吗!?
伊藤美诚不慌不忙晋级四强,等待她的会是噩梦吗?伊藤美诚与斯佐科斯打满五局,最终伊藤美诚决胜局险胜。这样伊藤美诚摇摇晃晃打进wtt澳门冠军赛女单四强。伊藤美诚先是击败了琳达,第二轮淘汰了木原美优,第三轮战胜了斯佐科斯。原本第三轮
宝宝几个月长牙才正常?你家宝宝落后了吗?宝宝们刚出生的时候是没有牙齿的,要等到一定的时间牙齿才会慢慢地长出来。但有的家长发现宝宝们长牙的时间好像都不太一样,究竟婴儿几个月长牙才正常呢?在宝宝长牙的时候该注意什么事情?01
拒绝爆冷,东部冠军3连胜!塔图姆轰408,状元24分,怀特27分北京时间10月23日上午700,NBA常规赛的较量正在如火如荼地进行之中,奥兰多魔术坐镇主场迎击波士顿凯尔特人。本场比赛之前,魔术队遭遇了两连败,作为一支年轻的队伍,短期内他们对于
如果你有女儿,请尽早让她拒绝这三件事,这很关键图源自网络侵权请联系删除有一种说法穷养儿,富养女。意思是男孩子,在培养的时候要尽量艰苦一些,培养他坚毅的性格,而对于女孩子,培养的时候要提供好一些的条件,以免她长大之后容易上当受骗
绍伊古电话警告英美等国,乌克兰可能使用脏弹编译观察者网李焕宇据美联社10月23日报道,俄罗斯国防部长绍伊古近期同美国英国法国土耳其国防部长通电话,警告他们乌克兰可能会使用脏弹。不过,英美两国防长无视了绍伊古的指控,称这是俄
如何评价ThinkBook1416的i9版本?在绝大部分人的使用中,其实这两款机型很难感觉到它们在性能上的差距。因为根据我们在实际的测试过程中,它们的单核性能与多核性能基本上分别为10左右的差距,这算是极限测试后的结果,实际使
孕期饮食禁忌,孕妈妈要注意喽一忌营养过剩一些孕妈妈片面地认为吃得越好,营养越丰富,对胎儿越有利。所以孕期对饮食采取多多益善,和见好就吃的态度,结果造成体重增加过快,容易产生巨大儿,不仅给分娩造成困难,也是孕妈
孩子个子矮怎么长高?提前收藏饮食方面给孩子制定科学合理的膳食营养谱,要多吃新鲜的优质蛋白,以及富含钙质的食物,同时要多吃新鲜的蔬菜和水果。含锌高食物在日常生活中,可以通过食物获取锌。常见的猪肉牛肉羊肉等动物肉
妈妈说让我们再试试有一个小女孩,生活在一个并不富裕的家庭。有一次,她和妈妈去菜市场。小女孩看到很多人围着一个摊位买豆芽,就问妈妈为什么豆芽卖得这么好?妈妈说因为这是整个菜市场唯一卖豆芽的摊位!小女孩