微服务最佳实践

点击 | 我的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请求的整个生命周期内应用。这就是为什么我们需要使用截止日期。 超时允许你在微服务架构中避免无

istio实现多版本流量转移

多版本流量分发主要概念:同一个服务部署多个 deployment 共用一个 service 。通过在 deployment 设置 version 然后在 virtual service 以及 destination 配置流量转发。 apiVersion: apps/v1 kind: Deployment metadata: name: hello-client namespace: rakour-

Debian10/11 替换国内源

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main #deb http://security.debian.org/debian-security buster/updates main contrib

谷歌发布编写分布式应用的框架Service Weaver

点击 | 我的GitHub 一个新的框架,在本地以模块化单体的形式运行,一旦部署,则为分布式微服务架构 转载请注明来源:https://janrs.com/dl08 项目GitHub地址:https://github.com/ServiceWeaver/weaver 感觉就像永远,总是在什么是更好的之间来来回回:单体还是微服务? 取决于你问谁,以及他们的经验,你每次都会得到不同的答案

在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

kiali创建获取token

kubectl get sa -n istio-system 根据上面显示的 kiali 的 sa 创建 token 单例部署的kialia kubectl -n istio-system create token kiali operator部署的kialia kubectl -n istio-system create token kiali-service-account

Docker 部署 ELK 并设置安全访问

转载请注明来源:https://janrs.com/c9rq docker pull logstash:8.7.0 && \ docker pull kibana:8.7.0 && \ docker pull elasticsearch:8.7.0 打开系统参数配置文件 vi /etc/sysctl.conf 末尾添加以下配置后重启系统 vm.max_map_cou