摘要: 背景 使用Openresty作为网关进行动态节点IP负载均衡时,要求网关有能力在负载均衡之前摘除掉有问题的节点。所以网关需要一定的健康检查能力。 设计 如果每一个网关节点都对服务节点进行探活,假设每1s探活一次,网关节点有M个,服务节点有N个,那整个网络中每秒出现M*N条探活协议,而且大部分都是探活 阅读全文
posted @ 2023-02-10 16:16 zscbest 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 背景 因为在开发网关时,etcd充当很重要的角色,需要系统性的学习。知识来源华为云容器团队的《云原生分布式存储基石-etcd深入解析》 Raft是一个共识算法,是常用的强一致性、去中心化、高可用的分布式协议 思维导图 复制状态机 Raft是基于复制状态机模型实现 基本思想是一个分布式复制状态机由多个 阅读全文
posted @ 2023-02-07 11:15 zscbest 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 背景 为网关提供健康检查功能时需要对节点发送http或者tcp探活请求。Openresty 提供cosocket来处理非阻塞IO。 实现 跟工程结合在一起,这里简单拼接数据结构 local function __default_check_alive(status) return status >= 阅读全文
posted @ 2023-01-29 14:48 zscbest 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 背景 在程序开发过程中有时会遇到事件流的问题,某一个结果会触发A、B、C等一系列动作。需要将各种事件注册给委托类(Delegate)。Delegate类会依次触发注册的函数,完成相应的动作。 实现原理 lua中可以使用元表和队列的形式进行实现 实现细节 delegate.lua local _M = 阅读全文
posted @ 2023-01-28 15:53 zscbest 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 背景 静态的nginx配置需要将负载均衡的服务节点信息都配置在配置文件中。现在微服务或云服务都会接入一些服务发现或者云控平台场景,经常需要更换节点,如果每次都要更新配置并且重启服务是无法接受的,所以需要网关提供动态扩展,实时更新自己负载均衡节点的能力,使用openresty网关需要使用lua扩展来实 阅读全文
posted @ 2023-01-19 15:20 zscbest 阅读(991) 评论(0) 推荐(0) 编辑
摘要: 背景 在go的工程中,有时init的顺序是至关重要的,本文写了一个小控制器去管理init的顺序,可以根据自己的要求设置不同的权重来实现加载顺序。 本文控制器主要实现两个功能,一是按照优先级加载包的引用,二是流程控制,主流程与异步流程存在顺序要求(实现类似sync.WaitGroup功能) 原理 优先 阅读全文
posted @ 2023-01-03 15:31 zscbest 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 背景 最近在总结现有框架中一些比较有亮点的地方,个人觉得带着问题去学习是比较高效的事情,所以把一些学习总结记录下来。 IoC是一种设计原理,比较常见于面向对象的设计中反转控制,实现应用程序类之间的松散耦合。详细的设计模式就不再这里赘述了 设计 采用的第三方库:https://github.com/b 阅读全文
posted @ 2022-12-29 18:42 zscbest 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 背景 运维同学通过网关平台下发nginx配置文件,下发的过程是先灰度发布,发灰度机器,然后需要验证域名的请求是否正常,然后在下发其他生产机器,但是验证过程是人为操作,这就不可避免的会有些同学不进行验证,点击“继续”发布,如果出现问题将是灾难性的(别问为什么是灾难性的)。 为了避免这个问题的出现,发布 阅读全文
posted @ 2022-12-22 21:45 zscbest 阅读(1527) 评论(0) 推荐(1) 编辑
摘要: 背景 在某些业务场景下,比如数据更新,程序执行,只需要某个进程执行一次,但是其他进程需要知道本次执行的结果,所以就需要一个通知机制,主工作进程执行程序,执行之后的结果通知给其他进程,当然本质上也是通过共享内存进行处理。 场景逻辑 源码准备 本次插件来源依然是来自kong的插件 插件地址:https: 阅读全文
posted @ 2022-12-09 17:31 zscbest 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 部署与安装 envoy的部署方式基本上是三种,最常用的docker形式,其次可以根据不用操作系统进行命令行安装(centos使用yum),最后可以自己手动进行编译 因为想单纯探索envoy的使用形式,则直接进行使用第二种方式进行安装 yum安装方式: sudo yum install yum-uti 阅读全文
posted @ 2022-11-17 10:51 zscbest 阅读(591) 评论(0) 推荐(0) 编辑