<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[最爱奶油花生]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/abcd930704</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; abcd930704]]></copyright><item><title><![CDATA[K8S的搭建方式]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/128803512</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/128803512</guid><author>abcd930704</author><pubDate>Mon, 30 Jan 2023 15:28:33 +0800</pubDate><description><![CDATA[K8s的几种搭建方式]]></description><category></category></item><item><title><![CDATA[gateway的灰度发布]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/128802713</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/128802713</guid><author>abcd930704</author><pubDate>Mon, 30 Jan 2023 15:04:07 +0800</pubDate><description><![CDATA[gateway的灰度发布]]></description><category></category></item><item><title><![CDATA[线程间的通信]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/125016615</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/125016615</guid><author>abcd930704</author><pubDate>Sat, 28 May 2022 11:54:23 +0800</pubDate><description><![CDATA[线程通信的几种方式_一起努力啊啊啊啊的博客-优快云博客_线程间通信
]]></description><category></category></item><item><title><![CDATA[springboot admin]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124859352</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124859352</guid><author>abcd930704</author><pubDate>Thu, 19 May 2022 11:11:43 +0800</pubDate><description><![CDATA[Spring Boot Admin 介绍及使用_给自己一个 smile的博客-优快云博客_springadmin
]]></description><category></category></item><item><title><![CDATA[RocketMq 源码学习]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124824018</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124824018</guid><author>abcd930704</author><pubDate>Tue, 17 May 2022 16:15:29 +0800</pubDate><description><![CDATA[1、Producer有哪些消息发送方式

 1）同步发送（SYNC）

 同步发送是指消息发送方发出数据后，会在收到接收方发回响应之后才发下一个数据包的通讯方式。

 2）异步发送（ASYNC）

 异步发送是指发送方发出数据后，不等接收方发回响应，接着发送下个数据包的通讯方式。 MQ 的异步发送，需要用户实现异步发送回调接口（SendCallback）。消息发送方在发送了一条消息后，不需要等待服务器响应即可返回，进行第二条消息发送。发送方通...]]></description><category></category></item><item><title><![CDATA[RocketMq学习]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124823975</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124823975</guid><author>abcd930704</author><pubDate>Tue, 17 May 2022 16:14:10 +0800</pubDate><description><![CDATA[RocketMQ 是什么

Github 上关于 RocketMQ 的介绍：
RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性：

支持发布/订阅（Pub/Sub）和点对点（P2P）消息模型
	在一个队列中可靠的先进先出（FIFO）和严格的顺序传递
	支持拉（pull）和推（push）两种消息模式
	单一队列百万消息的堆积能力
	支持多种消息协议，如 JMS、MQTT 等
	分布式高可用的部署架构,满足至少一次消息传递语义
	提供 docker 镜像用于隔离测试和云集群部署]]></description><category></category></item><item><title><![CDATA[零拷贝技术]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124654024</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124654024</guid><author>abcd930704</author><pubDate>Sun, 08 May 2022 20:32:25 +0800</pubDate><description><![CDATA[首先，一起来看看传统IO 的执行流程：


当我们用程序读取文件的时候，会从用户态切换为内核态，同时基于 DMA 引擎将磁盘文件拷贝到内核缓冲区。
那么问题又来了，什么是用户态和内核态，什么是 DMA 拷贝？？？？？



1.用户态和内核态：用户状态就是你写了一些操作文件的代码，JVM帮你读了出来，然后发现你需要操作文件，可是操作系统不可能让你用代码直接去操作这个文件，所以这个时候就需要切换到内核态来协助你完成本次文件的操作，可以理解为调用内核态来帮你把文件复制出来让你操作一波。
2. DMA（Dire.]]></description><category></category></item><item><title><![CDATA[springboot集成websocket]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124633376</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124633376</guid><author>abcd930704</author><pubDate>Sat, 07 May 2022 16:16:55 +0800</pubDate><description><![CDATA[springboot整合websocket_wh柒八九的博客-优快云博客_springboot websocket
]]></description><category></category></item><item><title><![CDATA[nacos原理学习]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124630651</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124630651</guid><author>abcd930704</author><pubDate>Sat, 07 May 2022 14:43:49 +0800</pubDate><description><![CDATA[一、Nacos的整体架构

Nacos的整体架构还是比较清晰的，我们可以从下面这个官方提供的架构图进行简单分析。





二、Nacos 原理

之前讲过注册中和配置中心的核心原理，信息的同步主要的几种方式：

push （服务端主动push）
pull （客户端的轮询）， 超时时间比较短
long pull （超时时间比较长）
2.1、配置中心原理





nacos 配置中心就是采用：客户端 long pull 的方式

Nacos 客户端会循环请求服务端变更的数据，并且超时时间设置为30s，当..]]></description><category></category></item><item><title><![CDATA[rocketmq]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124585591</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124585591</guid><author>abcd930704</author><pubDate>Thu, 05 May 2022 11:40:34 +0800</pubDate><description><![CDATA[普通消息

生产者多次循环发送该消息，broker收到消息顺序会不一致，因为convertAndSend并没有等上一条信息发送完并收到响应再发送下一条消息


@GetMapping("/send")
public String send() {
	rocketMQTemplate.convertAndSend("topic","普通消息");
	return "发送成功";
}


同步消息

producer向 broker 发送消息后同步等待， 直到broker 服务器返回发送结果


 @G...]]></description><category></category></item><item><title><![CDATA[caffine guava区别]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124577899</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124577899</guid><author>abcd930704</author><pubDate>Wed, 04 May 2022 21:22:12 +0800</pubDate><description><![CDATA[Caffeine/Guava性能测试
处于性能优化考虑，项目准备将本地缓存从guava cache 转到caffeine cache，于是着手对caffeine进行了一波调研，首先通过一系列测试，通过caffeine和guava从结果来看，在相同cpu负载下，Caffeine Cache的读取和写入速度优于Guava Cache，差距在4倍以上。

但在内存占用方面来看，两者无明显区别。

测试环境：
CPU：i7-8700 3.20GHz 6核
内存：16g
系统：Windows 10
JDK版本：8
I]]></description><category></category></item><item><title><![CDATA[raft zab区别]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124438164</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124438164</guid><author>abcd930704</author><pubDate>Tue, 26 Apr 2022 21:48:39 +0800</pubDate><description><![CDATA[1 leader选举

为什么要进行leader选举？

在实现一致性的方案，可以像base-paxos那样不需要leader选举，这种方案达成一件事情的一致性还好，面对多件事情的一致性就比较复杂了，所以通过选举出一个leader来简化实现的复杂性。

1.1 一般的leader选举过程

更多的有2个要素：
1.1.1 选举轮次
1.1.2 leader包含更多的日志

1.1.1 选举投票可能会多次轮番上演，为了区分，所以需要定义你的投票是属于哪个轮次的。

Raft定义了term来表示选举轮次ZooK]]></description><category></category></item><item><title><![CDATA[seata TCC实现]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124417215</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124417215</guid><author>abcd930704</author><pubDate>Tue, 26 Apr 2022 09:28:19 +0800</pubDate><description><![CDATA[https://www.freesion.com/article/4006885582/
]]></description><category></category></item><item><title><![CDATA[代理模式详解]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124387312</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124387312</guid><author>abcd930704</author><pubDate>Sun, 24 Apr 2022 17:11:16 +0800</pubDate><description><![CDATA[【Java】代理模式（Proxy模式）详解 - 百度文库
]]></description><category></category></item><item><title><![CDATA[Nginx 缓存]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124324100</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124324100</guid><author>abcd930704</author><pubDate>Thu, 21 Apr 2022 15:58:21 +0800</pubDate><description><![CDATA[一、缓存类型

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.]]></description><category></category></item><item><title><![CDATA[gateway 实现灰度发布]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124173546</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124173546</guid><author>abcd930704</author><pubDate>Thu, 14 Apr 2022 15:39:02 +0800</pubDate><description><![CDATA[这篇文章来源于小伙伴提出的一个问题：如何解决多环境统一注册中心服务实例乱窜？

怎么理解呢？

假设现在开发环境的AccountService已经在Nacos中注册了，现在小张需要对它进行修改升级，本地启动AccountService后也注册到了Nacos，但是在调试的时候请求通过网关经常直接跳转到开发环境，这样的话小张就没办法安心debug了。






其实这个问题归根结底是如何基于SpringCloud Gateway实现灰度发布，通过指定的规则让请求流量到达特定的实例。

在SpringClo..]]></description><category></category></item><item><title><![CDATA[基于ribbon实现灰度发布]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124141939</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124141939</guid><author>abcd930704</author><pubDate>Wed, 13 Apr 2022 10:21:58 +0800</pubDate><description><![CDATA[参考1：https://gitee.com/wangxinqiao/springcloud-gray
参考2：https://zhuanlan.zhihu.com/p/152217968

流程

1. 外部请求进入网关
2. 灰度拦截器根据灰度规则向线程变量中添加版本号(prod/test)
3. Feign拦截器从线程变量中取出版本号，并存入Feign请求头中，目的是为了让下游服务拿到版本号
4. Ribbon根据自定义负载均衡策略调用对应的服务
5. 下游服务的灰度拦截器从请求头中取出版本号，存入线程]]></description><category></category></item><item><title><![CDATA[parallelStream你不知道的坑？]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124101387</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124101387</guid><author>abcd930704</author><pubDate>Mon, 11 Apr 2022 15:56:53 +0800</pubDate><description><![CDATA[很多同学喜欢使用lambda表达式，它允许你定义短小精悍的函数，体现你高超的编码水平。当然，这个功能在某些以代码行数来衡量工作量的公司来说，就比较吃亏一些。

比如下面的代码片段，让人阅读的时候就像是读诗一样。但是一旦用不好，也是会要命的。


List&lt;Integer&gt; transactionsIds =
widgets.stream()
             .filter(b -&gt; b.getColor() == RED)
             .sorted((x,y) -]]></description><category></category></item><item><title><![CDATA[K8S学习]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124082753</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124082753</guid><author>abcd930704</author><pubDate>Sun, 10 Apr 2022 18:05:52 +0800</pubDate><description><![CDATA[📚 Kubenetes（K8S）简介 - K8S 教程
]]></description><category></category></item><item><title><![CDATA[手写rpc的思路]]></title><link>https://blog.youkuaiyun.com/abcd930704/article/details/124063589</link><guid>https://blog.youkuaiyun.com/abcd930704/article/details/124063589</guid><author>abcd930704</author><pubDate>Sat, 09 Apr 2022 16:54:34 +0800</pubDate><description><![CDATA[1.序列化层 protobuf hession

2.网络层 netty mino

3.协议层 http/dubbo

4.注册中心模块 负载均衡，路由算法

5.配置模块 连接池上下限，路由算法，负载均衡算法，黑白名单

6.代理层 jdk动态代理，或字节码生成的方式来屏蔽rpc底层的这些调用负载均衡的算法

就像调用本地方法一样，再完善可以添加服务治理，熔断，降级的功能。
...]]></description><category></category></item></channel></rss>