# tis **Repository Path**: Tech160Cloud/tis ## Basic Information - **Project Name**: tis - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-05 - **Last Updated**: 2025-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TIS (Tech160 Internal Service) TIS 是一个高性能的内部服务框架,专为构建微服务架构而设计。它提供了服务注册与发现、负载均衡、限流、熔断、日志追踪等核心功能,适用于构建高可用性的分布式系统。 ## 特性 - **服务通信**:支持 HTTP 和 RPC 服务通信。 - **负载均衡**:支持多种负载均衡策略(直连、索引、加权轮询)。 - **服务注册与发现**:基于 Etcd 实现服务注册与发现。 - **限流与熔断**:内置限流器和熔断器,保障系统稳定性。 - **日志与追踪**:集成日志系统和分布式追踪。 - **多协议支持**:支持多种编码和传输协议(JSON、ProtoBuf、TIS 协议等)。 ## 安装 ### 依赖 - Go 1.16+ - Etcd(用于服务注册与发现) - Protobuf 编译器(用于生成代码) ### 获取代码 ```bash git clone https://gitee.com/Tech160Cloud/tis.git cd tis ``` ### 安装依赖 ```bash go mod download ``` ## 使用示例 ### 服务端 ```go package main import ( "context" "github.com/Tech160Cloud/tis" pb "github.com/Tech160Cloud/tis/example/hello/pb" ) type Greet struct{} func (g *Greet) SayHello(ctx context.Context, req *pb.SayHelloReq) (*pb.SayHelloRes, error) { return &pb.SayHelloRes{Msg: "Hello, " + req.Name}, nil } func main() { app := tis.NewApplication() // 注册 RPC 服务 app.AddRpcServer("Greeter", &Greet{}, pb.NewGreeterServerDispatcher()) // 启动服务 if err := app.Run(); err != nil { panic(err) } } ``` ### 客户端 ```go package main import ( "context" "github.com/Tech160Cloud/tis" pb "github.com/Tech160Cloud/tis/example/hello/pb" ) func main() { // 创建客户端 client := tis.NewClient("Greeter", tis.WithDialTarget("127.0.0.1:8080")) // 调用服务 req := &pb.SayHelloReq{Name: "World"} resp := &pb.SayHelloRes{} if err := client.Invoke(context.Background(), "SayHello", req, resp); err != nil { panic(err) } println(resp.Msg) } ``` ## 配置 TIS 使用 YAML 文件进行配置,示例配置如下: ```yaml app: name: "myapp" server: name: "myservice" port: 8080 client: timeout: 3s max_idle: 10 log: level: "info" path: "/var/log/tis" ``` ## 贡献 欢迎贡献代码和文档。请提交 PR 或 Issue 到 [Gitee 仓库](https://gitee.com/Tech160Cloud/tis)。 ## 许可证 本项目使用 [Apache-2.0](LICENSE) 许可证。