储天行

善于解决生产中遇到的问题,

偏爱设计开发优雅的程序结构,

习惯于用自动化技术简化研发过程,

自我肯定于在服务7*24无故障运行和团队高效协作。

chutianxing@hotmail.com

https://tech.memorz.com

个人优势

自2002年毕业以来,我持续投身于Java系统的设计和开发工作,累积了20年的丰富经验。在这段时间中,我在一家初创公司服务了16年,期间主导设计并开发了一款创新的分布式应用开发框架(Distributed Application Framework),该框架在过去10年中成功应用于生产环境。它在团队职责分配、降低开发门槛、规范代码编写、提升工作效率、定位故障与瓶颈、以及保证系统无故障运行方面均展现出色的性能。此外,我还积极涉猎服务部署、数据库运维、需求与产品设计等领域,横跨从前端(使用Thymeleaf)到后端的全栈开发,并在从客户端(Android)到服务器端的多方位工作中积累了宝贵经验。

关于DAF

它是我设计开发的一个分布式应用开发和运行框架,具备负载均衡、远程配置、调用栈Tracking、模块维度和接口维度调用频度和响应时间分析、 Host维度硬件信息收集、外部接口网关等功能和特性。已通过十年的生产环境验证,并在生产中不断升级进化。

运行时

runtime

调用栈


code: "NA"
responseTimeStack {
  ngLabel: "SafeboxNG"
  ngVersion: "0.0.1"
  ip: "10.140.0.5"
  port: 8000
  action: "DecryptCipher"
  actVersion: "0.0.1"
  time: 829
  children {
    ngLabel: "EncrypterNG"
    ngVersion: "0.0.1"
    ip: "10.140.0.5"
    port: 8004
    action: "Decrypt"
    actVersion: "0.0.1"
    time: 811
  }
}
body {
  type_url: "type.googleapis.com/DecryptCipherResponse"
  value: "hello world"
}

获取配置和节点状态统计

get_config

一个节点组统计数据示例

nodeGroups {
  ngLabel: "EncrypterNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.5"
    port: 8003
    ngLabel: "EncrypterNG"
    ngVersion: "0.0.1"
    recordTime: 1657681211312
    nodeStatus {
      collectTime: 1657681211312
      nodeStatus: ON
      interfaceStatus {
        action: "Decrypt"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "Encrypt"
        actVersion: "0.0.1"
      }
    }
    pid: "29699"
  }
}
nodeGroups {
  ngLabel: "BawsNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: 8002
    ngLabel: "BawsNG"
    ngVersion: "0.0.1"
    recordTime: 1657681214189
    nodeStatus {
      collectTime: 1657681214189
      nodeStatus: READY
    }
    pid: "19754"
  }
}
nodeGroups {
  ngLabel: "TransactionPullNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: 8008
    ngLabel: "TransactionPullNG"
    ngVersion: "0.0.1"
    recordTime: 1657681216397
    nodeStatus {
      collectTime: 1657681216397
      nodeStatus: ON
      interfaceStatus {
        action: "PullLosData"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "PullCandleData"
        actVersion: "0.0.1"
        avaiCostsPerMin: 2
        avaiHitsPerMin: 114
      }
      interfaceStatus {
        action: "PullOrder"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "PullExcCurrencyData"
        actVersion: "0.0.1"
        avaiHitsPerMin: 6
      }
    }
    pid: "4807"
  }
}
nodeGroups {
  ngLabel: "AssetAdminNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.2"
    port: 8001
    ngLabel: "AssetAdminNG"
    ngVersion: "0.0.1"
    recordTime: 1657681211031
    nodeStatus {
      collectTime: 1657681211031
      nodeStatus: ON
      interfaceStatus {
        action: "NewIssueTask"
        actVersion: "0.0.1"
      }
    }
    pid: "18006"
  }
}
nodeGroups {
  ngLabel: "SafeboxNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.5"
    port: 8002
    ngLabel: "SafeboxNG"
    ngVersion: "0.0.1"
    recordTime: 1657681212709
    nodeStatus {
      collectTime: 1657681212709
      nodeStatus: ON
      interfaceStatus {
        action: "CipherAck"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "DecryptCipher"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "GetUser"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "GetCipher"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "SendCode"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "SaveData"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "ClearCipher"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "FaceRecognize"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "VerifyCode"
        actVersion: "0.0.1"
      }
    }
    pid: "3906"
  }
}
nodeGroups {
  ngLabel: "SmsNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: 8001
    ngLabel: "SmsNG"
    ngVersion: "0.0.1"
    recordTime: 1657681214953
    nodeStatus {
      collectTime: 1657681214953
      nodeStatus: ON
      interfaceStatus {
        action: "SendConfirmCodeToUser"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "SendSmsToUser"
        actVersion: "0.0.1"
      }
    }
    pid: "9484"
  }
}
nodeGroups {
  ngLabel: "NoticeTgNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: 8004
    ngLabel: "NoticeTgNG"
    ngVersion: "0.0.1"
    recordTime: 1657681208149
    nodeStatus {
      collectTime: 1657681208149
      nodeStatus: ON
      interfaceStatus {
        action: "SendMessage"
        actVersion: "0.0.1"
      }
    }
    pid: "9917"
  }
}
nodeGroups {
  ngLabel: "ADMIN"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: 8000
    ngLabel: "ADMIN"
    ngVersion: "0.0.1"
    recordTime: 1657681211699
    nodeStatus {
      collectTime: 1657681211699
      nodeStatus: ON
      interfaceStatus {
        action: "getcfg"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "getport"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "whereis"
        actVersion: "0.0.1"
        avaiHitsPerMin: 156
      }
      interfaceStatus {
        action: "ping"
        actVersion: "0.0.1"
        avaiHitsPerMin: 84
      }
    }
    pid: "30149"
  }
}
nodeGroups {
  ngLabel: "RobotNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.2"
    port: 8000
    ngLabel: "RobotNG"
    ngVersion: "0.0.1"
    recordTime: 1657681209355
    nodeStatus {
      collectTime: 1657681209355
      nodeStatus: ON
      interfaceStatus {
        action: "QueryDnhRecord"
        actVersion: "0.0.1"
        avaiCostsPerMin: 12
        avaiHitsPerMin: 6
      }
      interfaceStatus {
        action: "MarketData"
        actVersion: "0.0.1"
        avaiHitsPerMin: 57336
      }
    }
    pid: "27885"
  }
}
nodeGroups {
  ngLabel: "ChartsNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.2"
    port: 8004
    ngLabel: "ChartsNG"
    ngVersion: "0.0.1"
    recordTime: 1657681208659
    nodeStatus {
      collectTime: 1657681208659
      nodeStatus: ON
      interfaceStatus {
        action: "PetLosList"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "MarketDataRec"
        actVersion: "0.0.1"
        avaiHitsPerMin: 52314
      }
      interfaceStatus {
        action: "CandleList"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "ExcCurrencyRec"
        actVersion: "0.0.1"
        avaiCostsPerMin: 3
        avaiHitsPerMin: 36
      }
      interfaceStatus {
        action: "SubscribeCharts"
        actVersion: "0.0.1"
      }
    }
    pid: "26285"
  }
}
nodeGroups {
  ngLabel: "TransAgentNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.2"
    port: 8009
    ngLabel: "TransAgentNG"
    ngVersion: "0.0.1"
    recordTime: 1657681214709
    nodeStatus {
      collectTime: 1657681214708
      nodeStatus: ON
      interfaceStatus {
        action: "NewTransaction"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "QueryNeedSignTransaction"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "QueryTransaction"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "SignTransaction"
        actVersion: "0.0.1"
      }
    }
    pid: "19128"
  }
}
nodeGroups {
  ngLabel: "KeyStoreNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.5"
    port: 8007
    ngLabel: "KeyStoreNG"
    ngVersion: "0.0.1"
    recordTime: 1657681210971
    nodeStatus {
      collectTime: 1657681210971
      nodeStatus: ON
      interfaceStatus {
        action: "SysPreSetSymmetricKey"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "GetAccountIdByCode"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "GetSignature"
        actVersion: "0.0.1"
        avaiHitsPerMin: 12
      }
      interfaceStatus {
        action: "SysSetSymmetricKey"
        actVersion: "0.0.1"
      }
    }
    pid: "1473"
  }
}
nodeGroups {
  ngLabel: "IbConnectorNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.5"
    port: 8001
    ngLabel: "IbConnectorNG"
    ngVersion: "0.0.1"
    recordTime: 1657681207934
    nodeStatus {
      collectTime: 1657681207933
      nodeStatus: ON
      interfaceStatus {
        action: "OrderStatus"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "MarketData"
        actVersion: "0.0.1"
        avaiHitsPerMin: 222
      }
      interfaceStatus {
        action: "SubscribeData"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "GetOrder"
        actVersion: "0.0.1"
      }
      interfaceStatus {
        action: "IsMarketOpen"
        actVersion: "0.0.1"
        avaiHitsPerMin: 6
      }
      interfaceStatus {
        action: "OpenOrder"
        actVersion: "0.0.1"
      }
    }
    pid: "24031"
  }
}
nodeGroups {
  ngLabel: "HttpProxyNG"
  ngVersion: "0.0.1"
  nodes {
    ip: "10.140.0.4"
    port: -1
    ngLabel: "HttpProxyNG"
    ngVersion: "0.0.1"
    recordTime: 1657681216374
    nodeStatus {
      collectTime: 1657681216374
      nodeStatus: READY
    }
    pid: "23553"
  }
}
}

接口定义

node_encrypter.xml

...
<xwork>
    <include file="xwork-default.xml"/>

    <package name="Encrypt" namespace="Encrypt">
        <action name="0.0.1" class="org.barsf.encrypter.action.EncryptAction">
        </action>
    </package>

    <package name="Decrypt" namespace="Decrypt">
        <action name="0.0.1" class="org.barsf.encrypter.action.DecryptAction">
        </action>
    </package>
</xwork>

encrypter_cm_core.proto

...
// 加密
message EncryptRequest {
    bytes data = 1; // 明文
    bytes key = 2; // 密钥
}
message EncryptResponse {
    bytes encryptedData = 1; // 加密后的密文
}

// 解密
message DecryptRequest {
    bytes encryptedData = 1; // 密文
    bytes key = 2; // 密钥
}
message DecryptResponse{
    bytes data = 1; // 解密后的明文
}

工作经历 博大正方 | 九城集团 | 蓬天 | 大头无线 | 爱锋乐 | 中谷金科

中谷金科 服务器端研发负责人 2011.10-2023.09

小金理财

大头无线 服务器端研发总监 2005.09-2010.11

收集大头

其他

时间区间可能不准确

由于我自己的失误,导致之前的求职简历文档丢失,以往相对短期的工作经历时间段已经模糊,下面列举的时间段不准确可能与真实情况有月级别的误差,但工作单位和内容无误。

杭州爱锋乐网络技术有限公司
2011.01-2011.10 研发工程师 设计开发群聊软件"群群"消息投递系统。
蓬天信息系统有限公司
2004.09-2005.09 研发工程师 外派新华社开发新华社稿件审核和内容管理平台。
九城网络技术集团有限公司
2003.03-2004.03 研发工程师 参与开发海关监控系统,维护海关通关报文接收系统。
北京博大正方软件技术有限公司
2002.09-2003.03 研发工程师 参与开发企业内部使用的OA平台。

教育经历

北京工业大学
1998.09-2002.06 电子信息工程 本科 2001年获院系二等奖学金
北京六中
1992.09-1998.06
北京大翔凤小学
1990.09-1992.06
洛阳广文路小学
1988.09-1990.06
洛阳青岛路小学
1986.09-1988.06