<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[I_absolutely的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/I_absolutely</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; I_absolutely]]></copyright><item><title><![CDATA[服务熔断降级]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/121227686</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/121227686</guid><author>I_absolutely</author><pubDate>Tue, 09 Nov 2021 14:41:37 +0800</pubDate><description><![CDATA[之前给大家讲了很多服务之前的关系，今天主要给大家介绍，当服务出现问题时，我们该如何解决。
首先我们先进行一些场景分析：

场景一


服务提供端提供了A、B、C、D 4个服务，服务调用方调用服务时，D服务出现了问题，导致调用服务D的请求都出现了超时或者错误，从而进一步影响了整个请求队列的性能。

场景二


我们根据client1和client2 的请求压力确定了我们serverA的负载情况，但是当client2的请求从1500 增加到15000 时，会远远大于ServerA 的性能瓶颈，这个时候也会导致C]]></description><category></category></item><item><title><![CDATA[注册中心介绍--zookeeper分析]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120708867</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120708867</guid><author>I_absolutely</author><pubDate>Mon, 11 Oct 2021 18:26:07 +0800</pubDate><description><![CDATA[上面几篇介绍了RPC调用相关的知识，这次我们了解下关于注册中心的原理和实践。我们主要从下面几个方面进行介绍：

注册中心的作用及设计分析
开源注册中心选型
Nacos注册中心深入分析
Zookeeper实现深入剖析

一、注册中心的作用及设计分析

什么是注册中心？
用来实现微服务实例的自动注册与发现，是分布式系统中的核心基础服务。


没有注册中心


我们可以思考一下没有注册中心的场景。
像上图一样，多个service调用ServiceA，然后ServiceA又需要调用ServiceB、ServiceC]]></description><category></category></item><item><title><![CDATA[RPC服务提供方核心功能设计实现]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120370220</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120370220</guid><author>I_absolutely</author><pubDate>Sat, 18 Sep 2021 16:44:26 +0800</pubDate><description><![CDATA[上一篇讲解了RPC服务调用方的核心功能设计，我们继续介绍RPC服务提供方的核心功能设计。
一、RPC服务提供方核心功能设计实现
1、队列&amp;线程池
将不同类型的请求，放入各自的队列，每个队列分配独立的线程池，资源隔离。

服务为了保证可用性和性能，将接收到请求根据请求的类型放入到不同的等待队列中，通过异步调用的方式执行请求。
2、超时丢弃
有的一些行业我们更重要的是要保证服务的大体可用，柔性可用，必要的时候可以丢弃一些请求。


/**
* 执行异步任务,IO线程任务入队
* 超时时间
* 超过此时间]]></description><category></category></item><item><title><![CDATA[RPC服务调用方核心功能设计]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120362492</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120362492</guid><author>I_absolutely</author><pubDate>Sat, 18 Sep 2021 10:30:30 +0800</pubDate><description><![CDATA[上一篇我们介绍了RPC基础服务的实现，现在我们接着将如何将一个RPC服务做成一个标准的产品还有哪些需要实现的。
我们的服务消费方仅仅实现远程调用是不够的，离产品化还有很长一段距离。
Consumer的核心功能包括：

连接管理
负载均衡
请求路由
超时处理
健康检查

Provider的核心功能包括：

队列/线程池
超时丢弃
优雅关闭
过载保护

一、RPC服务消费方核心功能设计实现
1、连接管理
首先我们来分析下consumer的连接管理功能设计。

业务逻辑发起一个远程调用服务，通过proxy进行调用]]></description><category></category></item><item><title><![CDATA[RPC服务调用]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120347104</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120347104</guid><author>I_absolutely</author><pubDate>Fri, 17 Sep 2021 13:22:21 +0800</pubDate><description><![CDATA[RPC服务调用一、RPC实现原理深入分析1、RPC的定义（1）RPC作用（2）RPC核心组成（3）RPC调用方式二、精简版RPC调用代码实现1、场景2、接口设计3、序列化协议
最近在做调用系统相关的服务，采用主从的方式，主从通信通过RPC的方式实现，所以跟大家分享下RPC相关的知识。
主要从下面的四个方面介绍RPC：

RPC实现原理深入分析
精简版RPC调用代码实现
RPC服务消费方核心功能设计实现
RPC服务提供方核心功能设计实现

代码相关的可以参考我的git地址：https://github.com]]></description><category></category></item><item><title><![CDATA[consul 注册中心使用]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120214364</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120214364</guid><author>I_absolutely</author><pubDate>Fri, 10 Sep 2021 09:02:36 +0800</pubDate><description><![CDATA[1.命令行启动consul客户端设定集群
# server： 以server身份启动。默认是client
# bootstrap-expect：集群要求的最少server数量，当低于这个数量，集群即失效。
# data-dir：data存放的目录，更多信息请参阅consul数据同步机制
# node：节点id，集群中的每个node必须有一个唯一的名称。默认情况下，Consul使用机器的hostname
# bind：监听的ip地址。默认绑定0.0.0.0，可以不指定。表示Consul监听的地址,而且它必须能]]></description><category></category></item><item><title><![CDATA[使用OpenFeign 进行RPC调用]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120214349</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120214349</guid><author>I_absolutely</author><pubDate>Fri, 10 Sep 2021 09:01:54 +0800</pubDate><description><![CDATA[OpenFeign
Feign是一个声明式web服务客户端。Spring Cloud增加了对Spring MVC注解的支持，并支持使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成了Eureka, Spring Cloud CircuitBreaker，以及Spring Cloud LoadBalancer，在使用Feign时提供一个负载均衡的http客户端。
使用feign
可以通过导入spring-cloud-starter-openfeign在]]></description><category></category></item><item><title><![CDATA[使用Canal同步数据到ES]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120178728</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120178728</guid><author>I_absolutely</author><pubDate>Wed, 08 Sep 2021 14:10:49 +0800</pubDate><description><![CDATA[一、Canal概述
1、Canal是什么？
Canal是阿里巴巴开源的一个组件，主要用途是基于 MySQL 数据库增量日志解析，提供增量数据订阅和消费。canal的介绍，在github 上的官方文档介绍的很好，我这边就不介绍了。感兴趣的查看git地址：https://github.com/alibaba/canal
2、Canal版本
Canal 1.1.4版本，迎来最重要的WebUI能力，引入canal-admin工程，支持面向WebUI的canal动态 管理能力，支持配置、任务、日志等在线白屏运维能力，]]></description><category></category></item><item><title><![CDATA[Kafka基本使用]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120053567</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120053567</guid><author>I_absolutely</author><pubDate>Thu, 02 Sep 2021 09:15:49 +0800</pubDate><description><![CDATA[一、概述
1、kafka是什么
Kafka是一个分布式、分区的、多副本的、多订阅者，基于zookeeper协调 的，发布/订阅模式的消息队列(Message Queue)。
Kafka主要设计目标如下:

以时间复杂度为O(1)的方式提供消息持久化能力，即使对TB级以上数据也能保证常数时间的访问性能
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输
支持Kafka Server(Kafka Broker)间的消息分区，及分布式消费，同时保证每个partition内的消息顺序传输
]]></description><category></category></item><item><title><![CDATA[HBase详解]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/120004869</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/120004869</guid><author>I_absolutely</author><pubDate>Mon, 30 Aug 2021 20:31:53 +0800</pubDate><description><![CDATA[HBase详解一、HBase是什么1、HBase的基本架构一、HBase是什么1、HBase的基本架构2、HBase的基本架构二、HBase操作1、写流程2、Flush3、读流程4、StoreFile Compaction5、Region Split三、HBase优化1、HDFS层优化2、HBase自身优化3、预分区4、Rowkey设计2、HBase的基本架构二、HBase操作1、写流程2、Flush3、读流程4、StoreFile Compaction5、Region Split三、HBase优化1、HD]]></description><category></category></item><item><title><![CDATA[Java并发编程基础]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/118302244</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/118302244</guid><author>I_absolutely</author><pubDate>Mon, 28 Jun 2021 14:02:31 +0800</pubDate><description><![CDATA[1、8锁现象
2、集合类不安全

CopyOnWriteArrayList
CopyOnWriteArraySet
ConcurrentHashMap

3、常用的辅助类


CountDownLatch
public class CountDownLatchDemo {

    public static void main(String[] args) throws InterruptedException {
        // 总数是6
        CountDownLatch countD]]></description><category></category></item><item><title><![CDATA[spring中ApplicationContext学习]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/105751836</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/105751836</guid><author>I_absolutely</author><pubDate>Sat, 25 Apr 2020 16:25:45 +0800</pubDate><description><![CDATA[&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 虽然Spring已经火了这么多年了，工作中也有偶尔接触到，却没有怎么深入了解。现在作为一个小白开始学习，也是以此博客作为一个记录，如果有不对的地方，希望大家指出来，共同探讨。
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 今天跟大家一起学习下有关spring中ApplicationContext的相关内容。
&n...]]></description><category></category></item><item><title><![CDATA[自己动手实现spring创建bean]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/105751798</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/105751798</guid><author>I_absolutely</author><pubDate>Sat, 25 Apr 2020 16:24:39 +0800</pubDate><description><![CDATA[场景：对账户信息进行操作
步骤

首先，持久化层操作

public interface AccountDao {
    void saveAccount();
}

新增一个账户信息，持久化层操作实现类
public class AccountDaoImpl implements AccountDao {
    @Override
    public void saveAccount() ...]]></description><category></category></item><item><title><![CDATA[自己实现mybatis的基本功能]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/105747822</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/105747822</guid><author>I_absolutely</author><pubDate>Sat, 25 Apr 2020 12:28:16 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 最近在学习mybatis相关的内容，对mybatis功能的强大还有使用方便感受很强，也很想去了解他的实现原理，根据他的原理自己实现了一个简单版的，在这个过程中也使用到了工厂设计模式、动态代理等等相关的知识，也顺带复习和学习，有不对之处，还请各位大佬多多指导。
###1.  使用的xml的方式
具体配置如下：

...]]></description><category></category></item><item><title><![CDATA[用java操作docker中的minio]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/105747790</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/105747790</guid><author>I_absolutely</author><pubDate>Sat, 25 Apr 2020 12:24:35 +0800</pubDate><description><![CDATA[一、背景
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近工作中接触数据安全相关的内容，顺便接触一下现在最新的私有云相关的一些技术，下面是工作中的一个场景。为了保证数据的安全性，需要确保每个客户的数据我们保存在各自的一个存储中，用户之间数据是不可见的。这样有几种解决方法：
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使...]]></description><category></category></item><item><title><![CDATA[spark提交任务详解]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/102485584</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/102485584</guid><author>I_absolutely</author><pubDate>Thu, 10 Oct 2019 16:47:50 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[CAS和AQS]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/101757749</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/101757749</guid><author>I_absolutely</author><pubDate>Mon, 30 Sep 2019 10:51:40 +0800</pubDate><description><![CDATA[锁：
悲观锁：写（增删改）多，读（查）少  Lock
乐观锁：读（查）多，写（增删改）少  版本
一、CAS
1、概念
CompareAndSet  CompareAndSwap：一种无锁的原子操作，乐观锁
思想：给你一个期望值，与你现在的值相比，如果相等再修改，不相等什么事情都不做
CAS（V, E, N)
2、作用及优点
CAS实现稍微有点复杂，无锁，不存在阻塞，提高了效率、CPU的吞吐量，性...]]></description><category></category></item><item><title><![CDATA[单例模型详解]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/101757524</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/101757524</guid><author>I_absolutely</author><pubDate>Mon, 30 Sep 2019 10:48:28 +0800</pubDate><description><![CDATA[一、单例的由来
在我们的程序中，如果需要多个线程操作同一对象，需要保证对象的唯一性。如何保证唯一性呢？
二、解决的问题
对象实例化过程中，只实例化一次
三、解决的思路
有一个实例化过程（仅仅只有一次），提供返回实例的方法
四、单例模式的分类
我们从几个方面考虑单例模型的性能：安全性、
1、饿汉式
public class HungrySingleton {
// 加载的时候产生实例对象
    p...]]></description><category></category></item><item><title><![CDATA[volatile实现原理]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/101757481</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/101757481</guid><author>I_absolutely</author><pubDate>Mon, 30 Sep 2019 10:46:17 +0800</pubDate><description><![CDATA[首先我们来讨论一种情况，现在有两个线程，一个是读线程，读取一个共享数据并打印，一个是写线程，更新共享数据，这样一个情形的原理是什么样的？
这样会出现一个什么样的问题呢？就是一个写线程将数据读取到内存更新的时候，读线程去读取这个数据，导致读写线程的数据不一致。
这个有什么解决方案呢?

总线加锁（粒度太大）
MESI（）

读操作：不做任何事情，把cache中的数据读到寄存器
写操作：发出信号，通知...]]></description><category></category></item><item><title><![CDATA[spark streaming与storm比较]]></title><link>https://blog.youkuaiyun.com/I_absolutely/article/details/101373929</link><guid>https://blog.youkuaiyun.com/I_absolutely/article/details/101373929</guid><author>I_absolutely</author><pubDate>Wed, 25 Sep 2019 17:05:15 +0800</pubDate><description><![CDATA[Storm的计算模型：
针对每条记录的流式实时计算框架，是一种比较纯粹的实时计算框架，但是存在一个问题！
Storm由于每来一条数据都会处理下，所以吞吐量并不高。
为什么吞吐量不高？
因为每条数据过来就直接处理，那么每条数据的处理都存在开销。也就是说，storm机器的很多计算资源都会消耗在大量的其他方面，比如数据的传输、校研，通信等等，所以吞吐量并不能说非常高！
Spark streaming流...]]></description><category></category></item></channel></rss>