加菲猫帮助文档
目录
[TOC]
说明
这是一个加菲猫(系统的别名)的简单的帮助文档, 目的是帮助快速了解和使用加菲猫系统
系统介绍
名词解释
- IRC: 加菲猫系统的管理控制中心, 管理所有的配置信息
- SHELL: 加菲猫系统的客户端(服务), 一台机器上只有一个SHELL
- SDK: 每种语言封装一个SDK, 要在程序中使用加菲猫系统, 使用SDK中的方法, 比如通过服务的别名调用这个服务的某个接口, SDK会帮助我们自动选择路径
- 服务: 搜索服务在这里是一个服务, 一个mysql是一个服务, 一个redis也是一个服务, 每个服务要使用唯一的服务名进行区分
- 机器: 机器在这里类似于一台计算机(用IP来区分), 特殊的如果是云主机(比如mysql云数据库,我们没法给那个机器安装我们的SHELL服务), 它也是一台机器, 用类型字段进行标记
- 节点: 节点就是关联服务和机器, 一台服务可能会部署到多台机器, 而一个机器上会存在多个服务, 所以节点是中间表的概念
- 关系: 一个服务A要使用另一个服务B, 就需要对这两个服务进行关联,slave服务就是服务A, 服务B就是master服务
流程
1
2
3
4
5
6
7
8
9
10如果服务A要使用服务B, 流程如下:
1. 首先给服务A和服务B所在的机器安装SHELL服务(go语言编写)并启动
2. 在加菲猫前端依次添加:
a. 机器: 服务A所在机器, 服务B所在机器
b. 服务: 服务A, 服务B
c. 节点: 服务A和所在机器的关联(节点), 服务B和躲在机器的关联(节点)
d. 关系: 服务A关联服务B
3. 在前端所做的操作(配置信息)都会下发到服务A和服务B所在的机器中去(以xml的形式存储在本地文件中)
4. 在服务A的程序中使用对应语言的SDK(后期完善各种语言的SDK, 当前只有python版本)
5. 查看日志报表(在加菲猫前端)
案例演示
现在以一个虚拟的项目模拟整个加菲猫的流程
开发机:1
2
3
4172.16.17.118
172.16.17.119
172.16.17.99
172.16.10.123
安装shell
首先分别在四台开发机上运行shell服务, shell服务由go
语言编写, 下载已经编译的安装包shell.zip, 解压后进入shell文件夹运行./service-proxy
, 我们可以在加菲猫机器列表中看到已经添加的机器(shell启动自动上报自己的机器信息给IRC)
安装测试服务
在上面的四台开发机上安装一个测试服务器test-server, 这个服务提供四个get
请求方式的接口:1
2
3
4http://localhost:1203/left?delay=100
http://localhost:1203/right?delay=100
http://localhost:1203/up?delay=100
http://localhost:1203/down?delay=100
delay
参数表示延迟多少返回, 单位是ms, 该服务同样由go
语言编写, 下载解压后进入test-server
目录后, 运行./api-for-shell-test
即可
注册服务
注册master服务
在四台开发上安装了测试服务
之后, 需要再加菲猫系统中对这四个服务进行注册, 需要给每个服务起一个别名(必须是唯一的)1
2
3
4sdk-test-server-1
sdk-test-server-2
sdk-test-server-3
sdk-test-server-4
注册slave服务
这里只添加一个slave服务作为简单的测试1
sdk-test-client-1
添加节点(给服务关联机器)
这里每个服务只关联一个节点, 你也可以关联多个1
2
3
4
5sdk-test-server-1 => 172.16.17.99
sdk-test-server-2 => 172.16.17.118
sdk-test-server-3 => 172.16.17.119
sdk-test-server-4 => 172.16.10.123
sdk-test-client-1 => 172.16.17.99
添加关系
这里一个slave服务
关联是个master服务
1
2
3
4sdk-test-client-1 => sdk-test-server-1
sdk-test-client-1 => sdk-test-server-2
sdk-test-client-1 => sdk-test-server-3
sdk-test-client-1 => sdk-test-server-4
查看结构图
根据我们前面的配置, 可以在 结构图管理
界面中查看服务的关联关系, 模糊输入要查看的服务, 选中后会在页面显示这个服务关联的所有服务(slave
服务和master
服务)
使用SDK
首先我们看一下SDK的路径选择图
获取python
版本的sdk.zip, 解压放到自己的工程目录下
导入
1
from jfm_sdk_py.sdk import JFM
生成对象
1
jfm = JFM()
使用
1
2
3
4
5
6
7
8
9
10
11if __name__ == '__main__':
slave = 'sdk-test-client-1' # slave服务的名称
master = 'sdk-test-server-1' # master服务的名称
path = 'left' # 请求接口的path
param = { # 请求参数
"delay": 4000
}
print jfm.route_auto(slave, master1, path1, param) # 使用sdk自动选择路径(一般使用这个)
print jfm.route_proxy(slave, master1, path1, param) # 指定使用shell的代理的方式(路径1)
print jfm.route_info(slave, master1, path1, param) # 指定使用shell的info方式(路径2)
print jfm.route_direct(slave, master1, path1, param) # 指定直接使用真实的接口(路径3)
查看报表
加菲猫系统所有的日志都会存储到ELK系统, 我们使用kibana对日志进行了报表展示, 主要分成两块: IRC日志和SHELL日志
查看IRC报表
点击主页的报表(Kibana报表-加菲猫IRC)
查看SHELL报表
点击主页的报表(Kibana报表-加菲猫SHELL)
下载
最后提供本文档中涉及到的安装包: