- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 学习笔记 2.中间件 1.3.1 RabbitMQ入门及内部分发机制
RabbitMQ入门及内部分发机制AMQP协议RabbitMQ简介RabbitMQ安装运行RabbitMQ基本配置RabbitMQ端口RabbitMQ管理界面RabbitMQ核心概念使用RabbitMQAMQP协议AMQP ( Advanced Message Queuing Protocol)高级消息队列协议,是应用层协议的一个开放标准为面向消息的中间件设计。生产者流转过程:消费者流...
2020-04-25 15:20:23 149
原创 学习笔记 2.中间件 1.2.4ActiveMQ持久化原理及事务机制
ActiveMQ持久化方案介绍ActiveMQ的消息持久化机制有JDBC,AMQ,JDBC,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。Queue类型的持久化机制topic类型持久化机制:JDBC方式将消息存储到数据库中,例如:MySQL、SQL Server 、Oracle、AMQ方式KahaDB方式LevelDB方式事务机制...
2020-03-31 23:49:19 209
原创 学习笔记 1.高性能编程 1.3.4J.U.C并发编程工具包
CountDownLatch它允许多个线程等待直到在其他线程中一组操作执行完成CountDownLatch初始化的时候需要传入参数Nawait()方法能够阻塞线程直到调用N次的countDown()后才会释放线程countDown()可以在多个线程中调用,每次调用N减一可以将CountDownLatch理解为一种特殊的共享锁,每次countDown()后会释放锁,当所有的线程释放完锁后,...
2020-03-14 17:50:09 185
原创 学习笔记 3.容器化技术 2.1.1K8S核心概念及名词解析
K8S核心概念及名词解析K8S核心概念容器什么是Linux容器K8S核心概念容器什么是Linux容器 Linux容器是与系统其他部分分隔离开的一系列进程。运行这些进程所需要的所有文件都由另一个镜像提供,这意味着从开发到测试再到生产的整个过程中,Linux容器都具有可移植性和一致性。因此,相对于依赖重复传统测试环境的开发渠道,容器的运行速度要快很多。 假设您在开发一个应用。您使用的是一台笔...
2019-11-24 18:25:05 507
原创 学习笔记 3.容器化技术 1.3 Docker实践
Docker实践Docker实践容器监控容器监控方案选择CAdvisorInfluxDBGranfanaCAdvisor+InfluxDB+Granfana安装部署日志监控Docker的日志处理机制资源管理快速扩容Docker实践容器监控由于docker compose启动的服务都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的运行情况如:CPU使用率、内存使用率、网络状态、磁盘...
2019-11-17 18:43:31 207
原创 学习笔记 3.容器化技术 1.2 Docker进阶
Docker进阶Docker进阶数据挂载数据卷挂载主机目录Compose集成式应用组合Compose简介安装和卸载使用Compose构建dubbo-admin服务Docker进阶数据挂载在容器中管理数据主要有两种方式:数据卷(Volumes):在Docker可管理的范围内挂载主机目录(Bind mounts):在宿主机上的内存数据卷数据卷是一个可供一个或者多个容器使用的特殊目录,它...
2019-11-13 23:31:09 188
原创 学习笔记 3.容器化技术 1.1.4构建私有镜像 运行Java程序
使用Dockerfile构建私有镜像Dockerfile以nginx为例构建镜像Dockerfile指令详解COPY复制文件ADD更高级的复制文件CMD容器启动命令ENTRYPOINT入口点ENV设置环境变量ARG构建参数VOLUME定义匿名卷EXPOSE声明端口WORKDIR指定工作目录USER指定当前用户HEALTHCHECK健康检查ONBUILD为他人做嫁衣docker save和docke...
2019-11-11 09:10:22 135
原创 学习笔记 3.容器化技术 1.1.2 Docker安装,加速及常用命令
DockerDocker版本命名CentOS安装DockerDocker版本命名Docker在1.13版本之后,从2017年的3月1日开始,版本命名规则变为如下:项目说明版本格式YY.MMStable每个季度发行Edge每个月发行同时Docker划分为CE和EE。CE即社区版(免费,支持周期三个月),EE即企业版,强调安全,付费使用。CentOS...
2019-11-10 15:14:09 176
原创 学习笔记 2.中间件 3.2.1 redis哨兵机制
redis哨兵机制 哨兵机制哨兵(Sentinel)机制核心作用Redis下载安装准备配置文件准备三个redis服务准备哨兵配置文件启动哨兵集群测试哨兵同步pubsub机制发出来的消息哨兵日志分析核心运作流程服务发现和健康检查流程故障切换流程7大核心概念1.哨兵如何知道Redis主从信息(自动发现机制)2.什么是master主观下线3.什么是客观下线4.哨兵之间如何通信(哨兵之间的自动发现)5.哪...
2019-11-03 23:26:27 345
原创 学习笔记 3.容器化技术 1.1.1Docker入门
Docker基础概念docker是什么(概念)Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker项目后来还加入Linux基金会,并成立推动开放容器联盟(OCI)。Docker使用Goo...
2019-10-31 12:54:46 130
原创 学习笔记 2.中间件 1.4.1kafka 应用场景和安装调优
Connect数据传输作业工具kafka使用场景消息跟踪网站活动日志聚合新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入...
2019-10-24 08:50:47 727
原创 学习笔记 2.中间件 1.4.2kafka Zookeeper
Zookeeper学习文档zookeeper1. Zookeeper简介2. Zookeeper下载和安装3. 部署3个节点的Zookeeper伪分布式集群3.1 解压zookeeper安装包3.2 为每个节点建立data目录、logs目录和myid文件3.3 为每个节点创建配置文件3.4 启动zk集群3.5 客户端接入集群4. 真实分布式集群需要注意的地方5. ZooKeeper配置文件中的配置...
2019-10-13 23:23:56 153
原创 学习笔记 2.中间件 1.4.1kafka入门及使用场景
kafka入门及使用场景简介kafka主要功能Kafka重要概念相关概念——AMQP协议相关概念——Topics和LogsTopics和LogsPartition简介kafka是Linkedin使用Scala编写具有高水平扩展和高吞吐量的分布式消息系统。kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群,由多个ka...
2019-10-07 23:34:49 169
原创 学习笔记 2.中间件 1.2.3ActiveMQ高可用集群方案
ActiveMQ高可用集群方案ActiveMQ高可用集群方案介绍延时消息的实现Master-Slave部署方式Broker-Cluster部署方式Master-Slave与Broker-Cluster相结合的部署方式networkConnector网络连接器配置说明ActiveMQ高可用集群方案介绍延时消息的实现1.在服务器上面activemq.xml文件中,<broker>标签...
2019-10-06 18:30:57 159
原创 学习笔记 2.中间件 1.2.2ActiveMQ支持的协议
ActiveMQActiveMQ支持哪些协议ActiveMQ的协议连接配置数据传输方式TCPSSLNIOUDPHTTP(S)VMOpenWireMQTTAUTO协议ActiveMQ支持哪些协议ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种方式连接ActiveMQ支持的协议:AUTO、OpenWire、MQTT、AMQP、Stomp等等ActiveMQ支持的基础传输方式:VM...
2019-09-16 22:58:19 313
原创 学习笔记 2.中间件 1.2.1ActiveMQ入门
ActiveMQ)ActiveMQ是什么JMS规范ActiveMQ的特性ActiveMQ如何安装ActiveMQ如何使用ActiveMQ是什么ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。Active是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演者特殊的地位...
2019-09-15 13:02:42 124
原创 学习笔记 2.中间件 1.1分布式消息中间件设计
分布式消息中间件设计分布式架构单体架构分布式架构基于消息中间件的分布式系统架构消息中间件消息中间件概述应用场景常用的消息中间件消息中间件的核心设计本质五大核心组成协议常用的消息中间件协议AMQPMQTTKafkaOpenMessage持久化常用持久化方式消息分发为什么要有消息分发策略常用的消息中间件分发策略高可用高可用机制Master-Slave主从共享数据的部署方式Master-Slave主从同...
2019-09-11 20:43:17 246
原创 学习笔记 1.高性能编程 3.2.3 Tomcat参数调优
对于Tomcat的参数调优主要有下面4个主要的方向配置项 默认 建议 注意 Connection Timeout 20s 减少 MaxThreads处理连接的最大线程数 200 增加 不是越大越好 acceptCount(backlog)等待接收accept的请求数量限制 100 增加 socket参数mi...
2019-09-07 21:31:35 118
原创 学习笔记 1.高性能编程 3.2.2 Tomcat网络处理线程模型
在Tomcat7甚至更低版本中默认的BIO+同步Servlet的模式,一个请求,一个工作线程,CPU利用率低新版本中不在使用APR+异步Servlet:APR(Apache Portable Runtime /Apache可移植运行库),是Apache Http服务器的支持库。JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,Tomcat默认监听指定...
2019-09-05 22:36:52 124
原创 学习笔记 1.高性能编程 3.2.1 JVM参数及调优
我们对JVM进行调优的时候,首先需要了解调优的基本概念,什么是调优,以及调优的目的在调整性能时,JVM有三个组件:堆大小调整 垃圾收集器调整 JIT编译调整大多数调优选项都与调整堆大小和看项目情况选择最合适的垃圾收集器有关。JIT编译器堆性能也有很大影响,但是很少需要使用较新版本的JVM进行调优。通常,在调优Java应用程序时,重点是以下两个主要目标之一:响应性:应用程序或系...
2019-09-05 00:08:13 304
原创 学习笔记 1.高性能编程 3.1.3 JDk内置命令工具
1.javapjava反编译工具,主要用于根据Java字节码文件反汇编为Java源代码文件。 javap<options><classes>javap -help --help -? 输出此用法信息 javap -version 版本信息 javap -v -verbose 输出附加信息 javap -l ...
2019-09-02 22:41:04 147
原创 学习笔记 1.高性能编程 3.1.2 垃圾回收机制
自动垃圾收集自动垃圾收集是查看堆内存,识别正在使用那些对象以及哪些对象未被删除以及删除未使用对象的过程。使用中的对象或者引用的对象意味着程序的某些部分仍然维护指向该对象的指针。程序的任何部分都不再引用未使用的对象或未引用的对象,因此可以回收未引用对象的内存。像c这样的编程语言,分配和释放内存是一个手动过程。在java中解除分配内存的过程由垃圾收集器自动处理。确定哪些对象没有使用,确...
2019-08-27 21:58:16 255
原创 学习笔记 1.高性能编程 3.1.1 类加载机制
前面的运行时数据区如下图:JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据虚拟机规范中这是一个逻辑区划,具体实现根据不同的虚拟机来实现,但是.class文件是怎么加载进去的,说到这个就要看一下类的生命周期在java中有专门负责加载工作的类加载器:类加载器负责装入类,搜索网络、jar、zip、文件夹、二进制数据、内存等制定位置的类资源。一个java程序...
2019-08-25 23:42:41 116
原创 学习笔记 1.高性能编程 2.2.3 零拷贝机制
Netty的零拷贝机制是Netty高性能的一个很主要的原因。要想了解零拷贝机制首先需要对Netty的ByteBuffer有所了解Netty自己的ByteBufByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的。在NIO中的ByteBuffer有以下一些缺点:无法动态扩容:ByteBuffer的长度是固定的,不能动态扩展和收缩,当数据大于By...
2019-08-25 16:09:30 173
原创 学习笔记 1.高性能编程 2.2.2 责任链设计模式
设计模式——责任链模式:责任链模式(Chain of Responsibility Pattern)为请求创建了一个处理对象的链。发起请求和具体处理请求的过程进行解耦:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递。实现责任链模式需要4个要素:处理器抽象类,具体的处理器实现类,保存处理器信息,处理执行那么在netty中又是如何使...
2019-08-20 22:12:43 181
原创 学习笔记 1.高性能编程 2.2.1 Netty线程模型
Netty简介:Netty是一个高性能、高可扩展性的一部事件驱动的网络应用程序框架,它极大简化了TCP和UDP客户端和服务器开发等网络编程。Netty的四个重要内容:Reactor线程模型:一种高性能的多线程程序设计思路 Netty中自己定义的Channel概念:增强版的通道概念 ChannelPipeLine职责链设计模式:事件处理机制 内存管理:增强的ByteBuf缓冲区上...
2019-08-18 16:14:51 198
原创 学习笔记 1.高性能编程 2.1.3 NIO非阻塞网络编程
NIO始于JDK1.4,提供了全新的Java IO操作非阻塞API。用意是替代java IO和Java Networking相关的API。其中NIO中有三个核心组件:Buffer缓冲区、Channel通道、Selector选择器。Buffer缓冲区:缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再次读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松的...
2019-08-17 22:49:04 165
原创 学习笔记 1.高性能编程 1.3.3 并发容器类HashMap Concurrenthashmap
在日常工作中我们经常用到的容器有许多,其中就包括了map类,而其中最最常用到的就非HashMap,那么HashMap到底是什么的呢?1.什么是HashMapHashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap,实现了Map,Cloneable,Java.io.Serializable接口HashMap采...
2019-08-10 17:48:42 295
原创 学习笔记 1.高性能编程 1.3.2 锁原理之AQS
在上一篇笔记中的最后说到了ReadWriteLock, 读写锁通常用在读取操作多于写操作的场景,可以有效改进互斥锁的性能。下面来看一下如何使用读写锁利用读写锁实现一个线程安全的HashMap,平时我们使用的HashMap不是线程安全的,虽然有线程安全的HashTable但是源码中都不建议使用HashTable,因为为了实现HashTable的线程安全,在HashTable中的方法上几乎都加了s...
2019-08-07 22:11:27 134
原创 学习笔记 1.高性能编程 1.3.1 AQS抽象队列同步器
AQS(AbstractQueuedSynchronizer),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,在抽象方法的实现过程中免不了要对同步状态进行更改,这...
2019-08-04 16:03:43 109
原创 学习笔记 1.高性能编程 1.2.3 Java锁相关
Java锁的概念:自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。乐观锁:假定没有冲突,在修改数据时如果发现数据和之前的版本不一致,则读最新数据,修改后重试修改悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。独享锁(写):给资源加上写锁,线程可以修改资源,其...
2019-08-03 22:32:22 138
原创 学习笔记 1.高性能编程 1.2.2 线程安全之原子操作
原子操作:原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割,而只执行其中的一部分(不可中断性)。将整个操作视作一个整体,资源在该次操作中保持一致,这是原子性的核心特征。保证线程原子性的方法:synsynchronize关键字(单线程); 加锁(单线程); AtomicInteger类作为成员变量(原子性的Integer);原子性操作的原理及实现...
2019-07-30 23:36:45 209
原创 学习笔记 1.高性能编程 1.2.1 线程安全之可见性问题
《JAVA语言规范》:描述了JAVA语言的规则和特性,在其中描述多线程的部分被称为JAVA内存模型《JAVA虚拟机规范》:描述了JAVA虚拟机的规则和特性,jvm运行时数据区的概念是JAVA虚拟机规范提出的JVM运行时数据区:描述一个Java进程的内存情况,分为线程独享部分和线程共享部分线程独占:每个线程都会有他独立的空间,随线程生命周期而创建和销毁 线程共享:所有线程都能访问这块内...
2019-07-27 21:36:00 141
原创 学习笔记 1.高性能编程 2.1.1 TCP/UDP协议
OSI网络七层模型为了使不同计算机厂家的计算机能够互相通信,以便在更大的范围内简历计算机网络,有必要简历一个国际范围的网络体系结构标准。七层模型分别是:物理层:使原始的数据比特流能在物理介质上传输。 数据链路层:通过校验、确认和反馈重发等手段,形成稳定的数据链路。 网络层:进行路由选择和流量控制。(IP协议) 传输层:提供可靠的端口到端口的数据传输服务。(TCP/UDP) 会话层:...
2019-07-07 13:39:41 165
原创 学习笔记 1.高性能编程 1.1.7 线程池应用及实现原理剖析
为什么要用线程池线程池是不是越多越好?1.线程在Java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间>执行任务时间就很不合算。2.Java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多的内存。3.操作系统需要频繁切换上下文(大家都想被运行),影响...
2019-07-05 11:05:44 131
原创 学习笔记 1.高性能编程 1.1.6 线程封闭
线程封闭概念多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。 数据被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步技术的技术称之为线程封闭。线程封闭具体的体现有:ThreadLocal、局部变量ThreadLocalThreadLocal是Java里一种特殊的变量。它是一个线程级别变量...
2019-07-03 13:00:27 99
原创 学习笔记 1.高性能编程 1.1.5 线程通信
通信方式要想实现多个线程之间的协同,如:线程执行先后顺序,获取某个线程执行的结果等等。设计到线程之间相互通信,分为下面四类:文件共享 网络共享 共享变量 jdk提供的线程协调API:细分为 suspend/resume,wait/notify,park/UNparkpublic class Demo6 { public static Object baozidian = ...
2019-07-02 12:59:41 132
原创 学习笔记 1.高性能编程 1.1.4 内存屏障和CPU缓存
CPU性能优化手段--缓存1.三级缓存L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存容量通常在32-4096KL2 由于L1级高速缓存容量的限制,为了再次提高CPU的运算速度,在CPU的内增加一高速存储器,即二级缓存。L3 现在的都是内置的。而他的实际作用即是,L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器...
2019-07-01 23:05:03 123
原创 学习笔记 1.高性能编程 1.1.3 线程中止
不正确的线程中止--stopStop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议使用。Destroy:JDK未实现改方法。正确的线程中止--interrupt如果目标线程在调用Object class的wait(),wairt(long)或wait(long,int)方法,join(),join(long,int)或sleep(long,int)方法时...
2019-07-01 15:20:21 119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人