一:最终目标
实现类似Nginx的代理和反向代理服务器。支持多种约定好的有应用层协议调用,然后将所有调用统一转化为Http调用,负载均衡后调用服务端。
二:概要设计
客户端请求响应过程:多个goroutine分别监听不同端口,接到请求后开启协程调用对应的应用层协议的server进行转换,调用数据库得到服务列表,使用负载均衡选择服务器调用后将响应转化为对应的应用层协议响应,返回结果
服务端注册:设定注册持续时长,调用时发送服务名,选择的负载均衡策略,更新数据库中的注册时间,选择服务时只选择在一段时间内保持注册的服务器。(可关闭心跳保活改为调用保活,连续若干次调用失败则关闭该服务)
三:目录结构
server:应用层协议处理
httpclient:调用服务得到响应
conf:默认配置
const:全局变量,错误码等
model:调用数据库
balance:负载均衡策略
init:初始化
register:服务注册
main:主程序
四:流程图
主流程
五:接口文档
1.balance
getserver
入参列表
| 类型 | 名称 | 描述 |
|---|---|---|
| []register | list | 数据中获取的服务列表 |
| 出参列表 |
| 类型 | 名称 | 描述 |
|---|---|---|
| int | num | 选择的服务序号 |