高性能微服务网关Apinto的本地调试

背景

在上一篇文章高性能API网关goku底层开发框架的设计与实现1(https://www.toutiao.com/article/7039998811200487943/)中,我们对其底层的eosc中间件开发框架的选举原理与进程管理进行了分析。(注意goku现在更名为apinto)本篇文章将给大家详细介绍下如何在本地调试Apinto,这个对于大家了解其实现与工作原理至关重要。

准备环境

go 1.17以及以上(本文环境是go 1.19)

Goland(集成开发环境)

代码与配置

  1. 克隆代码到本地

git clone https://github.com/eolinker/apinto.git

2.下载依赖

cd到项目目录下

go mod tidy


图1.下载依赖

3.安装最新的gops

go 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
}

其中上述代码变获取了相应的服务信息

展开阅读全文

页面更新:2024-03-20

标签:断点   网关   示例   底层   框架   进程   接口   核心   模式   代码   环境

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top