自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大数据架构演变

(其实我觉得大部分应该都是这样,短链路处理就是实时链路,长链路处理就是实时数仓,对于后端开发人员来说,尤其微服务架构化之后,同一链路的各种数据处理应该都是按功能分配在不同的服务中,而服务与服务之间的数据传递,就需要用到kafka,实际这就已经类似于实时数仓了)上面的实时链路没有对中间结果进行保存,当有大量的实时需求需要开发时,需要尽可能的对中间结果进行复用,以此来提交效率,因此需要把这些中间结果保存起来,使用kafka作为实时数仓。对于批处理任务,还是使用原有的传统离线架构不变,支持高性能的离线批处理。

2022-08-22 19:47:12 1332 3

原创 MySQL索引优化实战

联合索引、Online DDL

2022-07-27 15:51:31 827

原创 OperatingSystemMXBean获取系统性能指标

OperatingSystemMXBean

2022-07-25 19:43:55 2642

原创 二分查找笔记

二分查找的理解算法

2022-06-16 23:39:38 131

原创 生产事故记录(tomcat线程池与数据库连接池)与(堆栈信息)Jprofile的使用

生产事故记录(tomcat线程池与数据库连接池)与(堆栈信息)Jprofile的使用

2022-05-09 23:01:29 679

原创 pg分区表的实践

pg分区表实践

2022-04-16 18:45:03 2225 2

原创 使用kettle的数据库增量备份与全量备份

使用kettle的数据库增量备份与全量备份背景单表对主表的全量备份使用update_time的增量备份使用Kettle Spoon的注意事项背景单表对主表的全量备份使用update_time的增量备份使用Kettle Spoon的注意事项...

2022-04-12 18:48:45 3164 3

原创 virtualbox创建k8s集群(两分钟完成)

virtualbox创建k8s集群(两分钟完成)背景步骤1、安装virtualbox软件2、从百度云下载该k8s集群的voa文件3、选择导入虚拟电脑,将刚才下载的voa文件导入进来4、使用MobaXterm等远程连接工具连接上三台k8s节点5、尝试使用k8s部署pod结尾背景之前在学习k8s的时候,就因为这个创建k8s的三节点集群,耽误了好几个月的时间,因为文档不论怎么看,都不如实操来得实在,光看文档也不会有什么理解和体会,所以相信大多数人学习k8s时,都希望能够直接操作k8s集群吧?但是集群创建,对

2022-03-23 21:38:42 1937 11

原创 对k8s有状态服务的理解

k8s有状态服务的理解

2022-03-06 23:49:45 2257

原创 使用postman访问k8s api

使用postman访问k8s api创建Service Account账号,这是用来给运行在Pod里的进程用的,或者用postman调用也是一样。[root@k8s-node1 ~]# kubectl create sa adminserviceaccount/admin created获取Token[root@k8s-node1 ~]# kubectl get sa admin -ojson{ "apiVersion": "v1", "kind": "ServiceAccou

2022-01-01 01:08:55 1898

原创 k8s创建service

k8s创建service在之前已经创建了一个有两个nginx副本数的deployment,如下所示:[root@k8s-node1 mytestyaml]# kubectl get deploymentNAME READY UP-TO-DATE AVAILABLE AGEnginx-deployment 2/2 2 2 45m[root@k8s-node1 mytestyaml]# kubectl get

2021-12-19 21:28:26 4607

原创 k8s创建Deployment

k8s创建Deploymentnginx-deployment.yaml文件如下:apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment # deployment的名称,全局唯一spec: replicas: 1 # Pod副本的期待数量 selector: matchLabels: app: nginx # 符合目标的Pod拥有此标签 template:

2021-12-19 20:22:53 1675

原创 k8s创建一个简单的Pod

k8s创建一个简单的Podnginx-pod.yaml 文件内容:apiVersion: v1kind: Pod # 类型为Podmetadata: name: nginx-pod # Pod的名称 labels: app: nginxlabelspec: containers: # Pod内容器的定义部分 - name: nginx # 容器对应的名称 image: nginx # 容

2021-12-19 17:55:39 2543

原创 k8s常用命令

k8s常用命令get获取资源列表[root@k8s-node1 mytestyaml]# kubectl get podNAME READY STATUS RESTARTS AGEnginx-deployment-85ff79dd56-8f8s2 1/1 Running 0 30snginx-deployment-85ff79dd56-nmhvr 1/1 Running

2021-12-19 16:14:38 304

原创 使用虚引用的一种应用——解决队列数量的限制

使用虚引用的一种应用——解决队列数量的限制思考一些想法方案结束没事就喜欢研究这些东西,于是对之前做的使用队列解决缓存一致性有了新的思考。下面只是记录我的思考思路,欢迎大家一起来讨论。思考在上篇博客中,有具体的给出了使用ReentrantLock来解决缓存一致性的方案:链接: 对使用队列解决缓存一致性的思考(二).在上个方案中,已经可以利用ReentrantLock来代替线程+阻塞队列实现的消费模式。这样做的有点就是不需要开启多余的线程进行消费,可以节省线程资源,并且可以放心大胆的设置更多的锁,

2021-12-07 22:27:30 409

原创 使用xxl-job开发的注意事项

使用xxl-job开发的注意事项一、避免超大log日志文件写入二、为终止任务所需要做出的配合2.1 对于单线程执行任务的标准做法2.2 对于多线程执行的标准做法一、避免超大log日志文件写入在11.26日跑阿里离线任务时发现,部分调度的日志文件不能够正常的显示出来,导致任务进度等状况没法直接监测。这是在xxl-job日志文件丢失问题处理后刚上线第二天出现的,因此需要排查为什么还会出现日志无法访问的情况,并且是刚跑的任务,日志就无法访问了。2021-11-26 06:01:01的调度记录,执行日志无

2021-12-04 13:05:05 4343

原创 k8s中容器的状态说明

1、挂起(Pending):Pod已经被Kubernetes系统所接受,但是有一个或者多个容器镜像尚未被创建。等待时间包括调度Pod的时间和通过网络下载镜像的时间,这可能需要花点时间。2、运行中(Running):该Pod已经绑定到了一个节点上,且Pod中的所有容器都已经被创建。至少有一个容器正在运行,或者正处于启动或者重启状态。3、成功(Succeeded):Pod中的所有容器都被成功终止,并且不会再重启。4、失败(Failed):Pod中的所有容器都已经终止了,并且至少有一个容器是因为失败

2021-11-27 16:09:25 2796

原创 K8s中yaml的常用字段

参数名字段类型说明versionString这里是值得 k8s API 的版本,目前基本上是V1,可以用 kubectl api-versions 命令查看kindString这里指的是yaml文件定义的资源类型和角色,如:PodmetadataObject元数据对象,固定值就写 metadatametadata.nameString元数据对象的名字,这里由我们填写,如 Pod 的名字metadata .namespaceString元数据对...

2021-11-21 14:31:27 1473

原创 kafka的学习网站

kafka的学习网站:kafka中文网.kafka中文教程.

2021-09-21 14:34:49 186

原创 xxl-job在k8s中日志丢失的适配方案

xxl-job在k8s中部署日志丢失的问题一、背景二、问题现象描述三、问题的排查和解决一、背景由于业务需求,公司大量的用到了xxl-job这个分布式任务调度框架,这边所有的服务都是k8s进行部署的,最近又有对于任务调度中心发生了生产事故,又去补充了监控报警等功能,然而在进行问题排查的时候,发现了一个比较奇怪的现象,其实之前也是一直有的,不过可能没有引起太多的关注,就是执行器的执行日志丢失的问题。二、问题现象描述这个问题也是比较的奇怪,初步的一个现象就是,在固定时间点以后的所有执行日志全部丢失,不仅仅

2021-09-21 00:47:13 2552 3

原创 MySQL的锁超时与死锁自动检测机制

MySQL的锁超时与死锁自动检测机制一、创建两张student和teacher表二、死锁检测示例三、锁超时示例一、创建两张student和teacher表SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for t_student-- ----------------------------DROP TABLE IF EXISTS `t_student`

2021-08-15 15:59:46 650

原创 MySQL笔记(六)MySQL间隙锁的加锁规律

MySQL笔记(六)MySQL的锁机制及使用场景MySQL的锁机制及使用场景在下面的场景中的时候,我们总是需要使用到MySQL的锁MySQL的锁机制及使用场景

2021-08-07 14:14:49 901

转载 MySql 笔记(五)InnoDB引擎页分裂与页合并的原理

MySql 笔记(五)InnoDB引擎页分裂与页合并的原理一、文件表(File-Table)结构二、根,分支与叶子三、页的内部原理四、页合并的原理五、页分裂的原理六、主键的使用七、总结八、致谢这篇文章是在知乎上见过的关于页分裂和页合并原理的很好的文章,有助于帮助我们了解MySQL及InnoDB的底层实现原理,搬运过来记录一下,也以便于以后的复习和回顾。原文标题:InnoDB Page Merging and Page Splitting原文链接:https://www.percona.com/blog

2021-07-24 15:03:09 1960

原创 Nacos原理

Nacos原理Nacos核心功能点在Nacos中的存储数据的一些结构具体流程:看Nacos的源码建议在ProcessOn上找个流程图,对着源码来看,就比较清晰。Nacos核心功能点服务注册Nacos会通过发送Rest请求的方式向Nacos Server注册自己的服务实例,提供自身的元数据,比如IP地址、端口号等数据,Nacos在接收到注册请求之后就会把该服务的元数据信息保存在一个双层的Map结构当中去。服务心跳在服务注册后,Nacos会维护一个定时的心跳来通知Nacos Server,说明服务

2021-05-23 00:09:08 1622

原创 Sentinel限流及其滑动窗口算法

这里写目录标题Sentinel的限流原理滑动时间窗口算法Sentinel的限流原理限流效果,对应有DefaultController快速失败WarmUpController慢启动(令牌桶算法)RateLimiterController(漏桶算法)滑动时间窗口算法固定时间窗口算法即比如每一秒作为一个固定的时间窗口,在一秒内最多可以通过100个请求,那么在统计数据的时候,如果0-500ms没有请求,而500-1000ms有100个请求,那么这一百个请求都能通过,在1000-1500ms的时候,又

2021-05-21 19:39:32 1310

原创 Sentinel的流程原理

Sentinel的流程原理1、Sentinel的原理图2、Sentinel的概念介绍3、那么下面就跟着源码看看大致的运行流程:以下有很多部分有参考自sentinel的官方文档,做一个笔记,顺便加深自己的理解。1、Sentinel的原理图这是sentinel官方的介绍:2、Sentinel的概念介绍在 Sentinel 里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个 Entry 对象。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用

2021-05-20 22:19:26 532

原创 SpringCloud GateWay的原理浅析及鉴权使用

SpringCloud GateWay的鉴权1.GateWay2.一个GateWay网关的路由规则routes3.网关的执行流程4.GatewayFilter和GlobalFilter5.自定义Filter,鉴权6.网关限流1.GateWay使用网关的好处:它提供了一个统一的入口,客户端无需知道每台服务器的ip地址,只需要给网关发送请求。可以对各个微服务之间进行流量管控,服务熔断,降级等机制。协议适配安全防护,ip黑名单,鉴权等。而我们一直用到的网关的功能差不多就是统一访问入口、请求路由、

2021-05-17 20:29:52 1798 3

原创 Spring事务

Spring事务在我们要对mysql的多个更新请求的时候,可以使用Spring事务来保证,而Spring事务又可以有两种使用方式,一种是编程式事务,一种是注解声明式事务。首先要知道的是,不采用Spring的话,mysql事务是怎么实现的,这样才能知道Spring对它做了怎样的封装。首先看纯jdbc式的事务使用方法: public static void main(String[] args) throws SQLException { String url="jdbc:mysq

2021-05-16 12:47:15 94

原创 spring笔记

spring笔记Spring要学习的点:先来看IOCAOPSpring的扩展点(所有的扩展点接口都实现了BeanPostProcessor)这里只是做一部分笔记,用来配合看源码比较好Spring要学习的点:1.IOC2.AOP3.SpringMvc4.设计模式5.事务管理先来看IOCbean的生命周期:实例化(getWrappedInstance())注入属性(populateBean)初始化(initializeBean)销毁 (destory())创建的这三个阶段是在具体

2021-05-04 20:43:36 203 1

原创 分布式事务中的解决方案

分布式事务中的几种解决方案分布式事务1. 基于XA协议的2PC和3PC2. 基于业务层的TCC3. 最大努力通知4. 可靠消息实现最终一致性网上已经有相当多的文章有在讲这个了,不过我还是倾向于自己做一个笔记,将自己的想法加进去,加深对它的理解。分布式事务当我们的系统为一个单机系统的时候,我们要同时更新多张数据库表,那么就可以直接使用mysql的本地事务,它能够保证我们在这个事务中的数据库操作类似一个原子操作,要么全部成功,要么全部失败,那么就能够保证其一致性。但是当一个系统中有划分为多个微服务的时候,

2021-05-03 13:11:45 123

原创 对使用队列解决缓存一致性的思考(二)

对使用队列解决缓存一致性的优化思考一些想法新的方案:ReentrantLock思考在上篇博客中,有具体的给出了使用队列来解决缓存一致性的方案,就是下面的这个流程:链接: 使用队列保证redis数据的一致性.在这个方案中,我们在请求过来时,首先绝大部分的查询请求直接通过缓存查到了,就直接返回了,不会进入到队列,只有少部分的查询请求以及少量的跟新请求可以进入到队列里来。然后,在队列的另外一端,都会有一个对应的线程来消费它,并且消费完后通知被阻塞线程处理成功。这是一个不错的方案,比如有每秒有300

2021-04-21 22:15:25 694 1

原创 Nginx

Nginx介绍介绍nginx是一个轻量级的web服务器和反向代理服务器。可以进行高性能的请求处理。因为nginx就是使用epoll来处理请求的,epoll是基于事件驱动机制的,它可以监控多个socket请求,并且它是一个同步非阻塞的模型。但是nginx是异步非阻塞的,即一个请求过来,它可能要被转发到后端服务器去获取数据,那么在获取到数据的这段时间它并不是一直在这等着的,如果有其他请求消息到来时,依然会出处理其他的请求,那么再等到后端服务器返回数据了,就会再接着前面处理这个请求。...

2021-04-18 17:00:52 122

转载 epoll的底层原理

又是一篇特别好的文章,转自:https://www.toutiao.com/i6683264188661367309/?wid=1618717723050epoll的底层原理一、从网卡接收数据说起二、如何知道接收了数据?三、进程阻塞为什么不占用cpu资源?四、内核接收网络数据全过程五、同时监视多个socket的简单方法六、epoll的设计思路七、epoll的原理和流程八、epoll的实现细节九、结论从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,ngi

2021-04-18 12:50:57 1999

原创 MySql 笔记(四)Mysql事务的提交及底层实现原理

MySql 笔记(四)Mysql事务的提交及底层实现原理写在前面事务的提交Mysql的隔离级别以及mvcc的原理在写这篇博客的时候,也有在网上翻阅大量的资料,CSDN、知乎等平台,花了一个多星期去理解和掌握这些知识,在网上确实也有些文章写的也有很多不一样的地方,很多文章都是有错误的,我们需要对这些文章有自己的判别,还是要结合自己的看法来。然后包括自己要组织语言写起来,也是要重新去翻阅很多其他的资料。下面算是一些总结,加上自己的一些理解吧。写在前面在网上有一个总结的很好的一句话,在这里记下来:事务的

2021-04-16 22:37:56 1729 2

原创 Redis中的五种数据类型及其原理

Redis中的五种数据类型及其原理String类型Hash类型List类型Set类型Zset类型String类型Hash类型List类型Set类型Zset类型

2021-04-03 00:17:04 393

转载 Netty线程模型

学习netty的过程中,发现了一篇质量很好的文章,转载自:https://www.infoq.cn/article/netty-threading-model这里写目录标题1. 背景1.1. Java 线程模型的演进**1.2. Reactor 模型2. Netty 线程模型2.1. Netty 线程模型分类2.2. Reactor 线程 NioEventLoop2.3. NioEventLoop 设计原理2.4. Netty 线程开发最佳实践3. 总结1. 背景1.1. Java 线程模型的演进**

2021-04-01 19:32:27 112

原创 MySql 笔记(三)主从复制、持久化及集群数据一致性

MySql 笔记(三)主从复制、持久化及事务的底层实现原理主从复制持久化Mysql的隔离级别以及mvcc的原理在写这篇博客的时候,也有在网上翻阅大量的资料,CSDN、知乎等平台,花了一个多星期去理解和掌握这些知乎,在网上确实也有些文章写的也有很多不一样的地方,包括自己要组织语言写起来,也是要重新去翻阅很多其他的资料。下面算是一些总结,加上自己的一些理解吧。主从复制小数据量的时候我们一般使用Mysql都是单机的,而当数据并发量过大时单机就会承受不住这么大的压力,从而使的Mysql宕机,并且单机也并不能

2021-03-29 22:46:37 864 1

原创 分布式锁之Redis与Zoopkeeper实现详解

使用redis实现分布式锁

2021-03-13 14:41:56 439 1

原创 缓存击穿、缓存穿透及其解决方案

缓存击穿、缓存穿透及其解决方案缓存击穿缓存穿透布隆过滤器缓存击穿简介缓存击穿是某一时间大量请求并发访问某一个key,而正好这个key并没有在缓存层中,从而全都跑到数据库查询,导致数据库压力过大甚至崩溃的情况。而它引起的原因一般是热点key过期导致的。解决办法1.为了避免缓存击穿,那么最好就是设置热点key为永不过期的,这样就不会有缓存击穿的情况了。2.使用hystrix进行限流,熔断器,资源隔离等操作,即使发生了缓存击穿等操作,那也没有关系,我能够使用hystrix来保证服务的高可用性,其实我

2021-03-07 16:55:28 2110 4

原创 缓存雪崩及其解决方案

缓存雪崩是什么,怎么引起的,有什么危害?缓存雪崩,一般是由大量的key集中在一段时间内失效,或者redis服务故障引起的,导致查询请求查不到缓存,大量的请求涌入mysql,它会导致mysql瞬间被大量的流量打死,或者是由于该服务接口访问时间过长,导致耗尽了线程资源,不仅会导致该服务其他接口得不到线程资源,也有可能会使上游服务的资源也全都耗在这,然后引起整个系统的崩溃。预防为主的策略那么,首先这个肯定是预防为主,我们就应该要尽量避免引起缓存雪崩的原因对于服务不可访问来说,想要一个高可用的服务,首先我

2021-03-06 18:22:06 2416 3

空空如也

空空如也

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

TA关注的人

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