【K3S】11 - 微服务拆分之Go转型
前言在上文中,我成功从MySQL到MongDB的转型,接下来,我将尝试将SpringBoot转为go Protocol首先,我需要让protoc即生成java代码,也生成go代码。 只需要指定 go_package 即可: 12syntax = "proto3";option go_package = "test/"; 由于我还不是很了解生成的机制,所以这里的包路径全都一样的,你可以尝试对包路径分类。由于我这里有对别的proto文件有引用,导致go的引包错误了,所以才出此下策,当然,所有的名称在声名时也保证了一定不重复。 由于java的代码是通过maven插件生成的,这里我采用原本的protoc命令执行生成go代码,所以我写了这个脚本: 1234protoc --go_out=./ --go-grpc_out=require_unimplemented_servers=false:./ --proto_path=src/main/proto src/main/proto/common/*.protoprotoc --go_out=....
【K3S】10 - 微服务拆分之MongoDB
如遇图片无法加载请使用代理访问 前言在上文中,我成功拆分了单体服务为多个SpringBoot微服务,本文将主要讲述在数据库中,MySQL到MongDB的转型 创建MongoDBMongoDB有多种创建方式,这里我选择的是比较稳妥的主从Replicate,版本是比较旧的4.4,因为机器的内存和带宽小,再加上网络延迟大,这里没有选择新版本的分片 巨页(Huge Pages)是一种Linux内核特性,它允许将连续的物理页面组合成一个大页面。每个大页面可以包含多个传统大小的页面,通常为2MB或1GB。 使用巨页可以提高系统的内存管理效率和性能。在一些内存密集型的应用场景中(例如数据库),使用巨页可以减少内存碎片,并且仅使用更少的页表项来映射相同数量的物理内存,从而降低了内存访问的延迟和CPU开销。 不过,使用巨页需要操作系统和应用程序的支持,并且可能需要进行一些额外的配置工作。因此它只适用于特定的应用场景,而不是所有的应用都会受益于使用巨页。 MongoDB官方文档中指出,在很多情况下,使用巨页并不能带来明显的性能提升,而且还可能会导致一些稳定性问题。具体来说,可能会遇到以下问...
【K3S】09 - 微服务拆分之SpringBoot
如遇图片无法加载请使用代理访问 前言在上个月的25号,我成功搭建了Nexus,在接下来的一个月中,我做了这些事情: 封装各个starter的jar包,上传至Nexus 拆分单体项目为多个微服务 引入ProtoBuf,多个微服务之间采用grpc通信 rancher创建项目,构建测试环境、生产环境 测试环境回归测试,生产环境回归测试 至此,我成功将单体服务拆分,共耗时一个月的时间,代码逻辑没有变化,拆分工作比较费心,但万事开头难,后面的开发会更加简单和高效,下面,我将详细论述这些操作的难点和细节,偏简单口语点,勿对号入座直接照搬。目前暂未考虑开源,仅提供一些思路,取之精华,弃之糟粕 starterleopold-spring-boot-starter我的项目都是基于SpringBoot的,因此一定需要一个starter来封装有关SpringBoot的内容,而且微服务之间的通讯基本是grpc,所以也会涵盖grpc的内容 pom.xml 内容如下: 123456789101112131415161718192021222324252627282930313233343536...
【K3S】08 - 微服务拆分之Nexus
如遇图片无法加载请使用代理访问 前言在拆分微服务前,我们需要先把公共的代码(比如数据库连接、工具包等)封装成多个jar包,这样以后无论是创建一个新项目,还是更改公共部分的代码,只需要更改这个jar包,其他项目引用最新的这个jar包即可。因此我们需要一个组件,像harbor一样,管理不同版本号的jar包,而且需要maven的加持,Nexus就是解决方案 Nexus需要挂在pvc,本文将挂载nfs的pvc,如果你没部署过nfs以及挂载,可以看这篇文章 存储服务 环境声明 Nexus: 3.32.0 安装创建命名空间 1kubectl create ns nexus 创建 nexus-deploy.yaml 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949...
【K3S】07 - SpringBoot改造
前言这一部分我们将改造SpringBoot,让它接入k3s的特性 优雅关机概念Kubernetes 中,Pod 的停止分为两种情况: Graceful Termination:这种情况下,Kubernetes 会尽量通知 Pod 中的应用程序,让它们在关闭前优雅地完成正在进行的任务。具体来说,Kubernetes 会发送一个 TERM 信号给容器里的进程,然后等待一段时间(由 terminationGracePeriodSeconds 参数指定,默认值为 30 秒)以便让进程完成清理工作 Forceful Termination:如果在上述时间到期后,容器中的进程仍未退出,则 Kubernetes 会直接发送 KILL 信号给它们,强制终止容器 spring-boot-starter-actuator 是一个 Spring Boot 的扩展模块,它可以让你方便地监控和管理应用程序。该模块提供了一些 RESTful 接口和 JMX Beans,可以帮助你更好地了解和管理应用程序的运行状况。 以下是 spring-boot-starter-actuator 的一些常用特性: ...
【K3S】06 - 部署Prometheus+Grafana+Node Exporter
如遇图片无法加载请使用代理访问 前言本文主要讲述 2023 K3s Rancher 部署 Prometheus + Grafana 如果你还没有部署 K3s 和 Rancher ,你可以浏览这篇文章:【K3S】01 - 异地集群初始化 环境声明 hostname 系统 配置 节点 角色 部署 m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server nginx rancher(2.7.1) Helm(3.10.3) n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server m2 Ubuntu-Server(20.04) 2c4g 172.25.4.244/32 control-plane,etcd,master k3s(v1.24.6+k3n1) ser...
【K3S】05 - Rancher部署Redis HA
如遇图片无法加载请使用代理访问 前言本文主要讲述 2023 K3s Rancher 部署Redis集群 如果你还没有部署 K3s 和 Rancher ,你可以浏览这篇文章:【K3S】01 - 异地集群初始化 如果你没部署过 单节点 Redis,你可以浏览这篇文章:【K3S】02 - Rancher 中间件单节点部署 环境声明 hostname 系统 配置 节点 角色 部署 m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server nginx rancher(2.7.1) Helm(3.10.3) n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server m2 Ubuntu-Server(20.04) 2c4g 172.25.4.244/32 contro...
【K3S】04 - Rancher部署Vitess
本章节非必须使用,小项目用以往的MySQL就行。 前言本文主要讲述 2023 K3s Rancher 如何通过vitess部署生产环境 集群HA MySQL 如果你还没有部署 K3s 和 Rancher ,你可以浏览这篇文章:【K3S】01 - 异地集群初始化 如果你没部署过 单节点,你可以浏览这篇文章:【K3S】02 - Rancher 中间件单节点部署 环境声明 hostname 系统 配置 节点 角色 部署 m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server nginx rancher(2.7.1) Helm(3.10.3) n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server m2 Ubuntu-Server(20.04) 2c4g 172.25...
【K3S】03 - Rancher部署测试环境MySQL HA
如遇图片无法加载请使用代理访问 前言本文主要讲述 2023 K3s Rancher 如何部署测试 集群HA MySQL 如果你还没有部署 K3s 和 Rancher ,你可以浏览上一篇文章:【K3S】01 - 异地集群初始化 如果你没部署过 单节点 的MySQL ,你可以浏览这篇文章:【K3S】02 - Rancher 中间件单节点部署 请注意,即便这是k8s默认的MySQL集群搭建例子,它依旧不适用于生产环境,不适用的原因请查看章节 反思与探索,如果你想部署生产环境适用的MySQL HA,请查看文章 Vitess 环境声明 hostname 系统 配置 节点 角色 部署 m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server nginx rancher(2.7.1) Helm(3.10.3) n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 cont...
【K3S】02 - Rancher中间件单节点部署
如遇图片无法加载请使用代理访问 前言本文主要讲述生产环境 2023 K3s Rancher 如何 单节点 部署 Mysql Redis 如果你还没有部署 K3s 和 Rancher ,你可以浏览上一篇文章:【K3S】01 - 异地集群初始化 如果你想部署 集群HA,你可以浏览这篇文章:【K3S】03 - Rancher 中间件集群HA部署 环境声明 hostname 系统 配置 节点 角色 部署 m1 Ubuntu-Server(20.04) 2c4g 192.168.0.67/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server nginx rancher(2.7.1) Helm(3.10.3) n1 Ubuntu-Server(20.04) 1c2g 192.168.0.102/32 control-plane,etcd,master k3s(v1.24.6+k3n1) server m2 Ubuntu-Server(20.04) 2c4g 172.25.4.244...










