<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaoyi5224765的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoyi5224765</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoyi5224765]]></copyright><item><title><![CDATA[im系统设计]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/116891238</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/116891238</guid><author>xiaoyi5224765</author><pubDate>Sun, 16 May 2021 14:25:23 +0800</pubDate><description><![CDATA[这一篇文章写得不错，记录下：https://xie.infoq.cn/article/19e95a78e2f5389588debfb1c
]]></description><category></category></item><item><title><![CDATA[Protocol Buffer 序列化原理大揭秘]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/116520604</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/116520604</guid><author>xiaoyi5224765</author><pubDate>Sat, 08 May 2021 11:03:13 +0800</pubDate><description><![CDATA[这篇文章写得非常的棒，很清晰的介绍protobuf的原理。mark一下~

连接：https://blog.youkuaiyun.com/carson_ho/article/details/70568606
]]></description><category></category></item><item><title><![CDATA[Elasticsearch分⽚及其⽣命周期]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115837902</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115837902</guid><author>xiaoyi5224765</author><pubDate>Sun, 18 Apr 2021 19:20:01 +0800</pubDate><description><![CDATA[分⽚的内部原理

什么是 ES 的分⽚：
	ES 中最⼩的⼯作单元 / 是⼀个 Lucene 的 Index。
	
	⼀些问题：
	为什么 ES 的搜索是近实时的(1 秒后被搜到)？
		ES 如何保证在断电时数据也不会丢失？
		为什么删除⽂档，并不会⽴刻释放空间？
	
倒排索引不可变性

倒排索引采⽤ Immutable Design，⼀旦⽣成，不可更改
	不可变性，带来了的好处如下：
⽆需考虑并发写⽂件的问题，避免了锁机制带来的性能问题
	⼀旦读⼊内核的⽂件系统缓存，便留在哪⾥。只要⽂件系统存有⾜够的]]></description><category></category></item><item><title><![CDATA[Elasticsearch⽂档分布式存储]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115837812</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115837812</guid><author>xiaoyi5224765</author><pubDate>Sun, 18 Apr 2021 19:06:31 +0800</pubDate><description><![CDATA[⽂档存储在分⽚上

⽂档会存储在具体的某个主分⽚和副本分⽚上：例如 ⽂档 1， 会存储在 P0 和 R0 分⽚上
	⽂档到分⽚的映射算法
	确保⽂档能均匀分布在所⽤分⽚上，充分利⽤硬件资源，避免部分机器空闲，部分机器繁忙
		潜在的算法
	随机 / Round Robin。当查询⽂档 1，分⽚数很多，需要多次查询才可能查到 ⽂档 1
		维护⽂档到分⽚的映射关系，当⽂档数据量⼤的时候，维护成本⾼
		实时计算，通过⽂档 1，⾃动算出，需要去那个分⽚上获取⽂档
	
⽂档到分⽚的路由算法

shard = ha]]></description><category></category></item><item><title><![CDATA[Elasticsearch集群及选主与脑裂问题]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115835010</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115835010</guid><author>xiaoyi5224765</author><pubDate>Sun, 18 Apr 2021 17:11:03 +0800</pubDate><description><![CDATA[分布式特性 


Elasticsearch 的分布式架构带来的好处
	存储的⽔平扩容，⽀持 PB 级数据
		提⾼系统的可⽤性，部分节点停⽌服务，整个集群的服务不受影响
	
	Elasticsearch 的分布式架构
	不同的集群通过不同的名字来区分，默认名字 “elasticsearch”
		通过配置⽂件修改，或者在命令⾏中 -E cluster.name=geektime 进⾏设定
	
Coordinating Node

处理请求的节点，叫 Coordinating Node
	路由请求到正确的节]]></description><category></category></item><item><title><![CDATA[Elasticsearch基本概念（2）]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115827674</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115827674</guid><author>xiaoyi5224765</author><pubDate>Sun, 18 Apr 2021 14:35:57 +0800</pubDate><description><![CDATA[节点

Master-eligible nodes 和 Master Node

每个节点启动后，默认就是一个Master eligible节点
	可以设置 node.master：false 禁止
	
Master-eligible节点可以参加选主流程，成为Master节点
	当第一个节点启动时候，它会将自己选举成Master节点
	每个节点上都保存了集群的状态，只有Master节点才能修改集群的状态信息
	任意节点都能修改信息会导致数据的不一致性
		集群状态（C山ster State）,维护了一个集.]]></description><category></category></item><item><title><![CDATA[Elasticsearch基本概念（1）]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115804782</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115804782</guid><author>xiaoyi5224765</author><pubDate>Sun, 18 Apr 2021 01:08:15 +0800</pubDate><description><![CDATA[Elasticsearch基本概念



Index索引

type类型
	document文档
Node节点

Shard节点


文档（Document）

Elasticsearch是面向文档的，文档是所有可搜索数据的最小单位

	
		日志文件中的日志项
		
		
		一本电影的具体信息/—张唱片的详细信息
		
		
		MP3播放器里的一首歌/ 一篇PDF文档中的具体内容
		
	
	文档会被序列化成JSON格式，保存在Elasticsearch中
	
		JSON对象由字段组成
		
	..]]></description><category></category></item><item><title><![CDATA[传输控制协议（TCP）]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115712685</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115712685</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 23:40:10 +0800</pubDate><description><![CDATA[一、TCP报文段结构



二、TCP连接管理

（1）三次握手



为什么要三次握手？

1.防止过期、失效的连接请求到达后，导致无效连接的建立。

2.确保连接双方彼此完全清楚对方状态，保证可靠、稳定的建立连接。

（2）四次挥手





为什么要四次挥手?

1.为了确保连接断开的可靠，不会由于不可靠连接断开破坏TCP的可靠数据传输。

2.四次挥手断开连接称为对称断开连接，要求两端都主动提出断开连接请求，这样可以确保双方均能确认是否全部收到对方的数据，达到可靠传输的目的

为什么客户端需要等..]]></description><category></category></item><item><title><![CDATA[seata源码解析：AT模式-启动分析]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115712357</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115712357</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 23:28:02 +0800</pubDate><description><![CDATA[引言

在官方例子中，AT模式启动主要会加载：io.seata.spring.annotation.GlobalTransactionScanner 这个bean，使用AT模式必须在执行业务功能的方法上加上@GlobalTransactional注解，接下来我们来看看seata启动时做了哪些事情。

xml配置bean：dubbo-business.xml


&lt;bean class="io.seata.spring.annotation.GlobalTransactionScanner"&gt;
 ]]></description><category></category></item><item><title><![CDATA[seata源码解析：RPC模块详解]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115710166</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115710166</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 21:51:06 +0800</pubDate><description><![CDATA[前言

Seata是一个分布式事务解决方案框架，既然是分布式性质的事务解决方案，那么Seata必然涉及到网络通信。Seata内部实现了一个RPC模块用于RM、TM、TC进行事务的创建、提交、回滚等操作之间的通信。

项目结构

Seata rpc模块位于core项目中，代码结构整体预览如下所示：



源码分析

Seata是使用netty做为RPC的底层通信，接下来我们先分析下Seata对netty模块的使用。

Seata封装的rpc通信类图如下：



1.Netty Server通信模块

1.1 ]]></description><category></category></item><item><title><![CDATA[Sentinel源码阅读：集群限流]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706426</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706426</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 19:05:04 +0800</pubDate><description><![CDATA[使用场景

在某种产景下，我们提供的服务器资源不是很平均如下图所示，4个服务提供者分别有2c4g的配置它最高tps为1000，有4c8g的配置最高tps为2000。



在这种产景下我们为了更加充分的利用服务器资源和保障服务不被流量压垮，那么对不同配置的服务器添加不同的限流阈值。如果我们引入Sentinel这种机制，它无法对多个机器配置不同的限流阈值。所以我们需要引入另外的一种限流机制--集群限流。

集群限流主要是为所有的provider设置一个整体阈值，比如上图中可以设置一个整体为6000的阈值。

]]></description><category></category></item><item><title><![CDATA[Setinel源码阅读：系统自适应保护]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706331</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706331</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 18:59:00 +0800</pubDate><description><![CDATA[概述

Sentinel 系统自适应限流从整体维度对应用入口流量进行控制，结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标，通过自适应的流控策略，让系统的入口流量和系统的负载达到一个平衡，让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

Sentinel系统自适应限流参考了TCP BBR实现，根据系统能处理的请求和允许进来的请求来做一个平衡，而不是通过一个系统load来做限流，它最终的目的是在系统不被拖垮的情况下，提高系统吞吐量，而不是load一定]]></description><category></category></item><item><title><![CDATA[Sentinel源码阅读：RateLimiterController匀速排队]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706271</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706271</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 18:53:36 +0800</pubDate><description><![CDATA[RateLimiterController 详解

这一篇文章主要介绍Sentinel中关于匀速排队的限流机制。

匀速排队限流的核心思想是以固定的时间间隔让请求通过，当请求到来时如果当前请求距离上个请求通过的时间间隔不小于预设的值则让请求通过。否则，计算当前请求预期通过时间，如果当前请求通过的时间小于预设的timeout时间，则计算当前时间与预设时间的差值，休眠等待直到预设时间到来（排队等待处理）。若预期时间大于timeout时间则拒接该请求通过。

这种限流机制主要是限制突发流量，这时我们不希望把所有的]]></description><category></category></item><item><title><![CDATA[Sentinel源码阅读：流控管理]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706013</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115706013</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 18:45:38 +0800</pubDate><description><![CDATA[Sentinel FlowSlot 流控管理



sentinel 触发流控的类为FlowSlot，在sentinel中触发流控需要经过以下几个步骤：

设置流控规则
	采集调用信息
	根据调用信息、流控规则决定是否进行限流
1.FlowSlot

我们先来了解下FlowSlot的类注释，通过注释来认识FlowSlot类有哪些功能，会做一些什么样的处理：

合并了从以前的插槽（NodeSelectorSlot，ClusterNodeBuilderSlot和StatisticSlot），FlowSlot收.]]></description><category></category></item><item><title><![CDATA[Sentinel源码阅读：实时数据采集]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115705841</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115705841</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 18:34:32 +0800</pubDate><description><![CDATA[Sentinel实时数据采集

要实现限流需要进行数据采集，这一篇文章将重点解析数据采集的实现原理。



由上图可知，Sentinel中负责数据采集StatisticSlot是在责任链靠前的位置，StatisticSlot组件负责收集调用信息为后面的Slot进行相应的限流、熔断提供支撑，可以说StatisticSlot是Sentinel中核心之一。

StatisticSlot类的注释，当进入这个Slot时我们需要分别计算以下各项：


	资源ID的集群节点的总统计信息
		来自不同调用者/来源的群集节点]]></description><category></category></item><item><title><![CDATA[Elasticsearch中text与keyword的区别]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115699487</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115699487</guid><author>xiaoyi5224765</author><pubDate>Wed, 14 Apr 2021 15:12:40 +0800</pubDate><description><![CDATA[text类型


1:支持分词，全文检索,支持模糊、精确查询,不支持聚合,排序操作;
    2:test类型的最大支持的字符长度无限制,适合大字段存储；
使用场景：
    存储全文搜索数据, 例如: 邮箱内容、地址、代码块、博客文章内容等。
    默认结合standard analyzer(标准解析器)对文本进行分词、倒排索引。
    默认结合标准分析器进行词命中、词频相关度打分。


keyword类型


1:不进行分词，直接索引,支持模糊、支持精确匹配，支持聚合、排序操作。
2:keyword]]></description><category></category></item><item><title><![CDATA[常用注册中心对比]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115680844</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115680844</guid><author>xiaoyi5224765</author><pubDate>Tue, 13 Apr 2021 22:16:10 +0800</pubDate><description><![CDATA[常用的注册中心如下：



根据上表的对比我们可以从以下几个维度得出结论：


	生态:各注册中心对Go语言都有支持，但是Nacos、 Consul、Etcd 社区活跃，zookeeper和Eureka社区活跃度较低；
	
	
	易用性：Nacos、Eureka、Consul都有现成的管控平台，Etcd、zookeeper本身作为kv存储，没有相应的管控平台，Nacos支持中文界面，比较符合国人使用习惯；
	
	
	场景支持：CP模型主要针对强一致场景，如金融类，AP模型适用于高可用场景，Nacos可以同时]]></description><category></category></item><item><title><![CDATA[常见的ES面试题]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115599229</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115599229</guid><author>xiaoyi5224765</author><pubDate>Sun, 11 Apr 2021 14:42:58 +0800</pubDate><description><![CDATA[题记


git上发现了网友总结的Elasticsearch BAT大厂面试题。只有题目，部分有答案，但不全。 正好抽出一些时间一起梳理一下。 既然是面试题，每个人都会有自己的结合业务场景的答案，没有非常标准的答案。 欢迎大家留言拍砖指正。


1、elasticsearch了解多少，说说你们公司es的集群架构，索引数据大小，分片有多少，以及一些调优手段 。

面试官：想了解应聘者之前公司接触的ES使用场景、规模，有没有做过比较大规模的索引设计、规划、调优。 解答： 如实结合自己的实践场景回答即可。 比如：]]></description><category></category></item><item><title><![CDATA[下一代低延迟垃圾收集器：ZGC]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115596822</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115596822</guid><author>xiaoyi5224765</author><pubDate>Sun, 11 Apr 2021 14:23:56 +0800</pubDate><description><![CDATA[ZGC垃圾收集器介绍

ZGC（Z Garbage Collector）是一款由Oracle公司研发的，以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局，（暂时）不设年龄分代，使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入，还在实验阶段，主要特点是：回收TB级内存（最大4T），停顿时间不超过10ms。

动态Region

ZGC的Region可以具有如图所示的大、中、小三类容量：



小型Region（Small Region）：]]></description><category></category></item><item><title><![CDATA[Seata源码解析：术语表]]></title><link>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115594075</link><guid>https://blog.youkuaiyun.com/xiaoyi5224765/article/details/115594075</guid><author>xiaoyi5224765</author><pubDate>Sun, 11 Apr 2021 13:11:19 +0800</pubDate><description><![CDATA[TC (Transaction Coordinator) - 事务协调者

维护全局和分支事务的状态，驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器

定义全局事务的范围：开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器

管理分支事务处理的资源，与TC交谈以注册分支事务和报告分支事务的状态，并驱动分支事务提交或回滚。


...]]></description><category></category></item></channel></rss>