自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s 服务升级为啥 pod 会部署到我们不期望的节点上??看来你还不懂污点和容忍度

至此,通过上面的知识,我们解决了这样几个场景问题利用节点的亲缘性将 pod 指定部署到某些节点上,如果这样的节点不存在,那么也可以将他们的部署到别的节点上。利用 pod 亲缘性将交互比较频繁的一些服务应用尽可能部署到同一个节点上。利用 pod 的非亲缘性将 pod 分开调度到不同的节点上,更好的保证高可用。

2023-09-26 10:32:03 2

原创 【LFU】一文让你弄清 Redis LFU 页面置换算法

至此,咱们将 Redis 淘汰策略中的 LRU 和 LFU 页面置换算法的思想,演示,以及具体实现都聊了一下,如果有偏差, 还请提出,兄弟们不吝赐教哦感兴趣的,随时可以下载源码,在你的机器上运行哦,

2023-09-25 20:20:45 33

原创 【LRU】一文让你弄清 Redis LRU 页面置换算法

这下对于 Redis 的淘汰策略,心中有个数了吧对于 LRU的具体实现方式相信你可以可以很容易的看明白的,实践起来吧,源码地址为:https://github.com/qingconglaixueit/my_lru_lfu。

2023-09-24 19:01:18 30

原创 什么是单点登录?什么又是 OAuth2.0?

至此,相信你应该知道什么是单点登录,什么是 JWT ,什么是 OAuth2.0 协议了吧单点登录是一种思想JWT 是一种 Token 的形式OAuth2.0 协议是一种授权协议单点登录可以用OAuth2.0 协议来进行实现,实现 OAuth2.0 协议过程中,使用到的 Token 就可以使用JWT的方式来生成 Token。

2023-09-23 20:52:52 95

原创 什么是分布式锁?他解决了什么样的问题?

那么具体分布式锁到底是个啥玩意儿?🧐🧐他自然他也是锁,只不过是用于控制多进程之间并发的他是可以跨微服务,跨虚拟机的一种锁机制,上述的本地锁就完全做不到那么还是上述的例 2,我们就这样使用分布式锁来进行处理可以看到,使用分布式锁,和使用本地锁,其实思想都是一样的,都是为了控制程序的并发访问资源都是属于君子锁,作为君子访问资源之前,先去看看能不能拿到锁,不能坏了规矩,要是坏了这个规矩,那么程序运行就会出问题只不过本地锁是对应控制同一个进程内的多个线程并发而分布式锁是对于多个进程并发。

2023-09-22 21:02:02 272

原创 一文介绍使用 JIT 认证后实时同步用户更加优雅

首先本次说的入,一般用在什么样的场景呢?还记的上次我们说过关于第三方组织结构同步的功能实现,主要目的是将第三方源数据同步到内部平台中来,方便做管控和处理此处的管控有一部分是为了做此处内部平台和第三方 IDaaS 进行对接,一般会使用自然,关于身份认证相关的细节内容,不在本次文章中展现,在后续的文章中再来详细阐述,本次文章中接下来分别聊聊关于如下两种用户录入到内部平台的流程。

2023-09-21 22:25:25 76

原创 【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式

这篇文章主要是阐述将临时表中的用户组数据/用户数组,按照既定的步骤同步到我们的正式表,过程中遇到异常中断,可以对我们的正式平台无影响,

2023-09-20 22:24:47 67

原创 【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?

之前是自身的系统去和企微,钉钉这样的第三方认证源/同步源进行对接,耗时耗力现在是将这些工作全部由一个叫做 IDaaS 的模块来完成,可以说他也是一个第三方系统,只是集成了常用的一些第三方平台的认证源和同步源,专门的人做专门的事效率是最高的通过上述 3 个接口,配合使用上述说到的同步状态和同步步骤,目前为止,就可以将第三方组织结构的所有数据快速高效的放到 服务 B 的临时表中对于这些临时数据,如果出现了异常中断,那么若再次触发同步任务,我们清空临时数据,写入本次第三方组织结构数据即可。

2023-09-19 23:21:49 31

原创 坑爹,线上同步近 3w 个用户导致链路阻塞引入发的线上问题,你经历过吗?

整个业务架构比较复杂,我们简单的提出出问题的服务链路来进行阐述服务 A - 专门和第三方对接有一个服务 A是专门找第三方同步源读取第三方系统的用户组织结构,并转换成咱们平台自己的数据结构,将数据发送给 服务 B服务 B - 专门处理用户相关数据服务 B 专门处理关于用户组织结构数据的,处理完毕之后落盘,并将数据给到服务 C服务 C - 主要做数据转发服务 C 主要是做数据的通道,会将数据转发给到节点中的应用 D,因为 应用 D 和 服务 A 和 服务 B 没有办法直接通信应用 D,处理处理实际的流量即管控。

2023-09-17 08:18:45 39

原创 你已经应用了哪种服务注册和发现的模式呢?

前面历史文章中我们有说过关于微服务的注册和发现,并以 etcd 作为简单例子简单阐述了关于服务注册和发现的应用。

2023-09-16 22:01:57 59

原创 如何从主机环境演变到云原生开发模式?

哪怕,此时有个 lisi 来环境上部署自己的的。

2023-09-15 21:17:57 352

原创 Golang 单元测试合集整理,(我最常用 gomonkey)欢迎收藏

无论写什么样的语言,,它可以极大的提高我们的代码质量,减少各种低级错误和 bug无论你是一个靠谱合格的码农,,单元测试都是咱们必须落实的一环单元测试比较容易,此处梳理了了基本的单元测试用到的方式和第三方库的使用方式,用到的时候,

2023-09-13 21:00:13 50

原创 我是如何用 redis 分布式锁来解决线上历史业务问题的

当然,实际情况对于单条单条的消息处理基本不会出现这种偏差,但是在批量处理的时候,就会出现实际业务处理顺序与期望不一致的情况,那么就是妥妥的线上问题了(小 d 上网的时候想看视频,可是一直看不了,于是就疯狂投诉。。。

2023-09-11 22:28:07 347

原创 golang validator 包的使用指北

当然,如果认为官方提供的支持的标识还不能满足我们的要求,那么我们也是可以自定义咱们的标识的,例如,咱们要定义的标识是happyhead含义就是,咱们定义的字符串,必须是以 happy 开头的,否则就校验不通过此时咱们就需要使用到 validator 包中的方法,再按照这个方法,提供一个校验实际参数的回调函数即可:我们就可以这样来写至此,咱们将 validator 包中的特殊约束,格式约束,错误处理,范围约束,字符串约束,以及自定义约束都简单过了一下,

2023-09-10 09:24:40 263

原创 golang flag 包的使用指北

实际上 golang 的 flag 包是用于处理命令行参数的工具包,我们可以基于这个包来开发自定义的命令行工具对于命令行,相信大家都不陌生吧,学过 C 的就知道,如下代码是否很熟悉。

2023-09-09 21:06:26 265

原创 为什么需要 TIME_WAIT 状态

再来看第二点其实上面我们隐约已经说到了这一点,只不过不是 ack 包,再使用一下上面的图,我们人为的弄一个异常情况如上图,当我们的 TIME_WAIT 状态不存在,或者设置的时间较小的时候,就可能会发生被动关闭的一方,收不到最后的一个 ack 包的情况一条 tcp 连接的四元组现在我们知道是啥意思了,那么,当上述 server 对应的连接还未是 CLOSED 状态的时候,server 是认为当前连接还是存在的但是client 自身已经是 CLOSED 状态了。

2023-09-08 21:24:49 580

原创 为什么服务端会有那么多的 TimeWait ?

工作中无论是开发环境还是线上环境,我们都出现过大量的 timewait 状态的连接,例如下面这个例子瞬间就可以看到咱们服务端的出现大量的状态的连接这个时候,如果客户端再不停的请求服务端的话,我们就可以看到会出现这样的一个错误这个时候是表示咱们已经没有可以使用的端口, 地址都在被使用中那我们来看一下为什么会出现上述这种情况,以及我们如何去解决他呢?

2023-09-07 22:49:55 49

原创 简单理解微服务限流、降级、熔断

通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理,限流是从整体系统上去进行考虑的最近国庆了,很多人都会去坐火车,坐高铁,咱们排队过安检的时候,我们可以看到保安会隔一会放 10 个人进去,过一会又放一些人进去,一直维持着里面只能有 10个人在进行安全检查那么这 10 个数字,就相当于是服务进行的限流,只要一达到 10 人以上的请求,那么就会服务拒绝,当有空余的时候,才会处理新来的请求,这个应该就不难理解了吧固定时间窗口控制。

2023-09-06 09:08:58 549

原创 线上 udp 客户端请求服务端客户端句柄泄漏问题

那么对于连接池,我们实际上是可以自己来进行造轮子的,仅用于学习,实际使用的话,自然还是会去使用经过大众考研过的公共开源库,我们可以来基本的分析和研究一下一个连接池需要有些什么?创建池子,关闭池子,池子的关闭状态从池子中获取连接,归还连接,销毁当前连接池子中能容纳的最大连接数,最小连接数,当前连接数根据当前实际的连接数来对池子进行扩容和缩容池子中创建连接的函数具体实现当然,我们自己来体会一下连接池以及演示上述 udp 的 demo,我们仅实现如下几个简单功能作为演示创建池子,池子的关闭状态。

2023-09-05 23:31:56 421

原创 如何将自己的镜像使用 helm 部署

Helm 是 Kubernetes 的包管理器,在云原生领域用于应用打包和分发Helm Chart 包含了 Docker 镜像以及其在 k8s 中的基础设施配置,例如 service,deployment 等等,helm 可以把 k8s 的应用进行完成封装,发布给任意一个其他的 k8s 环境使用可以查看 helm 文档地址:https://helm.sh/zh/docs/

2023-09-03 20:57:49 94

原创 go-zero jwt 鉴权快速实战

JWT身份认证(附带源码讲解) | GO主题月那么我们如何识别什么时候需要使用jwt呢?用于授权例如某个系统通过例如账号密码登录之后,后台会生成一个 jwt,这个用户在这个系统之后的任何操作,都会去校验这个 jwt,就不需要用户操作系统内其他模块的时候,还去进行一次登录当然,这是需要我们做好设定,这个jwt针对哪一些路由可以使用,从而允许用户访问该令牌允许的路由,服务和资源用于信息交换。

2023-09-02 22:15:38 666 3

原创 gRPC-GateWay Swagger 实战

上一次我们分享了关于 gRPC-Gateway 快速实战 ,可以查看地址来进行回顾 :今天主要是分享关于。

2023-09-01 18:20:18 813

原创 gRPC-Gateway 快速实战

如下是官网的一张基本原理图gRPC-Gateway 是一个协议插件,它读取一个 gRPC 服务定义,并生成一个反向代理服务它将一个 RESTful JSON API 转换为 gRPC,这个服务器是根据gRPC定义中的自定义选项生成的。能够提供 RESTful JSON API 接口,并且请求通过 http 接口打进来,gRPC-Gateway 能够将其请求转给 grpc 服务,最终 grpc 服务进行处理并响应。

2023-08-31 22:16:59 921

原创 兄弟 Goland 咱能一次性将注释设置好不

大家好,我是工作中我们都只是写注释是一个好习惯,作为新生代的农名工,特别烦的就是别人不写注释,但是自己偏偏又不喜欢写注释😂😂😂对于 golang 的注释,我发现很多新朋友总是自己去写注释,这没毛病但是咱们没必要所有注释都自己写,这耗时耗力,明明有工具可以提高我们的效率,

2023-08-30 21:48:30 80

原创 工作中你会使用到 grpcurl 吗?

在平时的开发过程中,我们一般是相信对于如何去请求 http 接口,大家都很熟悉了。

2023-08-29 22:13:26 47

原创 Linux(centos) 下 Mysql 环境安装

linux 下进行环境安装相对比较简单,,我们来梳理一波。

2023-08-28 22:11:48 338

原创 都在还说链路跟踪,那么 go-zero 的链路跟踪是咋样的?

工作中,自然少不了开发去排查问题,那如果链路比较长,客户端一个请求打进来,可能内部微服务进行了多个服务的交互,可能开发的时候或多或少会加入自己的一些表示,当然比较 low 的一种方式是,在微服务交互的请求和相应中加上 requuid 字段,这个应该也是从单体服务过度到微服务开发时特别容易出现的情况实际上做链路跟踪,简单的方式就是在各种请求的上下文加上 traceid 就可以了,分别从如下几个部分来看看 go-zero 中应用链路跟踪。

2023-08-27 23:31:51 29

原创 微服务框架 go-zero logx 日志组件剖析

Logx 自定义存储日志位置 和 实现自定义接口的方式其实我在这里就不需要过多的解释了,简单说明一下实现手段就可以了,有必要的话咱们可以查看 go-zero 官方文档 https://go-zero.dev/cn/docs/component/logx/对于咱们需要修改日志的输出位置,实际上我们可以仔细思考一下,对于日志的数据,go-zero 还是使用的 golangio包中的 Writer 接口咱们只需要定义对象,去实现Writer 接口 中的方法就可以了。

2023-08-26 23:22:49 437

原创 微服务框架 go-zero 快速实战

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 中的 api,rpc,数据库等涉及的代码,都可以给我们一键生成,无需耗费我们什么精力只需要在生成的代码中填入自己的配置以及逻辑即可,轻松获得支撑千万日活服务的稳定性内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码微服务治理中间件可无缝集成到其它现有框架使用极简的 API 描述,一键生成各端代码。

2023-08-25 21:51:20 630

原创 缓存的设计方式

当有大量的请求到内部系统时,若每一个请求都需要我们操作数据库,例如查询操作,那么对于那种数据基本不怎么变动的数据来说,尤其是对于在海量数据中进行数据操作的时候,如果都是从 DB 中进行加载,那这是在挑战用户的耐性简单来看,例如我们要去小区里面了解一个人在不在家,当没有通讯工具的前提下,我们每一次都要经过小区们的保安,如果我们换了一个比较优秀的保安,他知道当前小区里面的特定的家里面是否有人,那这个时候,可以看出,有一个优秀的保安相当重要。

2023-08-24 22:30:22 1812

原创 谈谈对 GMP 的简单认识

犹记得最开始学习 golang 的时候,大佬们分享 GMP 模型的时候,总感觉云里雾里,听了半天,并没有一个很清晰的概念,不知 xmd 是否会有这样的体会虽然 golang 入门很简单,但是对于理解 golang 的设计思想和原理,还是需要一定时间的积累和沉淀,文章分别从一下三个方面来谈谈我对 GMP 模型认识。

2023-08-23 20:46:19 323

原创 gRPC 客户端调用服务端需要连接池吗?

Get()获取一个新的连接 , 当关闭连接的时候,会将该连接放入到池子中Close()关闭连接池,自然连接池子中的连接也不再可用关于 pool 结构的定义 ,conn 结构的定义建议,将上述 github 地址上的源码下载下来进行阅读,下面主要是分享关于连接池子的创建,扩缩容,释放具体 TCP 连接的创建和释放。

2023-08-21 22:50:53 101

原创 redis 存储结构原理 2

我正在参与,点击了解活动详情,一起学习吧!咱们接着上一部分来进行分享,我们可以在如下地址下载此处我下载的是版本的,xdm 可以直接下载上图中的 **redis-6.2.6 **版本,

2023-08-19 20:15:28 621

原创 redis 存储结构原理 1

关于 redis 相信大家都不陌生了,之前有从 0 -1 分享过 redis 的基本使用方式,用起来倒是都没有啥问题了,不过还是那句话,今天我们来分享一下关于。

2023-08-18 21:15:25 327

原创 k8s 认证和权限控制

可以得到 namespace,secret.name,service-account.name,service-account.uid 等信息 ,ServiceAccount 相当重要,之前我们说到过访问 pod 元数据的时候,就提到过 ServiceAccount**,以及相应的挂载文件:**文件来进行身份认证的,这是代表了运行的 pod 中的应用程序的身份证明,技术是开放的,我们的心态,更应是开放的。,并且,我们需要清楚,这些都是得再同一个命名空间下的,我们解码后,可以看到具体的信息。

2023-08-17 22:42:31 660

原创 k8s 自身原理之高可用

那么前面分享了那么多的关于 k8s 自身组件的原理,这一切的一切,咱们在主机环境都是需要耗费很大的人力成本去做的事情,因而,最终才会选择服务部署在 k8s 上面,

2023-08-16 20:59:22 620

原创 k8s 自身原理之 Service

好不容易,终于来到 k8s 自身的原理之的一部分了前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的,且通信的数据包是不会经过的。

2023-08-15 22:49:52 498

原创 k8s 自身原理 5

我们知道容器是通过 pod 来承载的,我们在 k8s 中,服务都是跑在 pod 里面的,pod 里面可以跑 1 个容器,或者跑多个容器,

2023-08-14 22:29:22 289

原创 k8s 自身原理 4

前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧etcd 存储资源配置,ApiServer 提供 RESTful Api 用于交互,scheduler 用于调度 pod,controller manager 控制器管理器kubelet 管理 节点上的所有组件和内容,kube-proxy,作为代理将数据给到 pod。

2023-08-13 20:59:31 530

原创 k8s 自身原理 3

前面有分享到 master 主节点上的 四个组件,etcd,ApiServer,scheduler,controller manager接下来我们分享一波 woker 节点上的组件,xdm 还记得?前面多多少少说了一些,但是 kubectl 具体是做啥的呢?

2023-08-11 21:01:21 767

空空如也

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

TA关注的人

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