- 博客(61)
- 资源 (1)
- 收藏
- 关注
转载 dubbo广播模式下,报错
https://www.jianshu.com/p/1a16722d1604?nomobile报错信息:java.net.BindException: Cannot assign requested address (Bind failed)。**解决方法:添加虚拟机参数:-Djava.net.preferIPv4Stack=true **
2020-09-25 17:39:30
372
原创 关于nacos启动问题
今天和前端联调的时候出现了一个非常奇怪的问题。我启动开发环境的时候,启动到用户中心时,日志报了个err passwd的错。我一看这不是redis密码的错误嘛。然后分别去看了nacos配置文件中的redis密码,以及redis的配置文件中的密码,几番确认,发现密码完全一致。那这就见了鬼了。后面我同事小潘建议我通过远程debug来排查。命令如下:java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 x
2020-09-08 22:05:07
1718
原创 redis布隆过滤器
参考文章:https://www.cnblogs.com/qdhxhz/p/11237246.htmlredis的布隆过滤器并不是一种独立的格式,而是基于simple dynamic strings的按位操作的字符串,本质上是个bit数组。要使用布隆过滤器,首先要估算大概要存储的元素个数,以及允许的最大误差。误差越小,所需要的空间就越大。布隆过滤器还有几个主要的参数:n要存储的元素个数,p是误差率。1、布隆过滤器的大小m2、哈希函数的个数k,仅仅用一个哈希函数来求key的哈希值并对元素总个数取
2020-09-05 23:47:52
216
原创 记一次线上问题,布隆过滤器使用中碰到的坑
前几天我开发了的投票小程序终于上线了,上午都运行的好好的,用户投票操作都流畅的很,突然下午3点的时候产品经理找到了我,说投票报错了。投票系统投票报错,这可相当于系统崩溃了啊。吓得我菊花一紧,虎躯一震,赶紧排查起问题来。我飞快的登录了项目部署服务器,打开日志排查,发现某处报了空指针异常,但是没有打印出堆栈信息。光有一个空指针我也没着啊,我仔细查看了代码,是有打印堆栈信息啊。问了旁边的张大师,才知道是tomcat的配置禁用了堆栈信息的打印,百度了一下,加了了一串配置,成功打印出堆栈信息。才发现是布隆过滤器的bi
2020-08-31 19:34:56
1077
转载 springboot项目注册dubbo服务失败,解决failed to req API:/nacos/v1/ns/instance after all servers([127.0.0.1:8848]
如果下载的是已编译完成的nacos。可以直接加命令启动./bin/startup.sh -m standalone详情见:https://blog.youkuaiyun.com/zimou5581/article/details/90607451。
2020-06-30 11:07:22
4142
原创 网易云课堂学习-RPC技术
RPC是什么?过程就是业务处理、计算任务、更直白理解,就是程序,地方法一样,调用远程的过程。采用client-server结构,通过request-response消息模式实现。webservice、restful接口调用是rpc吗?都是,只不过消息的组织方式和消息协议不同RPC协议是什么?RPC调用过程中采用的消息协议,调用过程中将参数编组为消息,接收方需要将消息解组为参数,过程处理结果同样需要编组、解组。消息由哪些部分组成,及消息的表示形式就构成了消息协议。RPC框架是什么?封装好参.
2020-06-16 15:05:40
262
原创 网易云课堂学习-业务系统设计原则
墨菲定律-简介一种心理学效应。由爱德华,墨菲提出。原话:如果由两种或两种以上的方式去做某事,而其中一种方式将导致灾难,则必定有人会做出这种选择。本质:如果事情有变坏的可能,不管这可能性有多小,它总会发生。它告诉我们做事不要抱有侥幸心理,多去了解背后的本质。康威定律-架构上的思考第二点:应该按照业务闭环进行系统拆分/组织架构划分,实现闭环/高内聚/低耦合,减少沟通成本。在合适时机进行系统拆分,不要一开始就把系统/服务拆的非常细,虽然闭环,但是每个人维护的多,维护成本高。...
2020-06-16 13:51:42
269
原创 网易云课堂学习-zk集群
zk集群zk集群 …1zk集群介绍 …41.1. 可靠的zk服务 …41.2. 只要集群的大多数都准备好了,就可以使用这项服务…41.3. 容错集群设置至少需要三个以上服务器…41.4. 建议每个服务运行在单独的服务器…4zk集群搭建 …42.1. initLimit…42.2. synLimit…42.3. 集群节点 …42.4. 创建myid文件…5zk集群监控 …53.1. 四字监控命令 …53.2. JMX…5zk集群-zab协议 …54.1. 崩溃恢复 …54.
2020-06-16 10:08:32
355
原创 网易云课堂学习-zk核心概念
session数据模型znode – 命令规范znode – 节点类型znode – 数据构成znode – 元数据stat结构zookeeper中的时间watch监听机制zookeeper特性
2020-06-15 14:40:32
229
原创 网易云课堂学习-zk入门
什么是zookeeper简介:apache zookeeper是一种用于分布式应用程序的高性能协调服务,提供一种集中式信息存储服务。特点:数据存在内存中,类似文件系统的树形结构(文件和目录),高吞吐量和低延时,集群高可靠。作用:基于zookeeper可以实现分布式统一配置中心、服务注册中心、分布式锁等功能。何为分布式协调服务基于3.4.11版本进行讲解,官网地址:https://zookeeper.apache.org/单机版安装:**下载:**https://archive.apa
2020-06-15 14:19:29
382
原创 网易云课堂学习-redis哨兵机制核心
哨兵机制(sentinel)核心作用用来做redis集群的监控、提醒和故障转移。哨兵机制的代码实现核心运作流程7大概念哨兵如何知道redis主从信息(自动发现机制)什么是master主观下线什么是客观下线哨兵之间如何通信(哨兵之间的自动发现)哪个哨兵负责故障转移?(哨兵领导选举机制)slave选举机制最终主从切换的过程哨兵启动和配置哨兵如何知道redis主从信息什么是主观下线(sdown)什么是客观下线(odown)哨兵之间如何通信哨兵领导选举机制
2020-06-13 16:40:59
1335
原创 网易云课堂学习-redis内存管理
内存分配最大内存控制:maxmemory 最大内存阈值maxmemory-poicy 到达阈值时的执行策略内存压缩:大小超过压缩范围,溢出后redis将自动将其转换为正常大小过期数据的处理策略主动处理(redis主动触发检测key是否过期),每秒执行10次。过程如下:a.从具有过期时间的密钥中测试20个随机密钥。b. 删除所有已过期的密钥c. 如果超过25%的密钥已过期,则从a重新开始被动处理:每次访问key时,发现过期,直接清除,然后返回null。数据恢复阶段,过期数据的
2020-06-13 13:31:11
172
原创 网易云课堂学习-redis持久化机制
持久化介绍redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就丢失了,因此需要开启redis的持久化功能,将数据保存在磁盘上,当redis重启后,就可以从磁盘中恢复数据。持久化的方式RDB:在指定时间间隔对数据进行快照存储。AOF(append only file)持久化将对服务器的写操作保存到一个文件中,当服务器重启时加载并执行该文件中的写命令来恢复数据。RDB方式RDB的优点和缺点优点缺点对性能影响最小同步时丢失数据RD
2020-06-12 17:51:53
193
原创 网易云课堂学习-redis数据结构和常用命令(二)
redis高性能提现每秒set数据可以达到12w次。批量处理可以达到50-70w次。和cpu的性能关系很大。geo命令,可以存放地址信息,获取附近的人的距离。publish、subscribe发布订阅机制,可以监听某一个key或者某一类的key的信息。选择redis的数据库:0-n。select x;表示选择某个数据库。要启用事件通知,需要修改配置文件,如下:AKE代表开启所有类型的事件通知...
2020-06-12 14:55:56
159
原创 网易云课堂学习- redis数据结构和常用命令(一)
Redis介绍redis是一个开源的、使用C语言开发的、支持网络、可基于内存亦可以持久化的日志型、key-value数据库,并提供多种语言的api。本质上是客户端-服务端的软件程序。特点是使用简单、性能强大、功能应用场景丰富。通用命令:DEL keykey存在时删除keyDUMP key序列化给定key,并返回被序列化的值DUMP key序列化给定key,并返回被序列化的值EXISTS key检查给定key是否存在EXPIRE key seconds为
2020-06-12 14:43:46
167
原创 网易云课堂学习-谷歌guava提供的缓存
Guava Cache介绍Guava Cache是Google Guava中的一个内存缓存模块,用于将数据缓存到JVM中。实际项目开发中经常会将一些公共或常用的数据缓存起来,方便快速访问。哪些情况:愿意消耗一些内存空间来提升速度。预料到某些键会被查询一次以上。缓存中存放的数据总量不超过内存。Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果这不符合你需求,请尝试使用memcached或redis这类缓存。...
2020-06-12 14:14:54
219
1
原创 网易云课堂学习-自研java内存缓存
场景:在java应用中,对于访问频率高,更新少的数据,通常方案是将这类数据加入缓存中。相对于从数据库中直接读取,这种方式效率更高。在集群环境下,通常使用分布式缓存,如redis、memcached等。在单机环境下,通常是使用内部缓存(localCache)就够了。方案:基于JSR107规范自研基于concurrentHashMap实现数据规范jsr107规范了解即可,没有太多应用1、目标为应用程序提供缓存java对象的功能定义了一套通用的缓存概念和工具最小化开发人员使用缓存的学习成本
2020-06-12 14:05:13
187
原创 网易云课堂-缓存介绍
什么是缓存在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储要快。通过缓存,可以高效地重用之间检索或计算的数据。为什么要用缓存提升应用程序性能降低数据库成本减少后端负载可预测的性能消除数据库热点提高读取吞吐量(IOPS)...
2020-06-12 13:49:49
1434
原创 网易云课堂学习-nginx代理缓存机制
nginx缓存简介对于缓存,我们大概有以下问题:缓存文件放哪里如何指定哪些请求被缓存缓存的有效期是多久对于某些请求,是否可以不走缓存解决了这些问题,nginx的缓存也就基本配置完毕nginx缓存...
2020-06-12 13:35:02
285
原创 网易云课堂学习-nginx负载均衡
nginx简介轻量级的web服务器、反向代理服务器、电子邮件代理服务器。基于反向代理的功能,nginx作为负载均衡主要有以下几个理由:高并发连接内存消耗少配置文件非常简单成本低廉支持rewrite重写规则内置的健康检查功能节省带宽稳定性高。正向代理和反向代理正向代理类似一个跳板机,代理访问外部资源。反向代理(reverse proxy):实际运行方式是指以代理服务器来接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给in
2020-06-12 10:51:37
209
原创 网易云课堂学习- 消息中间件应用场景
MQ思路本质:中间件(独立部署,用于多个系统之间)–数据存储。MQ区别:开发语言不同–(接收请求–存储–分发)ActiveMQ --java语言阵营,针对MQ这种中间件的全面实现。RabbitMq --amqp - 性能高、可靠、入手简单(spring/rabbitmq由同一家公司维护)kafka – 海量数据传输(日志)Rocketmq - 后发优势-总结前人的经验,再次进行设计(借鉴了很多中间件的设计)持久化-刷盘-内存持久化到文件性能的关键-持久化<非持久化性能–MQ应用有序
2020-06-12 10:14:53
254
原创 网易云课堂学习- RocketMQ中高性能最佳实践
Producer最佳实践一个应用尽可能使用一个topic,消息子类型用tags来标识,tags可以由应用自由设置。只有发送消息设置了tags,消费方在订阅消息时,才可以利用tags在broker做过滤。message.setTags(“TagA”);每个消息在业务层面的唯一标识码,要设置到keys字段,方便将来定位消息丢失的问题。服务器会为每个消息创建索引(哈希索引),应用可以通过topic,key来查询这条消息内容,以及消息被谁消费。由于是哈希索引,请务必保证key尽可能唯一,这样可以避免潜
2020-06-12 09:44:28
506
原创 网易云课堂学习-rocketMq批量消息和事务消息
为什么使用批量消息在很多调优的时候,比如数据库批量处理,有些请求进行合并发送等都是类似批量的实现。RocketMq批量发送也是为了追求性能,特别是在消息数量非常大的时候,批量效果非常明显。使用批量消息的限制同一批次的消息应具有相同主题,相同的消息配置不支持延迟消息建议一个批量消息大小,最好不要超过1m。使用批量消息官方教程:http://rocketmq.apache.org/docs/batch-example/什么是事务消息是指producer端发送消息事件和本地事务事件,同时
2020-06-12 08:51:02
241
原创 网易云课堂学习-rocketmq 订阅机制和定时消息
什么是发布订阅发布订阅模式又叫观察者模式,它定义一个对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都将得到通知。rocketMq的发布订阅Push(推模式)pull(拉模式)什么是定时消息延迟级别broker定时消息发送逻辑使用定时消息官方教程:http://rocketmq.apache.org/docs/order-example/...
2020-06-11 23:26:04
341
原创 网易云课堂学习-rocketmq有序消息
为什么要使用有序消息queue中的消息是先进先出的全局顺序适用场景:性能要求不高,所有消息严格按照FIFO原则进行消息的发布和消费的场景。分区顺序适用场景:性能要求高,根据消息中的sharding key去决定消息发布到哪一个queue。全局顺序与分区顺序对比如何保证消息顺序在mq模型中,顺序需要三个阶段去保障:消息被发送时保障顺序消息在存储时保证和发送时的顺序一致。消息在消费时保证和存储时的顺序一致。rocketmq顺序消息的实现有序消息的缺陷:..
2020-06-11 23:05:11
152
原创 网易云课堂学习- rocketmq架构方案
rocketmq角色介绍producer:生产者consumer:消费者broker:mq服务,负责接收、分发消息nameserver:负责mq服务之间的协调rocketmq架构方案nameserver clusterNameServer提供轻量级服务发现和路由。每个名称服务器记录完整的路由信息,提供相应的读写服务,并支持快速扩展程序。一个队列只能有一个消费者在消费,一个消费者可以消费多个队列。nameServer之间没有数据同步、主服务器之间也没有数据同步环境准备配置文
2020-06-11 21:19:13
256
原创 网易云课堂学习-rocketmq入门
RocketMQ是什么是由阿里捐赠给Apache的一款分布式、队列模型的开源消息中间件,经历了双十一的洗礼。RocketMQ的发展史RocketMQ的特性原生分布式两种消息拉取严格消息顺序特有的分布式协调器亿级消息堆积组(group)RocketMQ 基本概念producer:消息生产者,负责生产消息,一般有业务系统负责生产消息。consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费。push consumer:封装消息拉取,消费进程和内部pull c
2020-06-11 19:19:53
233
原创 网易云课堂学习- kafka优雅应用
监控虽然目前Apache Kafka已经全面进化成一个流处理平台,但大多数的用户依然使用的是其核心功能:消息队列。对于如何有效地监控和调优kafka是一个大话题,很多用户都有这样的困扰。目前没有一款kafka监控工具是公认比较优秀的,每个都有自己的特点但也有些致命缺陷。kafka监控工具有:kafka manager、Kafka Web Console、Burrow,Kafka Offset Monitor,Kafka Eagle,Confluent Control Center。通过研究,发现主流的
2020-06-11 07:31:05
272
1
原创 网易云课堂学习-kafka streams架构
程序重启后才会从服务端拿offset,来决定从哪里消费。客户端会维护一个partition_id和offset,以此知道下次从哪里开始拉取。批处理计算:会有一定的延时,只能查到昨天的数据Spark和Flink既能做批处理,又能做流处理pageCache:操作系统的内存kafka写性能高的原因:1.用了pageCache 2.使用了顺序写通过mapped memory file技术将数据写到pageCache中,达到顺序写的目的,并且将操作系统的内存应用起来。一个Partition.
2020-06-10 18:13:14
231
原创 网易云课堂学习- Kafka Connect数据传输作业工具
topic、partition、replication每个partition都有自己的副本,并且不在同一台机器上。一个leader,多个fowller。写数据是往fowller上写。partition的个数,建议是consumer的整数倍。一个partition数据只会被一个consumer消费。一个consumer group消费一个完整的topic数据。Zookeeper简介kafka中的leader和fowller是partition级别的,不是实例zookeeper中的lead
2020-06-10 17:39:24
262
原创 网易云课堂学习- Kafka入门及使用
简介kafka是linkedin使用scala编写的具有高水平扩展、高吞吐量的分布式消息系统。kafka对消息保存时根据topic进行归类,发送消息者称为producer,消息接收者称为consumer,此外kafka集群由多个kafka实例组成,每个实例(server)称为broker。无论是kafka集群还是producer和consumer都依赖zookeeper来保证系统的可用性,为集群保存一些meta信息。主流MQ对比吞吐量:kafka>rabbtimq>activemq
2020-06-10 17:23:51
318
原创 网易云课堂学习-rabbitmq集群和高可用方案
常用管理命令集群管理查看集群状态:rabbitmqctl cluster_status修改集群节点的类型,使用此命令前需要停止Rabbitmq应用:rabbitmqctl change_cluster_node_type {disc|ram}将节点从集群删除,允许离线执行:rabbitmqctl forget_cluster_node [–offline]在集群中的节点应用启动前,咨询clusternode节点的最新信息,并更新相应的集群信息。这个和join_cluster不同,它不加入
2020-06-10 16:01:15
263
1
原创 网易云课堂学习-activemq持久化原理及事务
ActiveMQ持久化方案介绍activemq的消息持久化机制有JDBC、AMQ、KahaDB和LevelDB,无论使用哪种方式持久化,消息的存储逻辑都是一致的。ActiveMQ持久化机制queue类型的持久化机制Topic类型的持久化机制JDBC方式AMQ方式KahaDB方式LevelDB方式LevelDB的特点基于KV存储key值有序存储操作接口简单支持数据快照支持数据压缩LevelDB的结构事务机制ActiveMQ事务实现机制...
2020-06-10 15:21:35
162
原创 网易云课堂学习-Activemq高可用
ActiveMQ高可用集群方案介绍Master-Slave部署方式通过网络连接,将多个broker组合,对外构成一个整体,集群间共享队列和主题。Dynamic Broker-Cluster部署配置Master-Slave与Broker-Cluster相结合networkConnector网络连接配置说明...
2020-06-10 15:07:31
184
原创 网易云课堂学习-ActiveMQ支持的消息协议讲解
ActiveMQ支持哪些协议ActiveMQ支持多种传输协议和传输方式,允许客户端使用多种协议连接。支持的协议:AUTO、OpenWire、AMQP、Stomp、MQTT。支持的基础传输方式:tcp、udp、http(s)、VM、SSL、Peer、Multicast等,以及更高级的Failover、Fanout、Discovery、ZeroConf。ActiveMQ的协议连接配置常用传输方式及配置TCP:由于tcp具有可靠传输的特性,它在activemq中是最常用的一个种协议。在默认配置中,t
2020-06-10 10:36:46
205
原创 网易云课堂学习-ActiveMQ入门
ActiveMQ是什么是Apache出品的,最流行的,能力强劲的开源消息总线。是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS规范已经出台很久了,但JMS在如今的J2EE应用中仍然扮演着很重要的角色。JMS规范java message service即java消息服务应用程序接口是一个java平台中关于面向消息中间件(MOM)的 API,用在两个应用程序之间,或分布式系统中发送消息,进行异步通信。java消息服务是一个与具体平台无关的API。JMS的对象模型
2020-06-10 09:40:56
286
原创 网易云课堂学习-分布式中间件设计篇
单体架构:所有代码都在一个项目中,耦合度太高,升级一个模块需要将所有模块都升级一遍。分布式系统架构:(一个请求需要多个系统协调处理)基于消息中间件的分布式系统消息中间件概述什么是消息中间件利用高效可靠的消息传递机制,进行平台无关的数据交流;并基于数据通信来进行分布式系统的集成;通过提供消息传递和消息排队模型,它可以在分布式系统下扩展进程间的通信。消息中间件的应用场景跨系统数据传递、高并发流量削峰、数据异步处理等等常用的消息中间件activemq、rocketmq、ra
2020-06-09 23:23:21
334
原创 网易云课堂-JVM参数及调优
调优基本概念:在调整性能时,JVM有三个组件:1、堆大小调整2、垃圾收集器调整3、JIT编译器大多数调优选项都与调整堆大小和为你的情况选择最合适的垃圾收集器有关。JIT编译器对性能也有很大的影响,但很少需要使用较新版本的jvm进行调优。通常,在调优java应用程序时,重点时以下两点:1、响应性:应用程序在或系统对请求的数据做出响应的速度,对于专注于响应性的应用程序,长的暂停是不可容忍的,重点是对响应速度做出优化。2、吞吐量:侧重于在特定时间段内最大化应用程序的工作量,对于专注于吞吐量的应用程
2020-06-09 21:59:22
195
原创 网易云课堂学习-JDK内置命令工具
JDK内置工具-javapJDK内置工具-jpsJDK内置工具-jstat (主要用于java虚拟机的监控)JDK内置工具- jcmdJDK内置工具- jinfo(查看Jvm的配置信息)jdk内置工具-jhatjmapjstack(死锁的时候使用) 可以将线程栈信息保留下来(最常用的命令是jcmd和jstat)可视化工具jconsole可视化工具jvisualVM...
2020-06-09 20:04:57
201
kibana-6.5.3-darwin-x86_64.tar.gz
2020-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人