Go微服务架构实战 中篇:3. 扩缩容、自愈和故障转移、滚动更新以及回退能力

K8s+gRPC 云原生微服务开发与治理实战 可以是你正在学习的东西,也可以是你认为很酷的东西,更可以是你正在工作的东西,皆可。可以是你正在学习的东西,也可以是你认为很酷的东西,更可以是你正在工作的东西,皆可。但是,最重要的是,你将了解到其他人是如何看待编程的。还有你遇到的那些小问题,已经有无数前辈也曾遇到过,他们总结了并分享在互联网上了,前人的经验是你的宝贵资源,要善于利用谷歌等软件。还有你遇到的那些小问题,已经有无数前辈也曾遇到过,他们总结了并分享在互联网上了,前人的经验是你的宝贵资源,要善于利用谷歌等软件。你需要挑战自我,并超越熟悉的领域。 阅读详情

Go微服务架构实战-【公粽号:堆栈future】

Go微服务架构实战目录

1. 微服务架构上篇

1. grpc技术介绍

2. grpc+protobuf+网关实战

3. etcd技术介绍

4. 基于etcd的服务发现与注册

5. 基于etcd的分布式锁实战

2. 微服务架构中篇

1. k8s架构介绍

2. 基于k8s的容器化部署

基于k8s的Deployment工作负载

主要是利用Deployment资源对象实现的,包括一下功能:

  1. 多副本集

  2. 扩缩容

  3. 自愈和故障转移

  4. 滚动更新

  5. 回退能力

接下来详细了解下操作过程

1. 多副本集

deploy.yaml中只需修改一下replicas,让它的值变成我们想要的副本数量。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8sdemo-deploy
  labels:
    app: k8sdemo
spec:
  replicas: 3 //修改这里
  selector:
    matchLabels:
      app: k8sdemo
  template:
    metadata:
      labels:
        app: k8sdemo
    spec:
      containers:
      - name: k8sdemo
        image: k8s-grpc-demo:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 50007

然后kubectl apply -f deploy.yaml应用一下就可以了,看下创建结果:图片从结果看出三个pod成功起来了。

2. 扩缩容

比较简单,一行命令搞定:

kubectl scale --replicas=1 deployment/k8sdemo-deploy回车之后打印如下:图片

然后看下pod数量kubectl get pod发现只有一个pod了,这里就不展示了,非常简单。

3. 自愈和故障转移

因为我只有一台机器,没办法验证,所以只列出步骤,下去大家自己可以尝试。

  • 停某一台机器

  • 删除某个pod

大家可以去试试,看看是否停掉机器之后,pod会在别的机器上再起来,保持Deployment的副本集数量不变。或者在某台机器上删除某个pod之后,看看这个pod是否重新建立(归功于Deployment的能力)。

tips:当你要删除pod的时候发现一直删除不掉,pod会自动起来,不要着急莫慌,你应该先删除Deployment,这样pod就会自动删除的。

4. 滚动更新

首先你基于你的代码做了部分更新,比如增加了日志等功能,然后在本地构建镜像,比如k8s-grpc-demo:v2,然后你用一行命令就可以搞定滚动更新:

kubectl set image deployment/k8sdemo-deploy k8s-grpc-demo=k8s-grpc-demo:v2 --record

查看下更新状态

kubectl rollout status deployment/k8sdemo-deploy

图片

5. 回退能力

  1. 查看历史版本记录
kubectl rollout history deployment/k8sdemo-deploy

图片

  1. 查看某个历史详情
kubectl rollout history deployment/k8sdemo-deploy --revision=2

图片

  1. 回滚(回到上次)
kubectl rollout undo deployment/k8sdemo-deploy

  1. 回滚(回到指定版本)
kubectl rollout undo deploymen/k8sdemo-deploy --to-revision=2

6. 小结

其实k8s使用不是很复杂,你可以学完k8s之后搭建自己的服务,但是如果想深入定制k8s,需要有一定golang知识和容器化知识,所以想要进阶的可以在深入学习下源码理解下原理。

下篇文章继续给大家讲解下k8s的service的服务注册和发现能力和ingress的入口网关能力,以及它们的网络架构知识。喜欢这篇文章的童鞋可以关注,转发和分享哈。

github地址:https://github.com/guojiangli/k8s-grpc-demo

【公粽号:堆栈future】

使很多处于迷茫阶段的coder能从这里找到光明,堆栈创世,功在当代,利在千秋

龙果学院从无到有构建亿级微服务秒杀系统 百度网盘 录制本套教程的初衷,通过从业10年接触过很多的技术开发人员,尤其在面试一些技术人员的时候,发现他们的技术知识更新较慢,很多人渴望接触到高并发系统和一些高级技术架构,为了帮助更多人能够提升自己和接触到这类技术架构,并满足企业的人才需求,利用业余时间我开始录制这套教程。通过录制教程有很多学员给我反馈信息,给了我很大的鼓舞,当然也有吐槽,我想说的是技术是没有边界的,脱离一线业务场景去谈技术,都... 阅读详情

相关推荐

微服务故障快速恢复

故障快速恢复 什么是故障快速恢复 故障快速恢复就是当提供的可用服务遇到故障时,能够快速修复故障,使其恢复正常状态。 故障快速恢复的目标 提供的可用服务遇到故障时,借助外部因素或者自身能够快速恢复正常运行。 故障快速恢复要解决的问题 依赖组件故障 服务升级故障 服务崩溃状态 网络故障 高并发故障 数据库故障 事务故障 事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发

qq_41926866的博客 1544

Go语言十大主流微服务框架

istio,go-zero,go-kit,kratos,go-micro,rpcx,kitex,goa,dubbo-go,tars-go

深漂小码哥 8万+

Go+Golang+Beego微服务基础实战.rar

分享视频教程:Go/Golang/Beego微服务基础实战视频教程,2020年最新录制,完整版400多节视频,附带源码, 本课程从Beego环境搭建开始讲解,涉及Beego知识的方方面面,最后还有企业级项目实战,让你真正能学以致用!

复制下来就能跑: go语言微服务快速入门-基于grpc和nacos

Agenda: 本文主要介绍了如下内容: 1)微服务的必要性解释 2)举例子说明大概怎么做服务的切分 3)服务注册和服务发现的详细流程 4)基于gRpc与Nacos的详细可执行代码

xingxuechao的专栏 2208

信号系统核心概念:卷积、傅里叶变换与抽样定理的工程实践指南

信号与系统是理解现代电子、通信与数字处理技术的基石。其核心在于通过数学工具对物理世界进行建模与分析,其中卷积运算揭示了线性时不变系统对任意输入的响应可分解为冲激响应的叠加,这一原理极大提升了系统测试与分析的效率。而傅里叶变换则提供了从时域到频域的映射,将复杂的时域卷积运算转化为频域的简单乘法,是实现频谱分析、滤波设计的关键。抽样定理则架起了模拟与数字世界的桥梁,明确了无失真数字化的条件。这些基础理论共同构成了滤波器设计、音频处理、图像分析及通信系统等广泛工程应用的技术支柱。本文聚焦于卷积与傅里叶变换,结合冲

weixin_30788619的博客 629

详细Ubuntu 22.04 配置最新UR机械臂仿真环境(ros2-humble, ur-sim, ur-ros2-driver)

使用ubuntu22.04.01和ur-sim, ur-driver进行ur机械臂的仿真

verloge的博客 1万+

kubernetes笔记-1(云计算、组件架构&集群搭建、Namespace/Pod/Deployment/Service/Ingress/Nfs&Pv&Pvc/Configmap/Secret等)

k8s的核心组件学习

の博客 319

xenomai内核解析--嵌入式实时linux概述

Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...

wsg1100 3699

k8s——知识点回顾(1)

k8s的简单复习总结

qq_43604376的博客 2565

Mac新手必看:用Homebrew安装wget的保姆级教程,附常见报错一键修复

本文为Mac新手提供使用Homebrew安装wget的详细教程,涵盖从Homebrew安装到wget基础使用的全流程,并附常见报错一键修复方案。通过本指南,用户可轻松掌握命令行下载工具wget的安装与使用技巧,解决Mac环境下资源下载的各种问题。

weixin_30635053的博客 366

【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)

【虚幻引擎UE】可编辑动态样条线轨迹及AI跟随路径移动

灵境引路人 6227

K8s+Docker+KubeSphere+DevOps笔记

提示:这里可以添加本文要记录的大概内容:提示:以下是本篇文章正文内容,下面案例可供参考。

qq_44637753的博客 4093

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

摘要:按列表名单将路径a下的文件夹批量剪切到路径b。

qq_31762031的博客 1218

云原生技术问题

整体流程涉及DNS、ARP、TCP、IP、HTTP核心协议,完整过程如下:首先进行DNS解析,将域名解析为服务器IP,依次查询浏览器缓存、系统hosts、本地DNS缓存,未命中则向DNS服务器迭代查询。核心区别:TCP是面向连接的可靠传输协议,需三次握手建连,具备重传、校验、流量控制、拥塞控制机制,报文开销大、传输延迟高;traceroute利用ICMP超时报文:通过逐级递增数据包TTL值,每经过一台路由器TTL减1,TTL归零后路由器返回ICMP超时报文,以此获取链路所有路由节点IP,定位故障链路。

2303_81849819的博客 464

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

【CanMV K210】AI 视觉 MNIST 手写数字识别与分类推理

本文介绍了基于CanMV K210开发板的MNIST手写数字识别实验。实验通过摄像头采集图像,经过开窗、灰度化、缩放、反色等预处理后,使用KPU神经网络加速器运行MNIST分类模型,最终在LCD上显示识别结果。重点讲解了分类模型与检测模型的区别、图像预处理流程以及KPU推理结果的解析方法。实验帮助理解从图像采集到分类输出的完整AI视觉处理链路,并提供了调试思路和硬件连接说明。

Mr数据杨 364

Go微服务开发指南

在这篇深入探讨Go语言在微服务架构中的应用的文章中,我们介绍了选择Go构建微服务的优势、详细分析了主要的Go微服务框架,并探讨了服务发现与注册和API网关的实现及应用。 关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,...

weixin_36865481的博客 1370

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Go微服务框架及基础平台选择

Go微服务框架及基础平台选择

Mr_XiMu的博客 5820

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微服务架构(后端:Go)

什么是微服务架构、优势和劣势、与单体架构的对比、应用场景,微服务架构的设计原则,微服务架构的核心组件:服务注册与发现、服务间通信机制、API 网关的作用与实现、分布式数据管理、微服务架构中的安全策略

风不归的乐园 2114

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

GO中微服务管理(上)

在一个微服务应用中,一组运行的服务实例是动态变化的,实例有动态分配的网络地址,因此,为了使得客户端能够向服务发起请求,必须要要有服务发现机制。服务发现的关键是服务注册表,服务注册表是可用服务实例的数据库,它提供了管理和查询使用的API。服务实例使用这些管理API进行服务的注册和注销,系统组件使用查询API来发现可用的服务实例。客户端发现的案例:Eureka、ZooKeeper服务端发现的案例:consul+nigix我们选择Consul来进行学习。

wang11876的博客 1501

Go语言的微服务架构与分布式系统

1.背景介绍 1. 背景介绍 微服务架构和分布式系统是当今软件开发中不可或缺的技术趋势。随着业务规模的扩大和用户需求的增加,单体应用程序已经无法满足高性能、高可用性和高扩展性的要求。因此,微服务架构和分布式系统成为了软件开发人员的首选解决方案。 Go语言作为一种现代编程语言,具有高性能、简洁的语法和强大的并发能力。它在微服务架构和分布式系统的应用中发挥了重要作用。本文将从以下几个方面进行深入...

AI天才研究院 1383

2024年最全GO语言:微服务--定义和标准,2024一位Golang中级程序员的跳槽面经

另外,一般微服务在系统内部,通常是无状态的,而我们的用户在进行业务操作时,往往是跨业务模块进行操作,且需要是有状态的,在此时的这个系统架构中,也无法解决这个问题。服务调用者通过服务管理框架进行寻址,根据特定的算法,找到对应的服务,或者将服务的注册信息缓存到本地,这样提高性能。异步消息的方式在分布式系统中有特别广泛的应用,他既能减低调用服务之间的耦合,又能成为调用之间的缓冲,确保消息积压不会冲垮被调用方,同时能保证调用方的服务体验,继续干自己该干的活,不至于被后台性能拖慢。这就是服务的发现、识别与管理问题。

2401_84830208的博客 1093

golang的微服务框架

Gin框架是一款基于Go语言的轻量级Web框架,它的设计理念是为了提高Web应用程序的性能和开发效率。

weixin_42094245的博客 4431

go语言高并发与微服务实战 pdf_老男孩带你21周搞定Go语言

课程下载[名称]:老男孩带你21周搞定Go语言[章节]:242节 [语言]:简体中文[演示]:视频[文件大小]:11.4G[下载链接]:【点击文末“喜欢作者”赞赏后获取】有任何问题请咨询QQ:465554933课程介绍Go语言由 Google公司开发,并于2009年开源,相比Java/python/c等语言,Go尤其擅长并发编程,性能堪比C语言,开发效率肩比Python,被誉为“...

weixin_39828859的博客 3907

2.Go语言高并发与微服务实战 --- 微服务概述

【代码】2.Go语言高并发与微服务实战 --- 微服务概述。

enlyhua的专栏 508

Go高并发微服务分布式实战

/ users[id] => 在 不在(你输入的用户ID不正确)// users[id] => 在 不在(你输入的用户ID不正确)在程序中定义PASSWORD = "!值类型使用string。=> 用户 ID name age tel addr。// 打印用户信息,提示用户是否确认修改(Y/N)// 打印用户信息,提示用户是否确认删除(Y/N)提示输入密码,如果密码输出3次都失败,提示并退出。// Y 提示用户输入修改后内容。如果密码成功,再进行用户管理操作。=> 结构 [] map。

niwoxiangyu的博客 4966
上一篇: Go微服务架构实战 中篇:2. 基于k8s部署服务和注册中心,验证服务注册和发现
下一篇: Go并发调度进阶-GMP初始化,最难啃的有时候耐心看完还是很简单的
stackfuture
博客等级 码龄5年 23粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值