go 循环遍历子菜单

转载请注明来源:https://janrs.com/f597 CREATE TABLE `permission_menu` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'primary id', `parent_id` int(10) DEFAULT 0 COMMENT 'parent id', `type` tinyint(2) DEFAULT

部署 OTEL yaml 文件备忘

--- apiVersion: v1 kind: ConfigMap metadata: namespace: opentelemetry-operator-system name: otel-collector-conf labels: app: opentelemetry component: otel-collector-conf data: otel-collector-config: |

Golang – Channel & Routine – 通道/协程使用以及学习总结

在 Go 中,可以利用通道以及协程来实现高并发。 转载请注明来源:https://janrs.com/zide 常用高并发协程库工具:panjf2000/ants 有关协程查看博文:Golang 协程/线程/进程 区别以及 GMP 详解 概念 作用:用于在协程之间进行通信。 通道分为有缓冲、无缓冲通道。有数据长度(len)以及容量(cap)。设置了缓冲区后,发送端和接收端处于异步的状态;反之是同步

Golang 协程/线程/进程 区别以及 GMP 详解

转载请注明来源:https://janrs.com/mffp GPM的简要概括即为:事件循环,线程池,工作队列。 进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间、独立的堆和栈,既不共享堆,亦不共享栈。一个程序至少有一个进程,一个进程至少有一个线程。进程切换只发生在内核态。 线程 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,是由操作系统调度,是操作系统调度(CPU调度)执行的最小

go协程编排工具 – oklog/run 使用

go协程编排工具 - oklog/run 使用 oklog/run 包非常简单,只有一个类型,两个方法,共 60 行代码。其中 Group 是一组 actor,通过调用 Add 方法将 actor 添加到 Group 中。 type Group func (g *Group) Add(execute func() error, interrupt func(error)) func (g *Gro

如何用Golang处理每分钟100万个请求

转载请注明来源:https://janrs.com/9yaq 在我设计一个分析系统中,我们公司的目标是能够处理来自数百万个端点的大量POST请求。web 网络处理程序将收到一个JSON文档,其中可能包含许多有效载荷的集合,需要写入Amazon S3,以便我们的地图还原系统随后对这些数据进行操作。 传统上,我们会研究创建一个工人层架构,利用诸如以下东西: Sidekiq Resque Delayed

Grpc工具buf.build使用

转载请注明来源:https://janrs.com/iclb 文件以及目录的总体结构如下: userservice ├── Makefile ├── buf.gen.yaml ├── buf.work.yaml ├── cmd │   ├── main.go │   └── server │   ├── grpc.go │   ├── http.go │   ├── run.go │   ├──

微服务最佳实践

点击 | 我的GitHub 转载请注明来源:https://janrs.com/5s0t 微服务架构是一种进化模式,它从根本上改变了服务器端代码的开发和管理方式。 这种架构模式涉及将应用程序设计和开发为一组松散耦合的服务,这些服务通过定义明确的轻量级 API 进行交互以满足业务需求。 它旨在通过促进持续交付和开发来帮助软件开发公司加速开发过程。 如果我们谈论它的基本级别,一个特定的微

本地开发Kubernetes微服务远程调试工具 – kubefwd

点击 | 我的GitHub 转载请注明来来源:https://janrs.com/87qz 项目地址:https://github.com/txn2/kubefwd kubefwd帮助实现了在本地工作站上开发应用程序和服务的无缝和高效方式。在本地开发打算与Kubernetes集群中的其他服务进行交互的应用程序。 kubefwd允许具有连接字符串(如 http://elasticsea

微服务中的分布式事务管理 – 2/2 Saga异步模式

点击 | 我的GitHub 转载请注明来源:https://janrs.com/h42y 这篇文章是上一篇文章的延续。 在这篇文章中,我们将看到Saga模式,它是一种异步模式,在每个微服务中执行一连串的事务,并发布消息或事件以进行下一步。如果中间有任何步骤失败,Saga模式将执行补偿步骤以逆转交易。 我们可以从上图中看到,Saga模式在每个服务中执行一连串的本地事务。每个服务更新它的

微服务中的分布式事务管理 – 1/2 2/3阶段提交同步模式

点击 | 我的GitHub 转载请注明来源:https://janrs.com/bkt7 在这篇文章中,我们将看到关于跨微服务的分布式事务管理。 一个事务不过是一系列必须成功执行的操作。即使其中一个操作失败了,整个步骤也必须回滚,以使应用程序处于之前的稳定状态。一个事务具有以下ACID属性。 在传统的单片机应用程序中,将有一个单一的大型应用程序连接到一个大型数据库,这种应用程序坚持A

Golang Grpc 高级使用 – Deadlines, Cancellation, Error Handling, Multiplexing

点击 | 我的GitHub 转载请注明来源:https://janrs.com/xag1 超时是分布式系统中常用的一种模式。尽管截止日期与超时相似,但对于gRPC来说,有一个关键的区别。超时是一个选项,让客户决定他们愿意等待服务器响应的时间,并且是在每个客户端本地应用。因此,它不可能在gRPC请求的整个生命周期内应用。这就是为什么我们需要使用截止日期。 超时允许你在微服务架构中避免无

在Kubernetes上使用Jaeger的分布式追踪基础设施

点击 | 我的GitHub 转载请注明来源:https://janrs.com/sptc 作为分布式系统(或任何系统)的一个组成部分,监测基础设施的重要性怎么强调都不过分。监控不仅要跟踪二进制的 "上升 "和 "下降 "模式,还要参与到复杂的系统行为中。监测基础设施的设置可以让人们深入了解性能、系统健康和长期的行为模式。 这篇文章介绍了监控基础

用GoRoutines高性能同时进行多个Api调用

点击 | 我的GitHub 转载请注明来源:https://janrs.com/ppzi Golang是高效的,非常高效。这种效率在很大程度上要归功于它在处理并发性问题时的独特抽象。例如,Java将其线程映射为操作系统线程,而Go使用自己的goroutines调度器将其轻量级goroutines从操作系统线程中进一步抽象出来。简而言之,Golang在使用操作系统线程方面非常节俭;如果

Go创建Grpc链接池

点击 | 我的GitHub 转载请注明来源:https://janrs.com/x0gn gRPC 四种基本使用 请求响应模式 客户端数据流模式 服务端数据流模式 双向流模式 常见的gRPC调用写法 func main(){ //... some code // 链接grpc服务 conn , err := grpc.Dial(":8000",grpc.WithI