思维导图
texus
  分支主题 1
  分支主题 2
  分支主题 3
  分支主题 4
  main
  LoopRestTicker
  GetAllTickerInfo()
  redis.Publish(chnl, ticker)
  loop
  cr.WriteLogChan <- &wg
  LoopAllCoinsList
  loop
  cr.RedisCli.LPush("restQueue", js)
  LoopSaveCandle
  loop
  restQ.Save(cr)
  SaveCandle()
  rsp, err := cr.v5PublicInvoke(link)
  candle.SetToKey(core)
  redis.Set(keyName, dt, extt).Result()
  core.SaveUniKey(cl.Period, keyName, extt, tsi, cl)
  core.WriteLogChan <- &wg
    消费这个队列的消费者会写日志到elasticSearch
  if 唯一
    core.SaveToSortSet(period, keyName, extt, tsi)
      SaveToSortSet很重要，后面要用它来计算MA，但是作为texus，需要考虑要不要在本地计算MA
      但是这里只往sortedSet里推数据，没有做数据过期的逻辑，再sardine里有通过GetLastCandleListOfCoin触发的过期:GetRangeCandleSortedSet()，所以如果texus只是一个发布者的话，其实没必要做这个
  loop
  core.AddToGeneralCandleChnl(&candle, arys)
  redis.Publish(ALLCANDLES_PUBLISH, candle_buf)
    把每一个组装好的candle对象发布到redis的频道ALLCANDLES_PUBLISH，等待需要的订阅者订阅，进行二次加工
  WriteLogProcess
    这里收听所有的写日志请求，写进elasticSearch.目前只能收听core对象的内建channel的事件，而不是redis的，后面可能要改, 也不一定要改
是一个循环创建 rest请求的番茄钟计时器，每分钟获取全部ticker信息，并把配置中定义的需要关注的ticker信息发送到redis 特定频道和 writeLog队列
另外一个循环番茄钟，批量、定时、构建特定币种（配置决定），特定周期的candle请求，并把构建好的请求对象按照一定的时间间隔 扔进redis特定队列, 根据关注的周期不同，这种类型的番茄钟有好几个实例，
上述 candle请求 对象 队列的消费者，实施：
candle落盘 redis （可选）
再分发 (publish to redis)
此函数有条件保证后半段的部分，同一个 period, keyName ，在一个周期里，SaveToSortSet只会被执行一次