1、Go的goroutine并发机制使Go非常适合用于大规模高并发后端服务程序的开发
2、tars是个开源的微服务平台,包含了一个高性能的rpc框架和服务管理平台
  tarsweb:监视服务节点的运行时状态,以及发布,部署,启动或停止服务器
  tarsregistry:Tarsweb使用tarsregistry来发布,启动或停止服务器。Tarsregistry还提供命名服务。它还接受来自服务器的心跳消息。一台服务器可以通过tarsregistry查询其他服务的服务器的地址(IP /端口)
  tarspatch:Tarspatch提供发布管理服务。Tarsweb使用它向服务器发布指定版本的服务
  tarsconfig:Tarsconfig作为配置中心。它管理所有服务器的服务配置文件
  tarslog:Tarslog提供远程日志服务。来自服务器的日志将发送到tarslog。Tarslog存储这些日志以供进一步使用
  tarsstat:来自服务器的Tarsstat统计信息,例如工作负载,响应时间,超时请求比率。Monitor服务使用这些信息来发现异常服务器并发出警告
  tartproperty:除了来自tarsstat的统计信息之外,用户还可以为服务器定义与业务相关的属性,例如内存使用情况,队列大小,缓存命中率。Monitor服务使用这些信息来发现异常服务器并发出警告
  tarsnotify:从服务器Tarsnotify统计异常信息,如db failure,发现异常服务器并发出警告
  Tarsnode管理服务器。它可以停止,启动,发布和监控它们。同时,它接受来自服务器的心跳
 3、容错(排除名称服务、客户端屏蔽)
 4、(过载保护)为避免因突发请求或机器故障导致系统过载,tars在框架中处理此方案。为了提高系统吞吐量,服务器使用请求队列异步处理请求。服务器监视队列的长度。如果长度超过阈值,则服务器拒绝新请求。如果请求长时间保留在队列中,服务器也会丢弃请求。
服务端启动
./HelloServer --config=config.conf
package main

import (
    "fmt"
    "github.com/TarsCloud/TarsGo/tars"
    "TestApp"
)
//tars.Communicator should only init once and be global
var comm *tars.Communicator

func main() {
    comm = tars.NewCommunicator()
    obj := "TestApp.TestServer.HelloObj@tcp -h 127.0.0.1 -p 10015 -t 60000"
    app := new(TestApp.Hello)
    comm.StringToProxy(obj, app)
    var req string="Hello Wold"
    var res string
    ret, err := app.TestHello(req, &out)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(ret, out)
}

说明:
/*
  • TestApp包是由tars2go工具使用tars协议文件生成的.
  • comm: Communicator用于与服务端进行通信,它应该只初始化一次并且是全局的.
  • obj: 对象名称,用于指定服务端的ip和端口。通常在"@"符号之前我们只需要对象名称.
  • app: 与tars文件中的接口关联的应用程序。 在本例中它是TestApp.Hello.
  • StringToProxy: StringToProxy方法用于绑定对象名称和应用程序,如果不这样做,通信器将不知道谁与应用程序通信 .
  • req, res: 在tars文件中定义的输入和输出参数,用于在TestHello方法中.
  • app.TestHello用于调用tars文件中定义的方法,并返回ret和err.
*/
01-21 07:44