自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 查询日期数据区间按天拆分查询优化

行驶数据查询和导出优化:Ymatrix查询一天数据会很快在1秒内,区间查询时间超过7天效率会下降到7秒+。所以在区间日期查询行驶数据时做优化,将区间日期拆分为一天去查ymatrix提升查询效率。执行时间拆分如下 、 并发查询每一条时间总条数据(查询效率500ms以内)计算页码归属日期条件。

2023-12-15 13:38:20 997

转载 kubectl 创建 Pod 背后到底发生了什么?

Kubernetes是用来管理容器集群的平台。既然是管理集群,那么就存在被管理节点,针对每个Kubernetes集群都由一个Master负责管理和控制集群节点。我们通过Master对每个节点Node发送命令。简单来说,Master就是管理者,Node就是被管理者。Node可以是一台机器或者一台虚拟机。在Node上面可以运行多个Pod,Pod是Kubernetes管理的最小单位,同时每个Pod可以包含多个容器(Docker)......

2022-07-22 13:33:15 211

转载 Kubernetes Service 负载均衡实现机制

KubernetesSerivce是一组具有相同labelPod集合的抽象(可以简单的理解为集群内的LB),集群内外的各个服务可以通过Service进行互相通信。

2022-07-20 17:28:23 643

转载 kubelet工作原理

kubelet是运行在每个节点上的主要的“节点代理”,每个节点都会启动kubelet进程

2022-07-20 17:21:34 1546

转载 kube-Controller Manager 原理

ControllerManager作为集群内部的管理控制中心,负责集群内Node、Pod副本、服务端Endpoint、服务账号(ServiceAccount)、命名空间(Namespace)、资源定额(Resoucequota)等的管理,当某一个节点宕机时,controllermanager会及时发现故障并执行自动化修复流程,确保集群始终处于预期的工作状态。...

2022-07-20 17:17:34 1732

转载 kube-proxy 工作原理

kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现KubernetesService的通信与负载均衡机制的重要组件;kube-proxy负责为Pod创建代理服务,从apiserver获取所有server信息,并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络。kube-proxy有三种模式userspace、iptables和IPVS,其中userspace模式不太常用。...

2022-07-20 17:09:36 2050

转载 kube-scheduler工作原理

Kube-scheduler调度概述Kubemetes Scheduler 在整个系统中承担了承上启下的重要功能,承上是指它负责接收Controller Manager 创建的新Pod,为其安排一个落脚的家(目标 Node);启下是指安置工作完成后,目标 Node 上的 kubelet 服务进程接管后继工作,负责 Pod 生命周期中的下半生。具体来说,Kubernetes Scheduler的作用是将待调度的Pod按照特定的调度算法和调度策略绑定到集群的某个合适的Node上,并将绑定信息存储到etc

2022-05-27 16:40:07 325

转载 kube-apiserver功能特性

apiserver 提供了对各类资源对象,如 Pod、Service、Deployment、CRD 等的增删改查,以及 Watch 的 API 接口,是整个集群的操作入口。kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更等 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)kube

2022-05-27 16:35:02 3103

转载 Kubernates架构组件

​Kubernetes是利用共享网络将多个物理机或者虚拟机组成一个集群,在各个服务器之间进行通信,Kubernetes采用的是常见的主从架构,每一个 Kubernetes 集群都由一组 Master 节点和一系列的 Node节点组成。Master:是集群的网关和中枢枢纽,主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster。N

2022-05-27 15:57:14 111

转载 什么是 Kubernetes

Kubernetes 是一个开源容器编排平台,可自动部署、管理和扩展应用,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。Kubernates使开发者可以自主部署应用,并且控制部署的频率,完全脱离运维团队的帮助。Kubernates同时能够让运维团队监控整个系统,并且在硬件故障时重新调度应用。我们可以将多台主机组合成集群来运行 容器,而 Kubernetes 可以帮助我们简单高效地管理那些集群。容器是打包和运行应用程序的好方式。在生产环境中,你需要管理运行应用程序的容器,并确保不会停机。 例如

2022-05-27 15:43:02 148

转载 Docker Swarm 介绍和工作原理

什么是Docker SwarmDocker Swarm是Docker公司推出的用来管理Docker集群的平台,Swarm是容器集群管理工具,可以统一管理分布在不同主机的多个容器,相比起Kubenetes,Docker Swarm无需额外安装。下面这个图,就可以看到docker swarm管理docker的一个架构图。以前使用docker命令行是针对docker主机的,然后到这台机器上单独的控制这台机器上的主机,有了swarm之后,客户端命令是针对docker集群的。它的命令几乎等同于docker的原

2022-05-27 14:57:45 880

转载 Docker Compose详解

问题我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知介绍Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

2022-05-27 14:45:36 820

原创 项目使用mybatis-plus采用mysql/clickhouse多数据库配置,报错Invalid bound statement (not found)

当前使用版本(必填,否则不予处理)com.baomidou mybatis-plus-boot-starter 3.4.2 com.baomidou mybatis-plus-extension 3.4.2 com.baomidou dynamic-datasource-spring-boot-starter 3.1.0该问题是如何引起的?(确定最新版也有问题再提!!!)mybatis plus是否支持多数据库类型,我现在同一个项目想支持mysql/clickhouse数据库。我通过mybat

2022-05-24 16:41:46 1271

转载 Docker镜像存储原理

Docker 是如何构建并且存储镜像的Docker 中的每一个镜像都是由一系列只读的层组成的,Dockerfile 中的每一个命令都会在已有的只读层上创建一个新的层:FROM ubuntu:15.04COPY . /appRUN make /appCMD python /app/app.pyDocker容器中的每一层都只对当前容器进行了非常小的修改,上述的 Dockerfile 文件会构建一个拥有四层 layer 的镜像:当镜像被docker run命令创建时就会在...

2022-05-07 13:39:01 632

转载 Docker网络-bridge/host/container/none模式

bridge模式bridge 模式下,Docker Daemon 会创建出一个名为 docker0 的虚拟网桥,用来连接宿主机与容器,或者连接不同的容器,Docker 利用 veth pair技术,在宿主机上创建了两个虚拟网络接口 veth0 和 veth1(veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会无条件地传输给另一方)。Bridge桥接模式的实现步骤主要如下:1. Docker Daemon利用veth pair技术,在宿主机上创建两个虚拟网络接口..

2022-05-07 10:06:45 802

转载 Linux虚拟网络设备(bridge & veth pair)

veth pairveth pair 全称是 Virtual Ethernet Pair,是一个成对的端口,所有从这对端口一 端进入的数据包都将从另一端出来,反之也是一样。引入 veth pair 是为了在不同的 Network Namespace 直接进行通信,利用它可以直接将两个 Network Namespace 连接起来。用户可以使用ip link命令增加veth pair设备,下面的范例中该veth pair设备的两个网卡为veth20和veth21:ip link.

2022-05-07 09:50:41 2670 1

转载 docker底层基石 Linux CGroup

CGroups介绍在一个容器,如果不对其做任何资源限制,则宿主机会允许其占用无限大的内存空间,有时候会因为代码bug程序会一直申请内存,直到把宿主机内存占完,为了避免此类的问题出现,宿主机有必要对容器进行资源分配限制,比如CPU、内存,Linux Cgroups 全称是 Linux Control Group,主要的作用就是限制进程组使用的资源上限,包括 CPU,内存,磁盘,网络带宽。Docker引入了Linux cgroup来控制进程资源,让进程更可控cgroups 提供以下四个功能:资源限制

2022-05-07 09:37:17 270

转载 Docker底层技术-Namespace

Namespace是对全局系统资源的一种封装隔离,使得处于不同Namespace的进程拥有独立的全局系统资源,改变一个Namespace中的系统资源只会影响当前Namespace里的进程,对其他Namespace中的进程没有影响。Namespace 是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。在日常使用 Linux 时如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候...

2022-05-07 09:31:10 469

转载 Docker底层技术概览

docker run -it redis /bin/bash。执行这个命令运行一个redis容器,以交互模式运行容器,为容器重新分配一个伪输入终端,并执行/bin/bash。这个命令背后都做了什么?1.如果本机没有redis镜像,则会从你配置的镜像仓库里面拉取一个redis的latest版本的镜像,跟运行了docker pull redis效果一样。 2.创建容器。跟运行docker create一样。 3.给容器分配一个读写文件系统作为该容器的final layer(最底层),容器可以在它的文件系

2022-05-07 09:17:03 133

转载 Docker架构是由那些模块构成的

首先是Docker客户端和服务端Docker daemon的交互,Docker 客户端要向服务器Docker daemon发出请求,服务器或者将完成所有工作并返回结果。docker的构成解析:Docker Client是用户通过docker命令行工具可以发起请求。Docker Client可以通过tcp://host:port方式和Docker Daemon建立通信。Docker daemon是Docker架构中常驻在后台的系统进程,功能是接受并处理Docker Client发送..

2022-05-07 09:14:21 521

原创 容器 & 虚拟机

我们可以看到虚拟化技术通过Hypervisor(虚拟机管理系统)为每个app启动一个Guest OS(客户机操作系统),也就是为每个app启动一个虚拟机。而Docker容器减少GuestOS这一层级使用Docker Engine 进行调度和隔离,所有app应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级。容器Docker 将软件代码和其依赖,全打包在一个文件中。运行单个文件,就会生成虚拟容器。在这个虚拟容器中,不管本地的操作系统是如何的不同,此容器都能照常运行。虚拟机

2022-05-07 09:11:24 663

转载 mybatis数据库操作性能拦截器,记录耗时和打印执行的sql

mybatis数据库操作性能拦截器,记录耗时和打印执行的sql

2022-05-05 13:21:23 261

原创 WebLog记录日志

WebLog记录日志

2022-05-05 13:20:00 873

原创 mybatis拦截器做数据权限

package com.geely.dt.configuration;import com.geely.dt.service.pipeline.*;import com.geely.dt.service.pipeline.menuresouceperimissiondata.ResouceMenuData;import com.geely.dt.service.pipeline.menuresouceperimissiondata.ResouceMenuDataPipeline;import c.

2022-05-05 13:17:55 608

原创 mybatis拦截器自动set基类字段

mybatis拦截器自动set基类字段

2022-05-05 13:12:34 589

原创 流水线模式应用设计

通过流水线模式使代码具有职责单一、移植性高、扩展性强、代码清晰。

2022-05-05 10:34:23 1334

原创 k8s跨主机网络方案之Flannel

什么是overlay network?Overlay 技术是在现有的物理网络之上构建一个虚拟网络,上层应用只与虚拟网络相关。Overlay 在网络技术领域,指的是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离,并且以基于 IP 的基础网络技术为主。vxlanVxLAN 使用虚拟隧道端点(Virtual Tunnel End Point、VTEP)设备对服务器发出和收到的数据包进行二次封装和解封。VXLAN

2021-07-01 15:34:50 726

原创 我的从编码到架构思想的转变

入门:在刚开始工作时,一个业务需求过来,只想的是用代码怎么样实现这个需求,没有去追求写的代码质量问题,大量的if else、重复代码copy等1年:随着工作1年后的编码思想转变,看过一些书籍文章,有了代码抽取的思想,会封装util工具包,将公共方法独立抽取出来。 写代码时方法不再是那么冗长让人难懂,而是将业务逻辑抽取出多个小方法中,每个方法只做一件事。2-3年:在工作2年+后,经过阅读源码和书籍文章的沉淀,具备了基础的抽象代码思想,在代码设计方面会考虑用设计模式来解决问题,怎么样设计出来

2021-03-29 10:39:02 152 1

原创 秒杀设计

业务背景秒杀的业务流程是:首页展示秒杀商品,用户参与秒杀的前提是有积分。在秒杀时间到用户可直接点击兑换此秒杀商品,秒杀成功则生成对应订单且扣除用户积分。业务流程图问题解析业务系统很依赖redis缓存,服务端是先扣缓存中的库存和积分,之后是异步处理真实的扣库存和积分,如果缓存服务器挂了怎么解决?出现缓存中积分剩余7,真实数据库还是10, 在异步执行时,缓存服务器挂了,用户查询是是10积分(锁行?如果是查询之前,执行扣除怎么解决?不去解决他,异步执行扣除时会真实的减去,如果执行失败会根据业务

2021-03-24 11:13:14 127

转载 Kubernetes网络模型

Kubernetes网络基本要求Kubernetes对容器技术做了更多的抽象,其中最重要的一点是提出pod的概念,pod是Kubernetes资源调度的基本单元,我们可以简单地认为pod是容器的一种延伸扩展,从网络的角度来看,pod必须满足以下条件:每一个Pod都有一个独特的IP地址,所有pod都在一个可以直接连通的、扁平的网络空间中 同一个pod内的所有容器共享同一个netns网络命名空间基于这样的基本要求,我们可以知道:同一个pod内的所有容器之间共享端口,可直接通过localhos

2020-09-05 14:48:14 265

原创 对es搜索使用fork/join优化搜索

需求:查询某个日期区间关于吉利相关舆情es索引库有12个,吉利相关词有50+个查询12个es索引库,查询出日期区间的结果 且 满足这50+词中其中一个词则将对应的文章查询出来 1个索引 查询 一个月区间日期 2019-10-01 2019-10-31 多个词(吉利、帝豪....)包含这50个词的都查出来 ...

2019-11-29 17:18:04 315

原创 元数据项目使用的设计模式

业务需求用户输入语句后,点击“生成字段”按钮,自动生成字段。1、用户点击DDL建表,2、在谈出的框输入创建语句,3、点击生成字段后字段列表展示对应的字段。实现思路-策略模式+工厂模式通过策略者模式+工厂模式实现不同数据库解析对应的ddl后得到的对象都不同,获取的字段方式也不同,通过策略者模式将对应的获取方式封装在对应的数据库类内部处理。然后通过工厂类获取对应的...

2019-11-26 20:55:12 515

原创 logback将日志传输到 logstash然后在kibana展示

场景一: 生产环境因集群,无法快速定位日志,以下配置可在kibana可视化界面查看系统日志系统报如下日志在kibana搜索实现步骤一)application.properties文件新增配置#logstash服务器地址logstash.host=10.86.210.18#logstash端口logstash.port=8084二)引入pom文件...

2019-06-01 17:07:54 5025 3

原创 ReentrantLock图解

         文章借鉴http://www.cnblogs.com/skywang12345/p/3496147.html 

2018-12-19 15:27:07 219

原创 mybatis执行流程浅析

2018-12-18 16:15:33 113

原创 mybatis核心类图

  

2018-12-18 16:14:08 593

原创 mybatis解析流程浅析

 1)获取Configuration.xml配置文件,使用DOM方式解析。2)在Configuration.xml配置文件中查找<configuration>节点,并开始解析。(列出常用的几个节点,只详细介绍如何解析<mappers>节点) 2.1)解析<properties>节点    <properties>        &lt...

2018-12-18 16:03:12 159

原创 图深度优先遍历执行步骤分析

public class MatrixUDG { private char[] mVexs; // 顶点集合 private int[][] mMatrix; // 邻接矩阵 /* * 创建图(用已提供的矩阵) * * 参数说明: * vexs -- 顶点数组 * edges -- ...

2018-07-12 18:34:02 736

原创 平衡二叉树AVL插入执行步骤分析

public class AVLTree2<T extends Comparable<T>> { private AVLTreeNode<T> mRoot; // 根结点 // AVL树的节点(内部类) class AVLTreeNode<T extends Comparable<T>> { ...

2018-07-09 18:09:56 192

原创 堆排序执行步骤分析

public static void main(String []args){ System.out.println(7/2-1); int[] arr = new int[]{1,4,2,7,9,8,3,6,0,5}; sort(arr); System.out.println(Arrays.toString(arr)); ...

2018-06-30 10:26:55 211

垃圾回收的算法与实现-高清文字版

本书中涉及以下两个主题。 1. GC 的算法(算法篇) 2. GC 的实现(实现篇) 在“算法篇”中,我们从众多的GC 算法中严格挑选了一些重要的算法来介绍,包括传 统算法和基本算法,以及稍微难一些的算法。“算法篇”最大的目的是让你了解GC 独特的思 维方式和各算法的特性。 在“实现篇”中,你需要逐步阅读我们选择的语言处理程序的GC 算法。因为我们在“算 法篇”中扎实地学习了理论,所以需要在“实现篇”中检验一下能把理论运用到什么程度。 特地设计“实现篇”还有一个目的,就是想让你亲身感受“理论和实现的不同”。要成功 实现,不仅要使用GC 算法,还要在细节上下很多功夫,以与硬件环境和语言功能相协调。 通过学习更有实践性意义的知识,希望能进一步加你对GC 的理解。

2019-01-04

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

TA关注的人

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