tonglin0325的个人主页

go学习笔记——gin限流

如果想在Gin Web服务中实现限流功能,可以使用ulule/limiteruber-go/ratelimit

1.ulule/limiter

ulule/limiter是一款支持分布式限流的框架,其可以在Redis中存储和共享限流状态,从而在分布式环境中实现一致的限流逻辑。

ulule/limiter基于令牌桶(Token Bucket)算法,因为允许累积令牌,若桶中有令牌,短时间可处理大量请求,所以可能会短时超限。令牌桶算法允许突发流量的业务,适用场景如 API 请求、流媒体加载。

其他基于令牌桶算法的限流框架还有 golang.org/x/time/rate

1.引用依赖

全文 >>

go学习笔记——分布式事务框架DTM

DTM是一款开源的GO语言分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。

DTM可适合多语言栈的公司使用。方便go、python、php、nodejs、ruby、c# 各类语言使用。

支持的分布式事务协议包括:SAGA,TCC,XA和二阶段消息这几种模式。

官方网站:https://dtm.pub/

1.启动DTM服务

参考:https://dtm.pub/guide/install.html#%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8C%85%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85

项目

全文 >>

k8s学习笔记——Istio和Kong

服务网格(Service Mesh)是一种用于处理微服务架构中服务间通信的基础设施层。它的主要作用是提供可靠的服务发现、负载均衡、故障恢复、指标监控和安全性,通常无需对服务代码进行大量修改。服务网格通过在每个服务实例旁边部署一个轻量级代理(sidecar)来实现这些功能。

1.Istio

Istio 是一个开源的服务网格(Service Mesh),透明地层叠到现有的分布式应用程序之上。Istio 强大的功能提供了一种统一且更高效的方式来保护、连接和监控服务。Istio 是实现负载均衡、服务间身份验证和监控的途径——几乎无需修改服务代码。它为你提供:

  • 集群中服务间的安全通信,采用双向 TLS 加密,基于强身份的身份验证和授权
  • HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡
  • 通过丰富的路由规则、重试、故障切换和故障注入对流量行为进行细粒度控制
  • 支持访问控制、速率限制和配额的可插拔策略层和配置 API
  • 集群内所有流量(包括集群入口和出口)的自动化指标、日志和跟踪

参考:https://istio.io/latest/docs/overview/what-is-istio/

Istio 的流量管理模型源于和服务一起部署的 Envoy 代理。 网格内服务发送和接收的所有 data plane 流量都经由 Envoy 代理, 这让控制网格内的流量变得异常简单,而且不需要对服务做任何的更改。

Envoy 是在 Istio 里使用的高性能代理,用于为所有服务网格里的服务调度进出的流量。

参考:https://istio.io/latest/zh/docs/concepts/traffic-management/

2.Kong

Kong 提供了两个主要产品:Kong Gateway 和 Kuma。

全文 >>

k8s学习笔记——ingress

Ingress 提供从集群外部到集群内服务(service)的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。

下面是 Ingress 的一个简单示例,可将所有流量都发送到同一 Service:

ingress-diagram

通过配置,Ingress 可为 Service 提供外部可访问的 URL、对其流量作负载均衡、 终止 SSL/TLS,以及基于名称的虚拟托管等能力。 Ingress 控制器 负责完成 Ingress 的工作,具体实现上通常会使用某个负载均衡器, 不过也可以配置边缘路由器或其他前端来帮助处理流量。

参考:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

典型的Ingress 控制器有 ingress-nginxIstio Ingress(一个基于 Istio 的 Ingress 控制器),用于 Kubernetes 的 Kong Ingress 控制器(一个用来驱动 Kong Gateway 的 Ingress 控制器)

参考:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress-controllers/

screen使用教程

在terminal上使用跳板机远程登录其他机器的时候,经常会因为和跳板机的连接断开而丢失会话,如下

这时候可以使用screen命令来创建和恢复会话

1.创建会话

全文 >>