自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(279)
  • 收藏
  • 关注

原创 gorm_generate根据表生成对应结构体

在使用新版本的gorm时底层有一个Migrator迁移器,内部提供了一些用来创建,修改,删除,以及获取数据库的元数据信息的方法CurrentDatabase:用于获取当前数据库的名称TableType:用于获取一个表的类型,是普通表还是视图,返回一个TableType类型的值ColumnTypes : 用于获取表字段信息的GetIndexes : 用户获取索引信息的AddColumn:用于给一个表添加一个列,根据你定义的结构体的字段来生成对应的类型和约束。

2023-12-20 15:05:18 559

原创 六. Nacos 注册中心底层原理

目录一. Nacos 注册中心使用注意点二. NacosNamingService1. EventDispatcher2. NamingProxy3. BeatReactor4. HostReactor三. 服务注册1. registerInstance()--->BeatReactor下的addBeatInfo()方法实现心跳的建立2. registerInstance()--->NamingProxy下的registerService()方法实现服务注册3. nacos注册中心对注册请求的处

2023-08-02 10:04:09 417 1

原创 再次解释Spring中一个bean的注入过程

先看一下项目启动时如何执行到refresh()这个方法的,在run方法中先创建ApplicationContext,创建完毕后会调用refreshContext(context),内部会调用refresh方法//刷新应用上下文对象,加载 bean 定义并实例化 bean,会继续向下调用refresh内部的refresh() //下方示例中就省略了直接到我们最终的refresh() this . refresh(context);try {} } }

2023-07-17 17:12:09 271

原创 go 进阶 go-zero相关: 二. 服务启动与路由,中间件注册,请求接收底层原理

了解go-zero底层也是基于net/http标准库实现http的,是怎么实现的,怎么触发到net/http的go-zero也是基于前缀树进行路由注册的,是怎么注册的,注册过程中有哪些注意点go-zero中支持中间件, 在服务启动时,中间件,路由是如何保存的,接收请求时是如何执行的先看一下基础go-zero服务示例。

2023-06-28 18:08:32 1347 5

原创 Jenkins

Pipline script from SCM是将Pipeline script放到Git或者SVN上,执行的时候从上面拉下来执行。#docker exec -it 7f485bd95c3b(复制的容器id) /bin/bash。Pipline script模式是将脚本写在下面的输入框中。post:任务执行完成后执行的操作。stages:添加执行步骤。

2023-06-07 10:12:57 105

原创 Docker 容器基础介绍

一. 基础介绍传统方式下:a. 在没有虚拟技术时,我们发布一个项目首先要有物理服务器,安装系统,在系统上启动运行项目b. 在微服务环境下,一个项目我们可能会做集群,同一个项目复制多份,进行不同的配置,分别在不同的物理服务器上运行,然后基于nginx,网关等拦截请求负载均衡,将请求打到指定的服务器上传统方式下的弊端:a. 成本比较高,可能一台服务器上,只能运行一个服务b. 部署项目比较复杂,将不同的项目部署到不同的服务器上,需要进行大量的配置,发布时要获取指定的服务器,将指定的项目发

2023-06-07 10:11:58 1114

原创 gin 十一. gin-contrib之cache 缓存

通过"github.com/gin-contrib/cache/persistence"获取缓存引擎实例相关。

2023-06-06 17:19:29 881

原创 十九. Kubernetes NetworkPolicy 网络隔离策略

【代码】十九. Kubernetes NetworkPolicy 网络隔离策略。

2023-05-25 09:47:47 577

原创 go 进阶 数据处理(内部包含一些针对数据处理的三方库介绍)

市场使用角度:目前来看,使用较广的库是 go-linq,根据 Github 上的数据,它有超过 4K 的 star 和大量的 fork,可以说是一个比较成熟和受欢迎的库。

2023-05-24 17:37:35 226 1

原创 go 进阶 三方库之 joda-time

目录一. joda-time 基础解释二. joda-time常用API简介三. 其它三方时间库一. joda-time 基础解释joda-time 是一个流行的 Java 日期和时间处理库,在 Golang 中有对应的实现 go-joda. 它提供了对日期、时间、时区、周期、持续时间、格式化和解析等多个时间操作的支持,设计得非常全面和庞大。它的优点如下:支持多种日历系统,包括 ISO、Julian、Coptic 和 Ethiopic 等。提供了丰富的日期和时间操作方法,并提供了更加灵

2023-05-24 09:53:47 349

原创 二十三. Kubernetes 安装时的调度策略

也就是拓扑键为"kubernetes.io/hostname"作为标准时,如果在亲和策略中,那么会加入到同一个节点上,如果在反亲和策略中,那么就不能在同一节点上。执行命令后返回的数据中,前面"node-role.kubernetes.io/master"是污点名,冒号后面是污点的作用效果,例如 “NoSchedule”实际可以理解为给k8s节点设置对应的标签,在部署pod时设置节点选择器,通过节点选择器选中指定节点安装部署。

2023-05-24 09:26:38 84

原创 二十五. Kubernetes 总结

以部署一个服务为例,先执行命令编写部署的yaml部署yaml编写完成后,运行"kubectl create -f nginx.yml",该命令首先会提交给 API Server ,然后解析 yml 文件,并对其以 API 对象的形式存到 etcd 里。k8s集群的master节点通过ControllerManager 会以控制循环的方式来做编排工作,创建应用所需的Pod。同时 Scheduler 会 watch etcd 中新 pod 的变化,如果他发现有一个新的 pod 的变化。

2023-05-24 09:26:06 255

原创 二十一. Kubernetes 配置的创建与使用

官方文档Secret通常用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥,用户可以创建 Secret,同时k8s系统也会创建Secret可以理解为将敏感信息存储为Secret配置,需要该配置的应用通过挂载引用即可,不再对外暴露,更安全Secret配置也分为不同类型:(可以执行"kubectl create secret --help" 命令查看解释)Opaque: 用户自定义的任意kv数据(例如服务应用需要的数据)docker-register: 下载私有镜像,连接私库的秘钥。

2023-05-24 09:25:56 69

原创 二十四. Kubernetes 安全

目录一.一.官方文档k8s中不管是外部通过ui管理端操作,还是通过命令行,再或者集群内部执行的操作指令,所有指令都会发送给ApiServer, 即使是pod也会被集群认为是一个用户,会给这个用户颁发一个ServiceAccount服务账号在调度时为保证安全存在三个步骤: 认证–> 授权—>准入控制k8s支持基于RBAC角色的访问控制

2023-05-24 09:25:49 47

原创 二十二. Kubernetes ResourceQuota配额限制与LimitRanger限制范围

【代码】二十二. Kubernetes ResourceQuota配额限制与LimitRanger限制范围。

2023-05-24 09:25:06 177

原创 二十. Kubernetes 存储挂载

Pod 使用时通过volume的定义,将PVC挂载到容器内的某个路径进行使用。编写部署服务yaml时,在pod中通过"volumes"设置当前pod用到的挂载卷,卷的详情,通过容器中的"containers.volumeMounts"配置当前容器的挂载点,当前容器使用volumes中的哪个卷。使用持久卷申请后,设置挂载时可以挂载指定的存储挂载系统例如NFS,也可以编写pv持久卷申请,在持久卷申请中编写挂载设置,然后pod挂载时挂载pv,通过pv再进行实际挂载,这个pv由运维提供,简化了开发的工作。

2023-05-24 09:24:31 3200

原创 go 进阶 三方库之 go-resty

Resty 对象方法New() *Resty: 创建一个默认配置的 Resty 对象。NewWithClient(client *http.Client) *Resty: 创建一个自定义配置的 Resty 对象,并使用指定的 http.Client 客户端对象。R() *Request: 创建一个 Request 对象,并使用 Resty 对象的默认配置设置。SetDebug(on bool) *Resty: 设置是否启用调试模式。如果启用,则会在控制台输出详细的请求和响应信息。

2023-05-24 09:23:52 2109

原创 go 进阶 三方库之 EasJson 与标准库json

【代码】go 进阶 三方库之 EasJson 与标准库json。

2023-05-24 09:23:31 172

原创 十七. Kubernetes 网络和负载均衡

【代码】十七. Kubernetes 网络和负载均衡。

2023-05-23 11:30:38 76

原创 十八. Kubernetes Ingress

k8s 基于service对外暴露服务时主要有两种方式:NotePort, LoadBalance, 此外externalIPs也可以使各类service对外提供服务,但是当集群服务很多的时候,NodePort方式最大的缺点是会占用很多集群机器的端口;rules中配置拦截"test.com"域名,使用Prefix 前缀匹配拦截前缀为"/bbbbbc/"请求,将这个请求,路由到名为cluster-service的service上。

2023-05-23 11:29:45 119

原创 十六. Kubernetes 工作负载 之 StatefulSet

使用StatefulSet时,会给部署的pod添加索引,在指定为partition更新策略,更新时只会更新索引大于等于partition的pod。

2023-05-23 11:29:37 279 1

原创 十六. Kubernetes 工作负载 之 Job, CronJob

推荐与concurrencyPolicy配合使用, concurrencyPolicy设置为Allow,startingDeadlineSeconds设置一个较大的时间,进而保证至少有一个CronJob任务运行。

2023-05-23 11:28:50 76

原创 十四. Kubernetes 工作负载 之 Deployment

首先参考129节。

2023-05-23 11:28:35 140

原创 十三. Kubernetes 工作负载

目录一. k8s 工作负载基础解释一. k8s 工作负载基础解释官方文档什么是工作负载:首先工作负载是运行在k8s上的一个应用程序,并不是单指负载均衡使用k8s时一个服务运行在一个Container容器中,一个完整的应用可能需要多个服务容器部署运行,这多个服务容器可能运行在多个pod上,那么用来运行这个完整应用的一组pod,就可以称为一个工作负载工作负载的控制结构可以理解为: 一组pod组成一个完整的应用,一个工作负载控制这一组pod,一个pod中又控制一组容器,比如不是deploy部署

2023-05-23 11:28:12 372

原创 十二. Kubernetes Pod 与 探针

Pod 中的 paush还有一个小注意点: 每通过pod运行一个容器,底层除了运行这个实际应用容器以外,还会多运行一个paush容器,与部署的实际应用容器是成对出现的,通过这个paush容器来给当前应用容器设置网,pause容器的最主要的作用:创建共享的网络名称空间,以便于其它容器以平等的关系加入此网络名称空间例如设置网络名称空间等,但实际执行"kubectl get pod"或描述时是被屏蔽的,要执行"docker ps|grep pod名称"命令才能看到,如下图面试题1: 为什么一个pod中的

2023-05-23 11:27:45 599

原创 十五. Kubernetes 工作负载 之 DaemonSet

【代码】十五. Kubernetes 工作负载 之 DaemonSet。

2023-05-23 11:27:42 94

原创 go 进阶 sync相关: 七. sync.Map

sync.Map是一个支持并发安全的Map键值对映射表,提供了Store(key, value)插入,Load(key)获取,Delete(key)删除,Range()遍历等方法,了解底层首先要了解内部结构,内部包含了read属性,实际在操作时对应的是一个readOnly可以看为一个只读快照表,每个正在读取的 Goroutine 都会持有一个 readOnly 结构体。

2023-05-23 11:26:28 1844

原创 十一. Kubernetes 容器 container 设置详解

可以理解为通过初始化容器做准备工作,当准备工作完成以后,再去部署实际的应用容器。

2023-05-23 11:26:04 3513

原创 十. Kubernetes 核心配置文件与kubelet命令

根据静态非静态这个说法,k8s服务安装时用来运行核心组件的pod称为静态pod, 我们自己通过k8s运行的自己的服务pod称为动态pod。

2023-05-22 09:35:29 1116

原创 九. Kubernetes 标签与选择器

【代码】九. Kubernetes 标签与选择器。

2023-05-22 09:35:08 426

原创 八. Kubernetes 名称空间与隔离

【代码】八. Kubernetes 名称空间与隔离。

2023-05-22 09:34:11 394

原创 七. Kubernetes Objects对象,对象状态与yaml

apiVersion: 用来创建对象时所使用的KubernetesAPI版本。kind: 被创建对象的类型。

2023-05-22 09:33:47 116

原创 六. Kubernetes Dashboard UI 可视化界面

5. 文件下载完毕后,执行"kubectl apply -f recommended.ymal"部署应用即可。

2023-05-22 09:33:26 364

原创 四. Kubernetes Service

注意NodePort方式,端口是通过kubeProxy开在机器上的,使用"机器ip+暴露的指定端口"可以访问,使用"serviceIp+暴露的指定端口"是不可以访问的。在封装service中,externalIPs可以与任何类型的spec.type一块使用,指定哪些外部ip可以访问当前service,相当于创建了一个白名单。例如四个服务节点,升级服务时,会先基于新的镜像创建出两个新服务节点启动运行,同时会杀死一个旧服务,如果中间两个新服务启动失败,还会有三台旧服务对外提供服务。

2023-05-22 09:32:36 161

原创 五. Kubernetes 对象描述文件

【代码】五. Kubernetes 对象描述文件。

2023-05-22 09:31:55 101

原创 二. Kubernetes 安装

此时整个架构是docker上运行多个centos, 每个centos服务器之间内网互通,并且开放指定端口,每个centos上再安装docker环境,安装kubernetes,多个centos上的kubernetes组合成为一个集群。9. 注意执行上面命令时如果没有安装sudo命令可能会报sudo: command not found异常,先安装sudo。1.也可以参考docker安装文档。

2023-05-22 09:31:34 114

原创 三. Kubernetes 基础使用示例

不一定,因为再次拉起时,新创建出的pod很大概率不在原来的节点上,那么挂载宿主机的系统也有可能不是原来那个一。

2023-05-22 09:30:56 211

原创 一. Kubernetes基础原理相关

例如: 在物理服务器上运行多个应用程序,可能会出现一个应用程序占用大部分资源的情况,造成他应用程序的性能下降。一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展, 并且维护许多物理服务器的成本很高。具体参考【Docker隔离原理- namespace 6项隔离(资源隔离)与 cgroups 8项资源限制(资源限制)】主从同步/复制模式: 主节点与从节点保存数据一致例如mysql主从同步。主管理从模式: 通过主节点管理从节点。

2023-05-22 09:28:48 84

原创 服务监控 SpringBoot Actuator

目录一. SpringBoot Actuator 基础二. SpringBoot Actuator 基础actuator暴露的端点解释及设置SpringBoot 2.0版本与暴露端点注意点与配置自定义管理服务器地址配置管理特定SSLActuator 在 Spring Boot 1.X 和Spring Boot 2.X 的差异health 健康信息端点详解info 端点详解一. SpringBoot Actuator 基础SpringBoot Actuator是什么: 服务指标监控工具,可以实现对服务内

2023-05-16 10:49:50 985 1

原创 go validator数据校验示例

解释: 后端接收参数时通常需要对参数进行校验,例如验证某个数据是否为空,数据格式是否正确等,常见验证方式通过if,switch-case等流程语句进行验证,比较繁琐,可以通过validator框架进行验证参考别人写的博客参考上方博客创建的工具类package validatorimport ( "fmt" "github.com/go-playground/locales/zh" ut "github.com/go-playground/universal-translator" "g.

2023-05-16 10:48:10 223

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除