自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python virtualenv

保存文件并关闭当前的终端窗口,然后重新打开一个新的终端窗口以使更改生效。初始化添加到您的 shell 配置文件(例如。命令来创建和管理虚拟环境。请根据您的需求使用这些命令。轻松管理 Python 虚拟环境。对于 Bash 用户,在。对于 Zsh 用户,在。安装完成后,您需要将。

2023-11-26 13:10:14 120

原创 设计从表开始

聊天系统、评论系统、邮箱系统、微博系统

2023-07-25 22:30:24 192

原创 go中尽量不使用全局变量

在Go中,全局变量的使用存在安全隐患,因为全局变量可能会被多个线程并发访问和修改,这样就会导致数据的不一致性或者出现竞态条件。这些问题可能会导致程序运行时崩溃或者产生无法预测的结果。另外,全局变量还会破坏代码的可读性和可维护性,尤其是当项目变得越来越大和复杂时,全局变量的使用会使代码更难以理解和调试。因此,建议尽可能地避免使用全局变量,而是使用函数参数、局部变量或者结构体成员等方式来实现对数据的共享和管理。总之,虽然全局变量可能很方便,但是如果不注意安全和代码的可维护性,可能会给程序带来很多麻烦。

2023-05-23 22:07:59 624

原创 k8s核心目录

目录是 Kubernetes 集群的主要配置目录,包含了一系列 Kubernetes 组件和插件的配置文件和密钥文件。admin.conf:kubeconfig 文件,用于与 Kubernetes 集群进行交互。默认情况下,该文件包含管理员用户的凭证和集群信息。:kubeconfig 文件,用于控制器管理器组件连接到 Kubernetes API 服务器,以便执行控制器任务。:kubeconfig 文件,用于 kubelet 组件连接到 Kubernetes API 服务器,以获取 Pod 清单并启动容器。

2023-05-15 09:02:51 993 1

原创 k8s安全学习路线

【代码】k8s安全学习路线。

2023-05-07 11:19:36 69

原创 k8s学习第21天--apiversion

Kubernetes API 版本的主要作用是允许 Kubernetes 集群中的不同组件和工具使用不同版本的 Kubernetes API 对象。这种解耦设计可以提高 Kubernetes 的灵活性、可扩展性和兼容性,使得用户可以根据自己的需要选择合适的 API 版本来管理 Kubernetes 资源。具体来说,API 版本有以下几个重要的作用:标识 Kubernetes API 对象的版本号,方便用户和开发者识别和区分不同版本的 Kubernetes API 对象。

2023-05-06 18:29:14 602

原创 k8s学习第20天--service account

在 Kubernetes 中,Service Account 是一种用于在 Pod 内运行的特殊用户身份。每个 Service Account 都会分配一个唯一的名称和一个对应的 API 对象。使用 Service Account 可以轻松管理 Pod 的身份验证和授权问题。在默认情况下,Kubernetes 会为每个 Namespace 分配一个默认的 Service Account,使得所有在该 Namespace 内创建的 Pod 都可以自动使用该 Service Account 进行身份验证。

2023-05-04 15:40:23 174

原创 k8s学习第19天--证书认证

Kubernetes (k8s) 提供了多种用于认证管理的机制,这些机制可以确保只有经过授权的用户和服务能够访问Kubernetes集群。以下是Kubernetes中常用的一些认证管理机制:证书认证:通过使用X.509证书来进行身份验证和授权。Kubernetes集群必须配置CA证书颁发机构,以便在证书过期之前对颁发的证书进行撤销并更新。Token认证:在Kubernetes API服务器上创建一个持久令牌,该令牌可用于访问API服务器。

2023-05-04 15:22:37 795

原创 k8s学习第18天

我们看到了--config参数配置的路径,打开这个路径可以配相关启动参数,然后重启。

2023-04-28 16:58:35 42

原创 k8s学习第17天

kubernetes API Server 最主要的 REST 接口是对资源对象执行 CRUD 操作的接口,但是它还有一类很特殊的 REST 接口 -- Kubernetes Proxy API 接口,这类接口的作用是代理 REST 请求,即 kubernetes API Server 把收到的 REST 请求转发到某个 Node 节点上的 kubelet 守护进程的 REST 端口,由该 kubelet 进程负责响应。通过 Pod proxy 接口,我们可以访问 Pod 里面某个容器提供的服务。

2023-04-28 16:36:50 50

原创 k8s学习第16天

Api Server的核心功能是提供k8s各类资源对象的增删改查以及watch等http rest 接口,相当于集群内各个功能模块直接数据交互和通信的中心枢纽,,是整个系统的数据总线和数据中心。除此之外,他还是集群管理的API入口,是资源配额控制的入口,提供完备的集群安全机制。使用kubectl和 api server交互,并使用curl工具验证。

2023-04-27 17:29:57 37

原创 k8s学习第15天

外部的集群:数据库、缓存服务等其他k8s集群的某个服务---metadata:spec:ports:port: 80---#把外面的服务包装成一个endpointmetadata:#配置外面的访问IP和端口subsets:- address:ports:- port: 80。

2023-04-25 17:31:44 38

原创 k8s学习第14天

Service的多端口设置。

2023-04-25 17:18:24 28

原创 k8s学习第13天

service同过sessionAffinity实现基于客户端IP的回话保持机制,首次讲某个客户端来源IP发起的请求转发到后端的某个pod上,之后相同的客户端IP发起的请求都会转发到相同的Pod上,下面我们配置一下

2023-04-25 17:12:07 39

原创 k8s学习第12天

如果pod列表出现变化,则k8s会实时更新service对应的后端pod列表。一个service对应的后端由pod和IP和容器端口号组成,即一个完整的IP:PORT访问地址,这在k8s中叫Endpoint。Service的主要功能用提供服务网格功能,通过service能够为客户端应用提供稳定的访问地址和负载均衡能力,以及屏蔽后端Endpoint的变化,是k8s实现微服务的核心资源。实际上,k8s会自动创建service和Endpoint资源对象的关联关系,通过一下命令查看。启动了两个tomcat副本。

2023-04-25 16:58:23 45

原创 k8s学习第11天

Service的参数的详细定义。

2023-04-24 19:15:45 56

原创 k8s学习第10天--Pod的扩缩容

查看现在的副本数量把副本数量更新到5个查看现在的副本数量把副本数减少到1个查看现在的副本数量。

2023-04-24 19:01:07 68

原创 k8s学习第9天

k8s使用默认使用的升级策略为Recreate(重建)和RollingUpdate(滚动更新),默认值为RollingUpdate,在Deployment定义中,可以通过spec.strategy指定pod的更新策略,: spec.strategy=Recreate, 表示在更新pod时候,会先杀掉所有正在运行的pod,然后创建新的pod。

2023-04-23 15:24:08 150

原创 k8s学习pod第七天

初始化容器是一类只运行一次的容器,本质是也是容器,不同容器间启动有先后顺序,只有前面的容器运行成功了,后面的容器才能运行已上配置文件,首先要运行一个busybox,并且下载一个文件到/work-dir中,然后启动nginx容器,在/usr/share/nginx/html中就有了文件index.html可见先启动了buysbox,然后又启动了nginx容器。

2023-04-21 18:34:14 80

原创 k8s学习pod第六天

可见,能看到定时任务大的Schedule, suspend代表是否挂起,目前是false,Last Schedule是执行的时间,多次刷新后,可看到执行了多次。发现没有这个资源,这是因为对应的pod执行完定时任务小时了,我们需要在执行下 get pod。从1.5版本开始增加的类型,类似linux cron的定时任务。查看pod hello-28033163-hbrcq的描述。

2023-04-20 19:41:05 42

原创 中间件管理器

中间件管理器,用于维护中间件函数链的顺序、组合方式、执行顺序等信息,提供中间件注册、注销、调用等功能。函数用于将中间件函数链应用到最终的HTTP请求处理器中,生成最终处理HTTP请求的函数。函数用于向中间件管理器中注册一个中间件函数,函数用于从中间件管理器中注销一个中间件函数,函数用于创建一个新的中间件管理器实例,切片,用于存储中间件函数链。

2023-04-20 00:15:00 69

原创 错误处理函数

一个HTTP框架的错误处理函数可以通过定义一个中间件来实现。这个中间件的作用是在中间件链的最后,如果之前的中间件链有出现错误,就捕获这些错误并统一处理成HTTP错误响应,然后返回给客户端。语句来捕获 panic,并将错误信息格式化后,以 HTTP 错误响应的形式返回给客户端。在中间件链中,我们可以将这个中间件放在最后,这样如果之前的中间件链有出现错误,就会被。如果没有出现错误,那么就会顺利地返回响应给客户端。在这个函数中,我们使用。在这个实现中,我们定义了一个。方法,这个方法返回一个。

2023-04-19 00:15:00 48

原创 k8s学习pod第五天

下面我们定义了在每个Node上启动一个fluentd容器,其中挂载了物理机两个目录 /var/log和/var/lib/docker/containers,要在物理机新建/var/log/nginx目录。用于在集群中每个Node上只运行一份pod的副本实例,比如日志收集进程、节点监控程序。我这里有两个Node,只启动了一个,一会查查。常看damonset。

2023-04-18 16:06:26 37

原创 redis watch应用---购物车

如果库存充足,则使用MULTI命令开启一个事务,将商品库存减少购买数量,并执行事务。在执行事务之前,Redis会再次检查商品的库存是否发生变化,如果库存数量发生了变化,则事务执行失败。在以上示例中,我们首先使用WATCH命令监视商品库存,然后读取商品库存,并检查库存是否充足。如果库存不足,则使用UNWATCH命令解除监视,并返回“库存不足”错误。如果事务执行成功,则返回“购买成功”信息,否则重新开始循环,重新进行监视和检查。

2023-04-17 14:03:53 51

原创 redis watch应用---限流

如果请求计数未超过限制,则使用MULTI命令开启一个事务,将请求计数增加1,并执行事务。在执行事务之前,Redis会再次检查请求计数是否发生变化,如果请求计数发生了变化,则事务执行失败。在以上示例中,我们首先使用WATCH命令监视请求计数的键,然后读取请求计数的值,并检查它是否超过限制。如果请求计数超过限制,则使用UNWATCH命令解除监视,并返回false。如果事务执行成功,则返回true,表示请求计数增加成功,否则重新开始循环,重新进行监视和检查。

2023-04-17 14:01:30 58

原创 redis watch应用---分布式锁

在释放锁时,我们使用WATCH命令监视锁键,避免并发修改锁键。我们首先读取锁键的值,并检查它是否匹配锁值。如果匹配,则使用DEL命令删除锁键。最后,我们使用UNWATCH命令解除监视,并释放连接。在以上示例中,我们首先使用SET命令尝试设置锁键,如果设置成功,则返回锁值。如果锁键已经存在,则使用TTL命令获取锁的过期时间,并在锁已经过期的情况下尝试重新设置锁键。

2023-04-17 13:59:04 106

原创 处理函数模块-验证器

请求进行安全验证,包括验证请求头、请求体格式、URL路径等是否符合要求,还需要验证请求参数的合法性,比如是否缺少必须的参数,参数类型是否符合要求,对请求的访问权限进行验证,以确保请求的合法性。

2023-04-14 10:19:04 37

原创 解析器封装请求

封装请求解析,包括处理HTTP请求报文,解析出请求方法、请求头、请求体、URL路径等信息,以适用GET/POST等各种请求。

2023-04-14 09:56:34 30

原创 中间件处理器

中间件处理器最好使用责任链模式(Chain of Responsibility Pattern)实现。责任链模式可以将请求和处理分离,每个处理器都可以对请求进行处理,或者将请求传递给下一个处理器进行处理,形成一个处理器链。当请求被传递到最后一个处理器时,处理器链结束,返回处理结果。在实现中,中间件处理器可以看作是责任链中的处理器,每个中间件可以对请求进行处理或者将请求传递给下一个中间件处理器。整个中间件处理器链可以看作是一个责任链。

2023-04-13 22:37:20 50

原创 中间件实现

在 middleware 函数中,从 sync.Pool 中获取一个 Context 对象,并在上下文对象中添加需要传递给 handler 的数据。调用 next.ServeHTTP 方法执行下一个处理器。在 handlerFunc 函数中,从上下文对象中获取需要的数据并进行处理。处理完成后,调用 ctx.Release() 方法释放上下文对象,以便复用。实现一个并发安全、高性能的中间件,可以使用 sync.Pool 来避免频繁的内存分配和垃圾回收,以提高性能。

2023-04-13 22:30:29 50

原创 HTTP框架的中间件

中间件函数(Middleware):一个或多个处理HTTP请求和响应的函数,被组合成一个函数链,处理HTTP请求前和响应后进行一些额外的操作,例如校验身份、请求参数校验、日志记录、统一错误处理等等。上下文(Context):保存HTTP请求的上下文信息,例如请求方法、请求路径、请求参数、请求头等信息,以及处理过程中生成的一些中间状态和结果,供后续的中间件和处理器使用。处理器(Handler):最终处理HTTP请求的函数,也可以是一个组合的中间件函数链,根据上下文信息进行一系列的业务处理,并生成响应数据。

2023-04-13 22:20:46 107

原创 路由表正则实现

实现一个并发安全且高性能的正则路由表可以使用 Radix Tree 和 Aho-Corasick 算法,这里使用开源的httprouter实现,该库使用Radix树算法来匹配路由,并支持路由参数和正则表达式。在上面的示例中,我们使用httprouter来创建一个路由器,并注册了两个路由,一个GET方法路由和一个POST方法路由。在路由处理函数中,我们可以使用httprouter提供的Params参数来获取路由参数。

2023-04-13 22:14:55 46

原创 路由表Trie树实现

假设我们已经定义好了一个。然后可以通过以下方式调用。,可以通过以下方式调用。

2023-04-13 22:10:42 110

原创 路由表的实现方式

路由表的作用是存储所有支持的路由及其对应的处理器函数,并提供路由匹配功能,以便能够快速查找和匹配路由。基于正则表达式的路由表:这种方式使用正则表达式来匹配路由路径,可以实现灵活的路由匹配,但正则表达式的匹配效率较低,同时也比较难以维护和调试。基于有限状态机(FSM)的路由表:这种方式使用有限状态机来匹配路由路径,可以实现高效的路由匹配和支持动态添加和删除路由,但实现较为复杂。数组或哈希表:可以使用数组或哈希表来存储路由信息,这种方法简单直接,但查找和匹配的性能较低,适合小型框架或路由数量较少的场景。

2023-04-13 21:14:30 337

原创 路由表map实现

使用数组实现的简单路由模块的示例代码,包括路由注册和匹配功能。时,将会匹配到注册的路由,并执行对应的处理函数输出。对象,并注册了一个路由信息,即GET方法的路径为。在上面的示例中,我们创建了一个。的路由,处理函数为输出请求中的。当我们启动应用程序并访问。

2023-04-13 21:11:44 54

原创 k8s学习pod第四天

【代码】k8s学习pod第三天。

2023-04-13 17:09:43 33

原创 k8s学习pod第三天

创建之后,使用kubectl get pods -s wide 命令可以看到,这个两个pod在同一个Node上运行,如果删除这个节点的kubernetes.io/hostname 标签,创建后,会发现pod一只处于pending状态,这是因为找不不到满足条件的Node了。这个新pod和security=S1的pod 为同一个zone,但是不与app=nginx的poad为同一个Node,创建Pod之后,会看到新的pod会被调用到同一个zone的Node上。3、pod互斥性调度。

2023-04-13 17:06:27 60

原创 chatgpt训练case

【代码】chatgpt训练case。

2023-04-13 10:40:52 155

原创 k8s学习pod第三天

可通过三种探针,LIvenessProbe,ReadinessProbe和StartupProbe。

2023-04-11 17:09:32 32

原创 k8s学习pod第二天

容器内获取pod信息,k8s在成功创建pod之后,会为pod和容器设置一些额外的信息,例如Pod级别的Pod的名称,Pod IP、Node IP、Label、Annotaitons、容器级别的资源限制等。在很多场景下,这些信息对容器内的应用来说,都很有用,如使用Pod名称做为日志记录的一个字段用于标识日志来源。为了在容器内获取pod级别的这些信息,k8s提供了Downward API的机制来将PodHe容器的某些元数据信息注入容器中,供容器使用。

2023-04-10 15:52:20 113

空空如也

空空如也

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

TA关注的人

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