加菲猫帮助教程

加菲猫帮助文档

目录

[TOC]

说明

这是一个加菲猫(系统的别名)的简单的帮助文档, 目的是帮助快速了解和使用加菲猫系统

系统介绍

名词解释

  1. IRC: 加菲猫系统的管理控制中心, 管理所有的配置信息
  2. SHELL: 加菲猫系统的客户端(服务), 一台机器上只有一个SHELL
  3. SDK: 每种语言封装一个SDK, 要在程序中使用加菲猫系统, 使用SDK中的方法, 比如通过服务的别名调用这个服务的某个接口, SDK会帮助我们自动选择路径
  4. 服务: 搜索服务在这里是一个服务, 一个mysql是一个服务, 一个redis也是一个服务, 每个服务要使用唯一的服务名进行区分
  5. 机器: 机器在这里类似于一台计算机(用IP来区分), 特殊的如果是云主机(比如mysql云数据库,我们没法给那个机器安装我们的SHELL服务), 它也是一台机器, 用类型字段进行标记
  6. 节点: 节点就是关联服务机器, 一台服务可能会部署到多台机器, 而一个机器上会存在多个服务, 所以节点是中间表的概念
  7. 关系: 一个服务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
4
172.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
4
http://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
4
sdk-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
5
sdk-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
4
sdk-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. 导入

    1
    from jfm_sdk_py.sdk import JFM
  2. 生成对象

    1
    jfm = JFM()
  3. 使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if __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)

下载

最后提供本文档中涉及到的安装包:

  1. shell.zip
  2. test-server.zip
  3. sdk.zip(python版)
  4. sdk-test.zip(python版本)