- 博客(7)
- 收藏
- 关注
原创 go-zero源码阅读-服务部署
服务部署生产环境搭建docker & k8s搭建详细请看我的下一篇文章git私有仓库 & 容器私有仓库 & CI、DI详细请看我的下一篇文章配置文件编写 & 生成dockerfile我们先用网关部分代码来演示执行代码./cmd.sh gen dockerfile gateway生成文件 code/service/gateway/api/Dockerfile### 加载基础镜像FROM golang:alpine AS builderL
2022-05-03 01:06:28
557
原创 go-zero源码阅读-负载均衡(下)#第六期
一致性哈希一致性哈希主要针对的是缓存服务做负载均衡,以保证缓存节点变更后缓存失效过多,导致缓存穿透,从而把数据库打死。一致性哈希原理可以参考这篇文章图解一致性哈希算法,细节剖析本文不再赘述。我们来看看其核心算法// service node 结构体定义type ServiceNode struct { Ip string Port string Index int}// 返回service node实例func NewServiceNode(ip, port string)
2022-04-10 19:21:25
1161
原创 go-zero源码阅读-负载均衡(上)#第五期
在阅读 go-zero 源码之前我们先来看看常用的负载均衡算法,看看其原理,以及是如何实现,然后我们在用这些负载均衡算法来和 go-zero 的对比下,看看各自的优缺点是啥。轮询proxy 服务与 ndoe 服务配置文件{ "proxy": { "url": "127.0.0.1:8080" }, "nodes": [ { "url": "127.0.0.1:8081" }, {
2022-04-06 23:58:53
354
原创 go-zero源码阅读-限流器#第四期
go-zero 给我们提供了两种限流器,而且都是基于 redis 实现的可分布式的限流器核心文件带注释代码如下,大家可以参阅计数器限流器 https://github.com/TTSimple/go-zero-source/blob/master/code/core/limit/periodlimit.go令牌桶限流器 https://github.com/TTSimple/go-zero-source/blob/master/code/core/limit/tokenlimit.go我们通过最
2022-04-01 20:58:10
1068
原创 go-zero源码阅读-过载保护#第三期
入口源码地址:github.com/zeromicro/go-zero/rest/handler/sheddinghandler.go在看文章之前可以看看万总的这篇文章《服务自适应降载保护设计》,文章已经给我们介绍很清楚了,从基础原理到架构需求再到代码注释,无不细致入微,感谢万总。之前在设计架构的时候对于服务过载保护只会想到在客户端、网关层来实现,没考虑过在服务端也可以达到这种效果,一来涉及这种技术的文章较少(可能是我孤陋寡闻了),二来服务端不确定的情况比较多,比如服务器出现问题,或者其他在同一台服务器
2022-03-30 23:38:39
408
原创 go-zero源码阅读-熔断器#第二期
熔断器入口源码地址:github.com/zeromicro/go-zero/rest/handler/breakerhandler.gogo-zero 的熔断器基于滑动窗口来实现,我们首先来看看滑动窗口是啥leetcode 中有这样一个题目:剑指 Offer II 041. 滑动窗口的平均值给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。实现 MovingAverage 类:MovingAverage(int size) 用窗口大小 size 初始化
2022-03-29 11:24:17
799
原创 go-zero源码阅读-代码结构#第一期
go-zero 作为一个微服务框架,不仅给我们提供了很好的参考,而且核心代码量不多,我们可以在闲暇时间读读他的核心代码,来多多学习充电。rest 部分代码结构rest├── handler // 自带中间件│ ├── authhandler.go // 权限│ ├── breakerhandler.go // 断路器│ ├── contentsecurityhandler.go // 安全验证│
2022-03-29 11:22:57
1500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人