自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 服务熔断降级

之前给大家讲了很多服务之前的关系,今天主要给大家介绍,当服务出现问题时,我们该如何解决。首先我们先进行一些场景分析:场景一服务提供端提供了A、B、C、D 4个服务,服务调用方调用服务时,D服务出现了问题,导致调用服务D的请求都出现了超时或者错误,从而进一步影响了整个请求队列的性能。场景二我们根据client1和client2 的请求压力确定了我们serverA的负载情况,但是当client2的请求从1500 增加到15000 时,会远远大于ServerA 的性能瓶颈,这个时候也会导致C

2021-11-09 14:41:37 763

原创 注册中心介绍--zookeeper分析

上面几篇介绍了RPC调用相关的知识,这次我们了解下关于注册中心的原理和实践。我们主要从下面几个方面进行介绍:注册中心的作用及设计分析开源注册中心选型Nacos注册中心深入分析Zookeeper实现深入剖析一、注册中心的作用及设计分析什么是注册中心?用来实现微服务实例的自动注册与发现,是分布式系统中的核心基础服务。没有注册中心我们可以思考一下没有注册中心的场景。像上图一样,多个service调用ServiceA,然后ServiceA又需要调用ServiceB、ServiceC

2021-10-11 18:26:07 707 1

原创 RPC服务提供方核心功能设计实现

上一篇讲解了RPC服务调用方的核心功能设计,我们继续介绍RPC服务提供方的核心功能设计。一、RPC服务提供方核心功能设计实现1、队列&线程池将不同类型的请求,放入各自的队列,每个队列分配独立的线程池,资源隔离。服务为了保证可用性和性能,将接收到请求根据请求的类型放入到不同的等待队列中,通过异步调用的方式执行请求。2、超时丢弃有的一些行业我们更重要的是要保证服务的大体可用,柔性可用,必要的时候可以丢弃一些请求。/*** 执行异步任务,IO线程任务入队* 超时时间* 超过此时间

2021-09-18 16:44:26 286

原创 RPC服务调用方核心功能设计

上一篇我们介绍了RPC基础服务的实现,现在我们接着将如何将一个RPC服务做成一个标准的产品还有哪些需要实现的。我们的服务消费方仅仅实现远程调用是不够的,离产品化还有很长一段距离。Consumer的核心功能包括:连接管理负载均衡请求路由超时处理健康检查Provider的核心功能包括:队列/线程池超时丢弃优雅关闭过载保护一、RPC服务消费方核心功能设计实现1、连接管理首先我们来分析下consumer的连接管理功能设计。业务逻辑发起一个远程调用服务,通过proxy进行调用

2021-09-18 10:30:30 280

原创 RPC服务调用

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

2021-09-17 13:22:21 4987 1

原创 consul 注册中心使用

1.命令行启动consul客户端设定集群# server: 以server身份启动。默认是client# bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。# data-dir:data存放的目录,更多信息请参阅consul数据同步机制# node:节点id,集群中的每个node必须有一个唯一的名称。默认情况下,Consul使用机器的hostname# bind:监听的ip地址。默认绑定0.0.0.0,可以不指定。表示Consul监听的地址,而且它必须能

2021-09-10 09:02:36 421

原创 使用OpenFeign 进行RPC调用

OpenFeignFeign是一个声明式web服务客户端。Spring Cloud增加了对Spring MVC注解的支持,并支持使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成了Eureka, Spring Cloud CircuitBreaker,以及Spring Cloud LoadBalancer,在使用Feign时提供一个负载均衡的http客户端。使用feign可以通过导入spring-cloud-starter-openfeign在

2021-09-10 09:01:54 1414

原创 使用Canal同步数据到ES

一、Canal概述1、Canal是什么?Canal是阿里巴巴开源的一个组件,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。canal的介绍,在github 上的官方文档介绍的很好,我这边就不介绍了。感兴趣的查看git地址:https://github.com/alibaba/canal2、Canal版本Canal 1.1.4版本,迎来最重要的WebUI能力,引入canal-admin工程,支持面向WebUI的canal动态 管理能力,支持配置、任务、日志等在线白屏运维能力,

2021-09-08 14:10:49 6491

原创 Kafka基本使用

一、概述1、kafka是什么Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调 的,发布/订阅模式的消息队列(Message Queue)。Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输支持Kafka Server(Kafka Broker)间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输

2021-09-02 09:15:49 1336

原创 HBase详解

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

2021-08-30 20:31:53 327

原创 Java并发编程基础

1、8锁现象2、集合类不安全CopyOnWriteArrayListCopyOnWriteArraySetConcurrentHashMap3、常用的辅助类CountDownLatchpublic class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { // 总数是6 CountDownLatch countD

2021-06-28 14:02:31 65

原创 spring中ApplicationContext学习

        虽然Spring已经火了这么多年了,工作中也有偶尔接触到,却没有怎么深入了解。现在作为一个小白开始学习,也是以此博客作为一个记录,如果有不对的地方,希望大家指出来,共同探讨。        今天跟大家一起学习下有关spring中ApplicationContext的相关内容。&n...

2020-04-25 16:25:45 262

原创 自己动手实现spring创建bean

场景:对账户信息进行操作步骤首先,持久化层操作public interface AccountDao { void saveAccount();}新增一个账户信息,持久化层操作实现类public class AccountDaoImpl implements AccountDao { @Override public void saveAccount() ...

2020-04-25 16:24:39 212

原创 自己实现mybatis的基本功能

         最近在学习mybatis相关的内容,对mybatis功能的强大还有使用方便感受很强,也很想去了解他的实现原理,根据他的原理自己实现了一个简单版的,在这个过程中也使用到了工厂设计模式、动态代理等等相关的知识,也顺带复习和学习,有不对之处,还请各位大佬多多指导。###1. 使用的xml的方式具体配置如下:...

2020-04-25 12:28:16 236

原创 用java操作docker中的minio

一、背景       最近工作中接触数据安全相关的内容,顺便接触一下现在最新的私有云相关的一些技术,下面是工作中的一个场景。为了保证数据的安全性,需要确保每个客户的数据我们保存在各自的一个存储中,用户之间数据是不可见的。这样有几种解决方法:       使...

2020-04-25 12:24:35 408

原创 spark提交任务详解

2019-10-10 16:47:50 137

原创 CAS和AQS

锁:悲观锁:写(增删改)多,读(查)少 Lock乐观锁:读(查)多,写(增删改)少 版本一、CAS1、概念CompareAndSet CompareAndSwap:一种无锁的原子操作,乐观锁思想:给你一个期望值,与你现在的值相比,如果相等再修改,不相等什么事情都不做CAS(V, E, N)2、作用及优点CAS实现稍微有点复杂,无锁,不存在阻塞,提高了效率、CPU的吞吐量,性...

2019-09-30 10:51:40 140

原创 单例模型详解

一、单例的由来在我们的程序中,如果需要多个线程操作同一对象,需要保证对象的唯一性。如何保证唯一性呢?二、解决的问题对象实例化过程中,只实例化一次三、解决的思路有一个实例化过程(仅仅只有一次),提供返回实例的方法四、单例模式的分类我们从几个方面考虑单例模型的性能:安全性、1、饿汉式public class HungrySingleton {// 加载的时候产生实例对象 p...

2019-09-30 10:48:28 187

原创 volatile实现原理

首先我们来讨论一种情况,现在有两个线程,一个是读线程,读取一个共享数据并打印,一个是写线程,更新共享数据,这样一个情形的原理是什么样的?这样会出现一个什么样的问题呢?就是一个写线程将数据读取到内存更新的时候,读线程去读取这个数据,导致读写线程的数据不一致。这个有什么解决方案呢?总线加锁(粒度太大)MESI()读操作:不做任何事情,把cache中的数据读到寄存器写操作:发出信号,通知...

2019-09-30 10:46:17 179

原创 spark streaming与storm比较

Storm的计算模型:针对每条记录的流式实时计算框架,是一种比较纯粹的实时计算框架,但是存在一个问题!Storm由于每来一条数据都会处理下,所以吞吐量并不高。为什么吞吐量不高?因为每条数据过来就直接处理,那么每条数据的处理都存在开销。也就是说,storm机器的很多计算资源都会消耗在大量的其他方面,比如数据的传输、校研,通信等等,所以吞吐量并不能说非常高!Spark streaming流...

2019-09-25 17:05:15 236

原创 Java并发synchronized详解

今天和大家一起学习下并发编程,先举一个简单的生活例子,我们去医院或者银行排队叫号,那每个工作人员之间如何保证不会叫重号呢?public class TicketDemo extends Thread { private int index = 1; private static final int MAX = 10; @Override ...

2019-09-22 15:46:20 142

原创 Java内存模型

Java内存模型1、基本概念程序:代码,是为了完成某一个任务,代码序列(静态的概念)进程:程序在某些数据上的一次运行(动态的概念)线程:一个进程可能包含一个或多个线程(占有资源的独立单元)2、JVM与线程JVM什么时候启动?类被调用是时启动JVM,JVM线程 启动 其他线程(mian…)3、JVM内存模型方法区:类信息,常量,static变量,JIT (利用反射加载类)...

2019-09-22 10:20:00 166

原创 redis基础知识

1、redis存储 key -> valueredis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也可以作为有效的key值key取值原则键值不需要太长,消耗内存,且在数据中查找这类键值的计算成本较高键值不宜过短,可读性较差2、查看帮助进入到redis客户端,可以查看相关帮助文档...

2019-09-17 22:01:53 102

原创 HBase工作中常用的一些优化方案

1、表的设计Pre-creating Regions(预分区)默认情况下,在创建Hbase表的时候会自动创建一个region分区,当导入数据的时候,所有的Hbase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入Hbase时,会按照region分区情况,在集群内做数据的负载均衡。...

2019-09-14 23:49:16 154

原创 hive工作中用到的一些优化策略

1、hive抓取策略hive.fetch.task.conversion = more/nonemore不走mr,none走mr2、explain 显示执行计划3、设置本地运行模式set hive.exec.mode.local.auto = truehive.exec.mode.local.inputbytes.max 默认128M,表示加载文件的最大值,若大于该配置仍会以集群...

2019-09-14 09:21:08 180

原创 linux简单命令

linux的一些基本知识

2019-08-29 22:32:09 122

原创 Hadoop卸载或增加节点

卸载节点或者增加节点: 方式一:静态的增添删除:将集群关闭,修改配置文件(etc/hadoop/slaves),重新启动集群(很黄很暴力,不够人性化)。 方式二:动态的增加和卸载节点。卸载DataNode节点: 1)要在HDFS主节点NameNode上,进行配置。 a)在etc/hadoop/hdfs-site.xml中,设置属性值: dfs.hosts.exclude

2015-12-24 00:36:21 2051

原创 Hadoop的伪分布式搭建

我们在搭建伪分布式Hadoop环境,需要将一系列的配置文件配置好。 一、配置文件 1. 配置文件hadoop-env.sh export JAVA_HOME=/opt/modules/jdk1.7.0_67 2. 配置core-site.xml dfs.defaultFS hdfs://hostname:8020

2015-12-23 01:40:40 378

原创 Linux关闭防火墙、SELinux

使用root权限:Linux关闭防火墙: 1. chkconfig –list|grep iptables 2. chkconfig iptables off 永久关闭防火墙 3. chkconfig iptables on 永久开启防火墙关闭SELinux: 编辑/etc/sysconfig/selinux文件 设置:SELINUX=disabled

2015-12-23 01:38:28 575

原创 Linux设置普通用户无密码sudo权限

配置普通用户无密码sudo权限:root用户进入到Linux系统的/etc目录下 cd /etc将sudoers文件赋予写的权限 chmod u+w /etc/sudoers编辑sudoers文件,加入下面一句话: name ALL=(root)NOPASSWD:ALL将sudoer文件写的权限消除 chmod u-w /etc/sudoers

2015-12-23 01:32:51 1173

原创 hadoop安装包的目录结构

初次接触hadoop,了解了hadoop安装包的目录结构,和大家分享下: b**重点内容**in:

2015-12-23 01:27:16 866

原创 工作学习的三大能力

工作学习上的三大能力

2015-11-12 22:58:32 1681

空空如也

空空如也

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

TA关注的人

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