自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 K8S的搭建方式

K8s的几种搭建方式

2023-01-30 15:28:33 1643

转载 gateway的灰度发布

gateway的灰度发布

2023-01-30 15:04:07 197

转载 线程间的通信

线程通信的几种方式_一起努力啊啊啊啊的博客-CSDN博客_线程间通信

2022-05-28 11:54:23 168

原创 springboot admin

Spring Boot Admin 介绍及使用_给自己一个 smile的博客-CSDN博客_springadmin

2022-05-19 11:11:43 140

原创 RocketMq 源码学习

1、Producer有哪些消息发送方式 1)同步发送(SYNC) 同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。 2)异步发送(ASYNC) 异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 MQ 的异步发送,需要用户实现异步发送回调接口(SendCallback)。消息发送方在发送了一条消息后,不需要等待服务器响应即可返回,进行第二条消息发送。发送方通...

2022-05-17 16:15:29 297

原创 RocketMq学习

RocketMQ 是什么Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性:支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 支持拉(pull)和推(push)两种消息模式 单一队列百万消息的堆积能力 支持多种消息协议,如 JMS、MQTT 等 分布式高可用的部署架构,满足至少一次消息传递语义 提供 docker 镜像用于隔离测试和云集群部署

2022-05-17 16:14:10 153

转载 零拷贝技术

首先,一起来看看传统IO 的执行流程:当我们用程序读取文件的时候,会从用户态切换为内核态,同时基于 DMA 引擎将磁盘文件拷贝到内核缓冲区。那么问题又来了,什么是用户态和内核态,什么是 DMA 拷贝?????1.用户态和内核态:用户状态就是你写了一些操作文件的代码,JVM帮你读了出来,然后发现你需要操作文件,可是操作系统不可能让你用代码直接去操作这个文件,所以这个时候就需要切换到内核态来协助你完成本次文件的操作,可以理解为调用内核态来帮你把文件复制出来让你操作一波。2. DMA(Dire.

2022-05-08 20:32:25 111

转载 springboot集成websocket

springboot整合websocket_wh柒八九的博客-CSDN博客_springboot websocket

2022-05-07 16:16:55 69

转载 nacos原理学习

一、Nacos的整体架构Nacos的整体架构还是比较清晰的,我们可以从下面这个官方提供的架构图进行简单分析。二、Nacos 原理之前讲过注册中和配置中心的核心原理,信息的同步主要的几种方式:push (服务端主动push)pull (客户端的轮询), 超时时间比较短long pull (超时时间比较长)2.1、配置中心原理nacos 配置中心就是采用:客户端 long pull 的方式Nacos 客户端会循环请求服务端变更的数据,并且超时时间设置为30s,当..

2022-05-07 14:43:49 634

原创 rocketmq

普通消息生产者多次循环发送该消息,broker收到消息顺序会不一致,因为convertAndSend并没有等上一条信息发送完并收到响应再发送下一条消息@GetMapping("/send")public String send() { rocketMQTemplate.convertAndSend("topic","普通消息"); return "发送成功";}同步消息producer向 broker 发送消息后同步等待, 直到broker 服务器返回发送结果 @G...

2022-05-05 11:40:34 1324

原创 caffine guava区别

Caffeine/Guava性能测试处于性能优化考虑,项目准备将本地缓存从guava cache 转到caffeine cache,于是着手对caffeine进行了一波调研,首先通过一系列测试,通过caffeine和guava从结果来看,在相同cpu负载下,Caffeine Cache的读取和写入速度优于Guava Cache,差距在4倍以上。但在内存占用方面来看,两者无明显区别。测试环境:CPU:i7-8700 3.20GHz 6核内存:16g系统:Windows 10JDK版本:8I

2022-05-04 21:22:12 1852

转载 raft zab区别

1 leader选举为什么要进行leader选举?在实现一致性的方案,可以像base-paxos那样不需要leader选举,这种方案达成一件事情的一致性还好,面对多件事情的一致性就比较复杂了,所以通过选举出一个leader来简化实现的复杂性。1.1 一般的leader选举过程更多的有2个要素:1.1.1 选举轮次1.1.2 leader包含更多的日志1.1.1 选举投票可能会多次轮番上演,为了区分,所以需要定义你的投票是属于哪个轮次的。Raft定义了term来表示选举轮次ZooK

2022-04-26 21:48:39 384

转载 seata TCC实现

https://www.freesion.com/article/4006885582/

2022-04-26 09:28:19 169

原创 代理模式详解

【Java】代理模式(Proxy模式)详解 - 百度文库

2022-04-24 17:11:16 291

转载 Nginx 缓存

一、缓存类型1、服务端缓存2、代理缓存3、客户端缓存4、代理缓存的工作流程:二、代理缓存配置语法1、代理缓存路径配置语法Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time.

2022-04-21 15:58:21 8013

原创 gateway 实现灰度发布

这篇文章来源于小伙伴提出的一个问题:如何解决多环境统一注册中心服务实例乱窜?怎么理解呢?假设现在开发环境的AccountService已经在Nacos中注册了,现在小张需要对它进行修改升级,本地启动AccountService后也注册到了Nacos,但是在调试的时候请求通过网关经常直接跳转到开发环境,这样的话小张就没办法安心debug了。其实这个问题归根结底是如何基于SpringCloud Gateway实现灰度发布,通过指定的规则让请求流量到达特定的实例。在SpringClo..

2022-04-14 15:39:02 4429

转载 基于ribbon实现灰度发布

参考1:https://gitee.com/wangxinqiao/springcloud-gray参考2:https://zhuanlan.zhihu.com/p/152217968流程1. 外部请求进入网关2. 灰度拦截器根据灰度规则向线程变量中添加版本号(prod/test)3. Feign拦截器从线程变量中取出版本号,并存入Feign请求头中,目的是为了让下游服务拿到版本号4. Ribbon根据自定义负载均衡策略调用对应的服务5. 下游服务的灰度拦截器从请求头中取出版本号,存入线程

2022-04-13 10:21:58 683

转载 parallelStream你不知道的坑?

很多同学喜欢使用lambda表达式,它允许你定义短小精悍的函数,体现你高超的编码水平。当然,这个功能在某些以代码行数来衡量工作量的公司来说,就比较吃亏一些。比如下面的代码片段,让人阅读的时候就像是读诗一样。但是一旦用不好,也是会要命的。List<Integer> transactionsIds =widgets.stream() .filter(b -> b.getColor() == RED) .sorted((x,y) -

2022-04-11 15:56:53 545

转载 K8S学习

📚 Kubenetes(K8S)简介 - K8S 教程

2022-04-10 18:05:52 72

原创 手写rpc的思路

1.序列化层 protobuf hession2.网络层 netty mino3.协议层 http/dubbo4.注册中心模块 负载均衡,路由算法5.配置模块 连接池上下限,路由算法,负载均衡算法,黑白名单6.代理层 jdk动态代理,或字节码生成的方式来屏蔽rpc底层的这些调用负载均衡的算法就像调用本地方法一样,再完善可以添加服务治理,熔断,降级的功能。...

2022-04-09 16:54:34 559

转载 FastDFS是什么?

一. 什么是FastDFS1.介绍FastDFSFastDFS是用c语言编写的一款开源的分布式文件系统,它是由淘宝资深架构师余庆编写并开源。FastDFS专为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很 容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务2.为什么要使用FastDFS上边介绍的NFS、GFS都是通用的分布式文件系统,通用的分布式文件系统的优点的是开发体验好,但是系统复杂 性高、性能一般,而专用的分布式文件系统

2022-04-09 15:59:15 1255

转载 java spi与dubbo spi区别

转自:https://www.jianshu.com/p/46aa69643c97SPI 简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,而后,把新加的实现,描述给JDK知道就行啦(通过改一个文本文件即可)公司内部,目前Dubbo框架就基于SPI机制提供扩展功能。简.

2022-03-30 22:51:45 235

转载 XXL-JOB的路由策略

目录1.概述2.路由策略种类3.路由策略讲解3.1第一个3.2最后一个3.3随机选取3.4轮询选取3.5一致性hash3.6最不经常使用 (LFU)3.7最近最久未使用(LRU)3.8故障转移4.9忙碌转移1.概述xxl-job就是因为内涵丰富的调度策略,使得框架的多样性,灵活性更高。现在就开始讲解xxl-job的核心路由策略算法,总共有10种路由策略,对于以后想从事分布式微服务开发,任务调度的学习是很有必要的。2.路由策略种类第一个最后一个

2022-03-29 09:58:36 5624

转载 redis

各数据类型应用场景工作中有很多场景经常用到redis, 比如在使用String类型的时候,字符串的长度不能超过512M,可以set存储单个值,也可以把对象转成json字符串存储;还有我们经常说到的分布式锁,就是通过setnx实现的,返回结果是1就说明获取锁成功,返回0就是获取锁失败,这个值已经被设置过。又或者是网站访问次数,需要有一个计数器统计访问次数,就可以通过incr实现。除了字符串类型,还有hash类型,它比string类型操作消耗内存和cpu更小,更节约空间。像我之前做过的电商项目里面,购物车

2022-03-10 10:49:31 774

转载 mybatis学习

目录总结jdbc出现的问题mybatis介绍mybatis入门程序占位符#{}与字符串拼接符${}区别mybatis框架的原理别名配置与映射文件加载方式mybatis与hibernate的比较一、总结jdbc出现的问题1、准备数据库,执行mysql语句。-- ------------------------------ Table structure for `orders`-- ----------------------------DROP TABLE...

2022-03-10 10:47:24 103

原创 mysql

mysql的认识隔离性 锁+MVCC一致性 redolog+undolog持久性 redolog原子性 undologMVCC表的隐藏字段:事务id, undo版本链的指针,id(没有组建可当组件)undolog 版本链readview RC 每次查询都是新的readview RR 只用首次的readView当前的事务比较undolog的版本链事务,确定用哪个版本的事务。...

2022-03-09 21:40:55 713

转载 seata 事务方案

分布式事务三--AT模式 - zpk-aaron - 博客园分布式事务三--AT模式 - zpk-aaron - 博客园分布式事务三--AT模式 - zpk-aaron - 博客园

2022-03-09 15:30:45 450

原创 zuul网关

一、内容概览本篇将介绍API网关的基本概念、Zuul网关的功能和工作机制。结合代码介绍如何使用Zuul构建一个简单的网关、介绍Zuul的路由配置方式、了解Filter工作原理并实现一些扩展功能。二、什么是API网关在微服务架构中,通常会有多个服务提供者。设想一个电商系统,可能会有商品、订单、支付、用户等多个类型的服务,而每个类型的服务数量也会随着整个系统体量的增大也会随之增长和变更。作为UI端,在展示页面时可能需要从多个微服务中聚合数据,而且服务的划分位置结构可能会有所改变。网关就可以对外暴露聚

2022-03-09 09:36:02 260

原创 了解限流方式

计数法滑动时间窗口令牌桶漏洞算法 的区别zuul可以和ratelimit,sentienl实现限流。()gateway可以和sentienl结合实现限流,自生也可以实现限流,redis和lua实现限流。直接配置可以限流,或者代码实现限流。(ip,路径,参数限流)zuul,zuul2,gateway的区别zuul底层单线程,severlet阻塞IO不支持异步zuul2是多路复用,gateway 多路复用,异步(路由,断言,过滤)全局过滤。...

2021-12-07 22:05:57 78

原创 什么是云原声?

本篇分享主要围绕以下 4 个主题进行:什么是云原生 ? 为什么要用云原生架构 ? 微服务的概念 微服务的技术选型什么是云原生 ?云计算和云原生云计算不同于传统的自建机房,云计算就是将计算的抽象为基础设施然后通过网络分发,得益于云计算的无限扩展能力,使得“云计算”就像自来水厂一样,我们可以随时接水,并且不限量,按照自己家的用水量,付费给自来水厂就可以。以下云计算的五个基本特征。以下是一些目前比较主流的公有云厂商:云原生顾名思义,就是基于云计算特性所设计的应用服务,得益于云计

2021-12-03 17:12:55 1794

原创 seata的AT模式

Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。目前github上已经有 12267 颗星了,也很活跃,最新的提交时间很多都是几天前。首先我们回顾一下在单体应用中,例如一个业务调用了3个模块,他们都使用同一个数据源,是靠本地事务来保证事务一致性。但在微服务架构中,这3个模块会变为3个独立的微服务,各自有自己的数据源,

2021-12-01 10:38:59 5879 3

原创 mongodb的3中集群方式

MongoDB 有三种集群部署模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。Master-Slaver 是一种主从副本的模式,目前已经不推荐使用。 Replica Set 模式取代了 Master-Slaver 模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移,在实际生产中非常实用。 Sharding 模式适合处理大量数据,它将数据分开存储,不同服

2021-11-30 16:41:26 2211

转载 redis的3中集群模式

主从模式Redis 的主从模式指的就是主从复制。用户可以通过 SLAVEOF 命令或者配置的方式,让一个服务器去复制另一个服务器即成为它的从服务器。主从模式架构Redis 如何实现主从模式?Redis 的从服务器在向主服务器发起同步时,一般会使用 SYNC 或 PSYNC 命令。初次同步当从服务器收到 SLAVEOF 命令后,会向其主服务器执行同步操作,进入主从复制流程。从服务器向主服务器发起SYNC 或 PSYNC 命令 主服务器执行 BGSAVE命令,生成.

2021-11-30 11:23:46 150

原创 hystrix的信号量,线程池隔离的区别

先给个总结对比:隔离方式 是否支持超时 是否支持熔断 隔离原理 是否是异步调用 资源消耗 线程池隔离 支持,可直接返回 支持,当线程池到达maxSize后,再请求会触发fallback接口进行熔断 每个服务单独用线程池 可以是异步,也可以是同步。看调用的方法 大,大量线程的上下文切换,容易造成机器负载高 信号量隔离 不支持,如果阻塞,只能通过调用协议(如:socket超时才能返回) 支持,当信号量达到maxConcurren

2021-11-30 10:27:07 423

原创 Nginx的root和alias区别

nginx root和 alias配置区别nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。[root]语法:root path默认值:root html配置段:http、server、location、if[alias]语法:alias path配置段:location实例:..

2021-11-30 10:23:43 18014 1

转载 springboot的底层原理源码解析

原文地址:https://www.cnblogs.com/shamo89/p/8184960.html

2021-06-24 15:05:55 149

转载 分布式事务

分布式两阶段提交和三阶段提交总结就是:有两种角色,协调者和参与者两阶段: 1. 协调者给所有参与者发送准备消息,每个参与者要么直接返回失败,或者执行本地事务,写本地redo和undo日志,但不提交,并响应给协调者; 2. 协调者根据反馈情况给所有参与者发送是要中止操作还是提交操作,如果提交,则所有参与者提交事务,释放资源,如果中止,则所有参与者中止事务,释放资源,并响应给协调者。三阶段: 1. 协调者给所有参与者发送是否可以准备,参与者根据自己是否能够顺利执行事务,要么...

2021-06-09 17:20:17 65

转载 并发编程AQS

谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。...

2021-06-09 09:50:19 108

转载 服务器之间免密登录

今天这篇文章主要是教会大家如何实现服务器之间的免密登录。1、先在所有服务器上执行命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsamaster服务器slave1服务器slave2服务器2、而后在所有服务器上执行命令:cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keysmaster服务器slave1服务器slave2服务器3、之后将每台服务器上的id_dsa.pub公钥发

2021-05-14 10:06:17 505

原创 docker

docker学习:

2021-05-14 09:20:49 61

空空如也

空空如也

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

TA关注的人

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