自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 spark学习之入门(一)

spark是一个快速且通用的集群计算平台。spark特点spark是通用的,设计容纳了其它分布式系统拥有的功能,批处理,迭代式计算,交互查询和流处理等。 spark是内存性的,扩充了mapReduce的计算模型spark组件sparkCore包含spark的基本功能,包含任务调度,内存管理,容错机制等,内部定义了RDDs(弹性分布式数据集) 提供了很多API来创建和操作RDDs。为其它组件提供底层的服务。spark sql是spark处理结构化数据的库,就像HIVE SQL一样,可.

2020-08-07 16:10:44 12

原创 hadoop的学习(一)入门

hadoop是一个开源的分布式存储和分布式计算平台。HDFS:分布式文件系统,存储海量的数据 MapReduce:并处理框架,实现任务的分解和调度HDFSBLOCK:HDFS的文件被分成快进行存储,默认大小64Mb。块是文件存储处理的逻辑单元。每个数据块3个副本,分布在两个机架内的三个节点。 NameNode:是管理节点。存放文件元数据。二级NameNode定期同步元数据影像文件和修改日志,防止NameNode故障。文件与数据块的映射表 数据块与数据节点的映射表 接受用户的操作请求

2020-08-05 16:11:37 19

原创 springcloud alibaba之nacos配置

https://www.imooc.com/article/288153配置共享优先级shared-dataids<ext-config<自动

2020-07-28 20:31:50 7

原创 springcloud alibaba之gateway

https://www.imooc.com/article/290804 路由谓词工厂详解https://www.imooc.com/article/290816 过滤器工厂详解https://www.imooc.com/article/290821 全局过滤器https://www.imooc.com/article/290822 gatway监控au...

2020-07-27 23:01:20 8

原创 springcloud alibaba之mq

https://www.imooc.com/article/details/id/290092https://www.imooc.com/article/details/id/290424https://www.imooc.com/article/details/id/290435https://www.imooc.com/article/details/id/290489

2020-07-26 10:26:55 19

原创 springcloud alibaba之Sentinel

https://www.imooc.com/article/289345https://www.imooc.com/article/289384https://www.imooc.com/article/289402https://www.imooc.com/article/289464https://www.imooc.com/article/289562服务容错的思想超时 限流 舱壁模式 断路器模式 sentinel流控规则直接 关联:当关联的资源达到阈值,就限流

2020-07-22 22:54:33 9

原创 zookeeper学习(一)

中间件提供协调服务 作用于分布式文系统 ,支持java特性:一致性:数据一致性,数据按照顺序分批入库 原子性:事务要么成功要么失败,不会局部化 单一视图:客户端连接任一集群中的节点,数据都是一致的 可靠性:每次对zk的操作状态都会保存在服务端 实时性:客户端可以读取到zk服务端的最新数据zk特性之watch机制针对每个节点的操作,都会有一个监督者,watcher当监控的某个对象发生了变化,则触发watcher事件zk中的watcher是一次性的,触发后立即销毁父节点子节点,

2020-07-20 09:24:47 25

原创 springcloud alibaba之Nacos

服务发现的领域模型NameSpace:实线隔离,默认public Group:不同服务可以分到一个组,默认DEFAULT_GROUP service:微服务 cluster:对指定微服务的一个虚拟划分,默认Default instance:微服务实例ribboon的父子上下文重叠,ribbon的懒加载。自定义权重策略import com.alibaba.nacos.api.exception.NacosException;import com.alibaba.nacos..

2020-07-19 22:08:02 44

原创 java内存模型jmm

java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存取出变量的细节。java内存模型规定了所有的变量都要存放在主内存中,每条线程还有自己的工作内存。线程的工作内存中保存了被该线程使用到的变量内存的副本拷贝,线程对变量的所有操作都要在工作内内中进行,而不能直接读写主内存中的变量。不同线程之间变量的值的传递需要线程,工作内存,主内存之间的交互完成。JVM规范定义了线程对内存间交互操作:Lock(锁定):作用于主内存中的变量,把一个变量标识为一条线程.

2020-07-17 12:54:32 21

原创 springcloud学习之Zuul网关

zuul: prefix: "/meetingfilm/" ## 统一前缀 routes: meetingfilm-user: path: /userapi/** serviceId: user-service retryable: true # 是否允许重试 , 饿汉模式 meetingfilm-cinema: path: /cinemaapi/** serviceId: cinema-service .

2020-07-16 10:29:43 26

原创 springcloud学习之Hystrix

Hystrix是用于处理延迟和容错的开源库 Hystrix是用于避免级联故障,提高系统弹性 Hystrix解决了扇出导致的雪崩效应 Hystrix的核心是服务隔离术和熔断 Hystrix的主要作用是服务降级,限流和快速失败 Hystrix自带单体和集群监控https://my.oschina.net/7001/blog/1619842Hystrix两种命令模式HystrixCommand与HystrixObservableCommand对比?Command会以隔离的形式完成run

2020-07-14 14:34:56 31

原创 springcloud学习之eureka和ribbon

服务续约Eureka client通过发送心跳进行续约 默认情况下每30秒发送一次心跳 如果90秒内Eureka server 未收到续约,则进行服务剔除服务下线Eureka client优雅退出时会发送cancel命令 Eureka server 收到cancel命令时会下线服务获取注册列表信息Eureka client会缓存由server获取的注册表信息 Eureka client 会定期更新注册表信息默认30秒与zookeper的对比eureka侧重AP特性,zookep

2020-07-13 14:08:15 20

原创 kafka基础学习(五)集群和集成springcloud config

kafka集群部署kafka天然支持集群 kafka集群天然依赖于zookeeper kafka主要通过brokerId区分不同节点kafka集群之lead选举kafka并没有采用多少投票来选举leader kafka会动态维护一组leader数据的副本ISR kafka会在isr中选择一个速度快的设为leaderkafka集群监控雅虎的CMAK工具。spring cloudconfig示例:port 7002 的configClient@r...

2020-07-08 16:01:05 35

原创 kafka基础学习(四)StreamAPI

kafka stream基础概念stream是处理分析存储在kafka数据的客户端程序库 stream通过state store可以实现高效状态操作 支持原语processor和高层抽象DSLimport org.apache.kafka.common.serialization.Serdes;import org.apache.kafka.streams.KafkaStreams;import org.apache.kafka.streams.StreamsBuilder;.

2020-07-07 17:59:39 32

原创 kafka基础学习(三)ConsumerAPI

Consumer注意事项:单个分区的消息只能由ConsumerGrop中某个Consumer消费,换言之,一个消费者可以消费多个分区,也可以消费一个分区,但是不能多个消费者消费同一个分区 Consumer从partition中消费消息是顺序消费,默认是从头开始 单个ComsumerGrop会消费所有partition中的消息import org.apache.kafka.clients.consumer.ConsumerRecord;import org.apache.kafka.cli.

2020-07-07 17:16:57 54

原创 kafka基础学习(二)ProducerAPI

producerAPIimport org.apache.kafka.clients.producer.*;import java.util.Properties;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;public class ProducerSample { private final static String TOPIC_NAME="jiangz

2020-07-07 14:05:16 27

原创 消息中间件之RocketMQ(二)事务消息与顺序消费以及过滤消息

思路:生产者发送消息并行执行事务单元。执行成功确认消息发送,消息可见状态。执行失败,进入check回调。如果一开始发送消息失败,进入消息check回调。MQ自己维护了一个消息的状态表从而确保消息的可靠性投递。过滤消息Tag方式进行过滤 使用sql表达式过滤 使用filter server 过滤...

2020-07-05 11:35:00 70

原创 JAVA之IO学习(三)AIO

package main.java.com.founder.study.javaio.aio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.channels.AsynchronousChannelGroup;import java.nio.channels.Asynchronou.

2020-07-03 11:54:57 26

原创 JAVA之IO学习(二)NIO聊天室

package main.java.com.founder.study.javaio.socket.nio;import java.io.Closeable;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import j.

2020-07-02 10:13:40 41

原创 消息中间件之RocketMQ(一)

RocketMQ是一款分布式队列模型模型的中间件。4.3.x版本支持分布式事务。支持集群模型,负载均衡,水平拓展。亿级别的消息堆积能力。采用零拷贝的原理,顺序写盘,随机读。概念模型producer:消息生产者,负责产生消息,一般由业务系统负责产生消息 consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费,并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。 push consumer:consumer的一种,需要向consumer对象注册监听器

2020-06-30 22:22:22 49

原创 JAVA之IO学习(二)NIO

非阻塞式IO使用channel代替stream 使用selector监控多条channel 可以在一个线程里处理多个channel I/OBuffer解析buffer既可以写也可以读,一开始我们向buffer写入到了position位置个数据现在想从buffer里面读出数据,调用buffer的flip()方法调整为读模式将position位置指向开始的位置。limit指向已有数据的尾部读完以后我们又想开始写入数据到buffer,调用buffer的clear(...

2020-06-30 15:00:40 46

原创 JAVA之IO学习(二)BIO

BIO编程模型BIO多人聊天服务端import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.HashMap;import java.util.Map;/** * Created 多人聊天服务端 on 2020/6/28. */public class ChatServer { private int DEFAULT_PORT = 8888;

2020-06-28 17:59:48 37

原创 JAVA之IO学习(一)

字符流字节流socket和serverSocker

2020-06-28 13:24:10 35

原创 消息中间件之RabbitMQ(四)set化架构和基础组建的封装

https://www.jianshu.com/p/36bd5d14b3a5https://www.jianshu.com/p/38344551feaa

2020-06-27 18:56:20 66

原创 消息中间件之RabbitMQ(三)集群

主备模式Warren模式远程模式Shovel模式多活模式异地复制数据的主流模式镜像模式Mirror模式保证数据100%不丢失。Mirror镜像队列,目的是为了保证rabbitMq数据的高可靠性解决方案,主要是实现数据同步。镜像集群的构建...

2020-06-27 15:33:03 35

原创 消息中间件之RabbitMQ(二)

RabbitMq整合spring家族rabbitAdminSimpleMessageListenerContainer可以动态设置,在运行中的应用可以动态的修改其消费者的大小,接受消息的模式MessageListenerAdapterMessageConverter

2020-06-27 12:00:28 30

原创 消息中间件之RabbitMQ(一)

RabbitMq是由erLang语言开发的基于AMQP协议的开源消息队列。AMQP特征主要是面向消息,队列,路由(包括点对点、发布订阅),可靠性,安全。AMQP协议更多用在企业系统内,对数据一致性,稳定性和可靠性要求比较高的场景。...

2020-06-26 18:32:09 50

原创 Redis分布式锁实现以及避免死锁

分布式锁:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问分布式锁应该具备哪些条件在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行 高可用的获取锁与释放锁 高性能的获取锁与释放锁 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误) 具备锁失效机制,防止死锁 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败import com.demo.common.RedissonManager;import org.re..

2020-06-23 22:41:46 114

原创 mysql学习之分库分表和监控

分库分表把一个实例中的多个数据库拆分到不同的实例 把一个库中的表分离到不同的数据库中分片的准备分片键的选择分区键要能尽量避免跨分区片查询的发生 分区键要能尽量是各个分片中的数据平均如何在节点上部署分片每个分片使用单一数据库,并且数据库名也相同 将多个分片表存储在一个数据库中,并在表名上加入分片号后缀 在一个节点中部署多个数据库,每个数据库包含一个分片如何分配分片中的数据按分区键的hash值取模来分配 按分区键的范围来分配 利用分区键和分片的映射表来分配如何生成全局唯一

2020-06-23 10:42:42 46

原创 mysql学习之sql优化

慢查询日志分析问题sqlslow_query_log 启动或者停止慢查询日志slow_query_log_file 指定慢查询日志的存储路径和文件long_query_time 指定记录慢查询日志的阈值通常改为0.001秒也就是1毫秒long_queries_not_using_indexs 是否记录未使用索引的sql常用的慢查询日志分析工具mysqldumpslowpt-query-digest实时获取问题sqlselect id,user,host,D...

2020-06-23 09:46:07 32

原创 mysql学习之索引

mysql的索引是在存储引擎层实现的与服务层无关。这也就决定了不同的存储引擎是有不同的实现的。mysql支持的索引类型b-tree索引以b+tree的结果存储数据 能够加快数据的查询速度,通常索引大小远小于数据本身 更适合范围查找使用场景:全值匹配的查询:order_sn = '2342342346763' 匹配最左前缀的查询 匹配列前缀的查询:order_sn like'234234%' 匹配范围的查询:order_sn > '2342342346763' andor..

2020-06-22 17:30:20 36

原创 mysql学习之高可用架构

MMM(multi-master replication manager)作用:监控和管理mysql的主主复制拓扑,并在当前的主服务器失效时,进行主和主备服务器之间的主从切换和故障转移工作。https://www.cnblogs.com/gomysql/p/3671896.html这个写的已经很好了。MHA(Master High Availability)https://www.cnblogs.com/keerya/p/7883766.htmlhttps://www.cnblo...

2020-06-22 12:31:34 35

原创 mysql学习之复制功能

复制:利用二进制日志增量进行。实现在不同服务器上的数据分布 实现读取数据的负载均衡 增强了数据的安全性 实现数据库高可用和故障切换mysql日志mysql二进制日志:记录了所有对数据库的修改事件包括增删改查事件和对表结构的修改事件。二进制日志记录的都是成功执行的。二进制日志的格式基于段的格式 binlog_format = STATMENT.日志记录量相对较小,节约磁盘io. 可能造成主备服务器数据不一致基于行的格式 binlog_format = ROW 复制更加安全..

2020-06-19 18:03:41 37

原创 mysql的学习(三)之数据库优化

数据库结构设计数据存储 数据处理 数据的安全性和完整性数据库设计三范式第一范式数据库表中所有字段都只有单一属性 单一属性的列是由基本的数据类型所构成 设计出来的表都是简单的二维表第二范式数据库表中只有一个业务主键 不能存在非主键列队对于部分主键列的依赖 通俗理解是任意一个字段都只依赖表中的同一个字段第三范式每一个非主属性既不部分依赖于也不传递依赖于业务主键数据库物理设计选择字段合适的数据类型优先考虑数字类型,其次是日期和二进制类型。最好是字符型。对于相同级.

2020-06-19 16:42:36 51

原创 mysql的学习(一)之基准测试

基准测试的目的建立miysql服务器性能的基准线 模拟比当前更高的负载,以找出系统的扩展瓶颈增加数据库并发 测试不同的硬件,软件和操作系统配置常见指标:单位时间内处理的事务数量TPS 单位时间内处理的查询数量QPS 响应时间测试工具之mysqlslapmysql自带的。 可以模拟服务器负载,并输出相关统计信息 可以指定也可以自动生成查询语句测试工具之sysbench...

2020-06-19 14:14:23 47

原创 mysql的学习(一)之mysql性能的影响因素

硬件配置cpu,可使用内存myIsam会把索引缓存到内存中,数据交给操作系统,而innodb会在内存中存储索引和数据 硬盘固态存储和PCIe卡 网络存储SAN和NASmysql体系结构特点:插件式存储引擎,可针对每个表配置myISAM 存储引擎5.5版本之前的默认。MyISAM存储引擎表由MYD(存储数据)和MYI(存储索引)组成。特性:使用表级别锁 表的检查与修复,check table tablename /repair table tablename 支持数据压缩

2020-06-19 13:36:37 43

原创 Redis学习之开发规范

key名设计可读性和可管理性,以业务名或数据库名为前缀防止key冲突,用冒号分隔。例子业务名:表名:id,比如ugc:video:1 简洁性,保证语义的情况下,尽量缩减key的长度 不要包含特殊字符,空格,换行,单双引号value的设计string类型控制在10kb,hash,list,set,zset元素个数不要超过5000big key 的发现:redis-cli --bigkeysdebug object keybig key 的删除 :scan 游标遍历删除命

2020-06-18 16:54:08 30

原创 Redis学习之布隆过滤器

实现原理:参数:m个二进制向量,n个预备数据,k个hash函数构建布隆过滤器:n个预备数据走一遍上面的过程判断元素存在:走一遍上面的过程,如果都是1,则表明存在反之不存在误差率:m/n与误差率成反比,k也是反比基于redis的布隆过滤器定义布隆过滤器构造函数;m,n,k,误差概率 定义布隆过滤器操作函数:add,contain 封装redis位图操作 开发测试样例...

2020-06-18 14:37:53 30

原创 Redis学习之缓存

缓存使用场景降级后端负载,对高消耗的sql结果缓存 加速请求响应,利用redis优化Io响应时间 大量写合并为批量写,如计数器先redis累加再批量写DB缓存更新策略LRU/LFU/FIFO算法剔除 超时剔除:expire 主动更新缓存穿透缓存和数据库都没有命中造成请求大量访问。解决方法:(一)缓存过期时间的空对象。(二)布隆过滤器拦截。缓存雪崩当缓存服务异常或者脱机,造成流量直接到DB.热点key的重建解决方案:(一)互斥锁(二)key永不过时,value.

2020-06-18 12:41:22 34

原创 Redis学习之redisCluster(一)

数据分区方式哈希取余:节点伸缩,数据节点关系变化,导致数据迁移 迁移数量和添加节点有关,建议翻倍扩容一致性哈希:哈希+顺时针(优化取余) 节点伸缩,只影响相邻的两个节点,但是还有数据迁移 翻倍伸缩,保证最小迁移数据和负载均衡虚拟槽分区预设虚拟槽,每个槽映射一个子集,一般比节点数大 良好的哈希函数,例如CRC16 服务端管理节点,槽,数据:例如redisCluster...

2020-06-17 14:10:38 27

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