Thrift的通信协议主要有下面几种:
TBinaryProtocol:二进制协议
TCompactProtocol:带压缩的二进制协议
TJSONProtocol:Json协议,序列化结果例如
1 | {"2":{"i64":1},"3":{"str":"lintong"},"4":{"lst":["i64",3,1,2,3]}} |
TSimpleJSONProtocol:simple Json协议,该协议为只写,即不可反序列化,序列化结果例如
1 | {'name': 'XiaoMing', 'age': '20'} |
TMultiplexedProtocol
TTupleProtocol
如果想在Gin Web服务中实现限流功能,可以使用ulule/limiter
ulule/limiter是一款支持分布式限流的框架,其可以在Redis中存储和共享限流状态,从而在分布式环境中实现一致的限流逻辑。
1.引用
1 | go get github.com/ulule/limiter/v3@v3.11.2 |
2.Gin限流中间件
1 | package middleware |
3.在router中使用限流中间件
1 | // ratelimit |
4.限流效果,如果限流的话,接口将会返回429的状态码
1 | curl -i --request GET 'http://172.17.0.229:18080/api/v1/user/3' \ |
在redis中会存储限流状态,如下
其中默认的key是prefix+ip,value是API的请求次数
单例模式(Singleton Pattern)是Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
1 | package java_basic; |
1.logback的使用,参考:logback的使用和logback.xml详解
pom文件
1 | <properties> |
代码
1 | import org.slf4j.Logger |
2.log4j的使用
pom文件
1 | <dependency> |
代码
1 | import org.apache.log4j.Logger; |