自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ShardingJdbc兼容达梦

本章详细说ShardingJdbc和达梦数据库的扩展和配置问题,ShardingJdbc和DruidDataSource、Mybatis整合的兼容、冲突问题,以及这些问题的解决方案。

2024-04-03 11:23:05 956 1

原创 10.Kafka-Kraft 架构

左图为 Kafka 现有架构,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。右图为 kraft 模式架构(实验性),不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,元数据保存在 controller 中,由controller 直接进行 Kafka 集群管理。这样做的好处有以下几个:Kafka kraft是2.8+的新特性,所以安装的版本必须是2.8+。参考:Kafka官网下载地

2022-07-05 18:41:38 558 1

原创 docker常用命令

本章记录docker常用命令,更多更详细命令参考官网:Docker Documentation1.docker基础命令docker version #查看docker的版本信息docker info #查看docker的系统信息,包括镜像和容器的数量docker 命令 --help #帮助命令(可查看可选的参数)docker stats #查看docker的内存占用,网络,IO等统计数据docker system df

2022-05-27 16:49:28 1189

转载 Springboot---实现跨域请求(CORS)

Springboot—实现跨域请求(CORS)转载:https://blog.csdn.net/zhangpower1993/article/details/89294916

2022-05-24 11:04:38 177

原创 9.Kafka拦截器

拦截器原理Producer 拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现 clients 端的定制化控制逻辑。对于 producer 而言,interceptor 使得用户在消息发送前以及 producer 回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer 允许用户指定多个 interceptor按序作用于同一条消息从而形成一个拦截链(interceptor chain)。Intercetpor 的实现接口是org.apache.

2021-08-23 23:59:52 157

原创 8.Kafka消费者API

环境准备java环境kafka环境kafka-clients jar包或者依赖:<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version></dependency>Kafka APIConsumer 消费数据时的可靠性是很

2021-08-06 00:10:09 139

原创 7.Kafka生产者API

环境准备java环境kafka环境kafka-clients jar包或者依赖:<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </depen

2021-07-25 15:34:23 270

原创 6.Kafka消费者

消费方式Kafka消费者消费模式有两种:pull(拉)模式和push(推)模式。consumer 默认采用 pull(拉)模式从 broker 中读取数据。pull 模式不足之处是,如果 kafka 没有数据,消费者可能会陷入循环中,一直返回空数据。针对这一点,Kafka 的消费者在消费数据时会传入一个时长参数 timeout,如果当前没有数据可供消费,consumer 会等待一段时间之后再返回,这段时长即为 timeout。push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 br

2021-07-19 23:12:54 796 3

原创 5.Kafka之Broker、Producer和Consumer知识点汇总

本章纯属理论篇,其中涉及到面试常问的理论知识点。zookeeper存储kafka信息默认根路径为 /,根路径配置项为,我的配置为:zookeeper.connect=localhost:2181,localhost:2182,localhost:2183/kafka,所以根路径为/kafka。kafka相关信息都存储在了配置的根路径下。consumer或者producer客户端连接kafka集群,然后通过kafka集群到zookeeper集群寻找 /{根目录}/topics/{topic}/partitio

2021-07-06 23:44:50 1336 1

原创 4.Kafka常用操作命令

操作命令以下所有操作命令都kafka安装目录下操作。启动kafkabin/kafka-server-start.sh -daemon config/server.properties-daemon:表示以非阻塞式后台启动kafka关闭kafkabin/kafka-server-stop.sh创建topicbin/kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --part

2021-06-18 01:08:42 720 1

原创 3.Kafka集群安装

kafka安装安装包下载地址:http://kafka.apache.org/downloads.html解压安装包 tar -zxvf kafka_2.12-2.8.0.tgz安装zookeeper单机安装参考:2.zookeeper单机安装集群部署参考:10.zookeeper集群修改kafka配置文件#broker的全局唯一整数编号,不能重复broker.id=0#开启删除topic功能使能,默认为false不开启delete.topic.enable=true

2021-06-15 23:17:57 261 5

原创 10.zookeeper集群

zookeeper集群搭建演示在单机环境下,基于一台虚拟机,进行zookeeper伪集群搭建,zookeeper集群中包含3个节点,节点对外提供服务端口号分别为2181、 2182、2183。安装3份zookeeper(模拟3台服务器),安装目录分别为zookeeper2181、zookeeper2182、zookeeper2183,也可以基于原本已经安装有zookeeper的基础上直接复制再重命名。复制命令如下:zookeeper安装参考:2.zookeeper单机安装cp -r zookeep

2021-06-12 14:49:55 168 2

原创 9.zookeeper之分布式锁

分布式锁案例分布式锁有多种实现方式,比如通过数据库、redis都可实现。作为分布式协同工具ZooKeeper,当然也有着标准的实现方式。下面介绍在zookeeper中如何实现排他锁。设计思路:每个客户端往/Locks下创建临时有序节点/Locks/Lock000000001。客户端取得/Locks下子节点,并进行排序,判断排在最前面的是否为自己,如果自己的锁节点在第一位,代表获取锁成功。如果自己的锁节点不在第一位,则监听自己前一位的锁节点。例如,自己锁节点 Lock000000001当前一位锁

2021-06-09 21:33:36 105 2

原创 8.zookeeper之生成分布式唯一ID

生成分布式唯一ID案例在过去的单库单表型系统中,通常可以使用数据库字段自带的auto_increment 属性来自动为每条记录生成一个唯一的ID。但是分库分表后,就无法在依靠数据库的auto_increment属性来唯一标识一条记录了。此时我们就可以用zookeeper在分布式环境下生成全局唯一ID。zookeeper在创建有序节点时,会生成一个序列号,而这个序列号在zookeeper中(即使在整个集群环境中)是唯一的,所以我们可以直接或者间接(比如拿原生的序列号经过运算转换成另外一种符合业务格式的ID

2021-06-07 23:58:27 574 2

原创 7.zookeeper之配置中心

配置中心案例工作中有这样的一个场景:数据库用户名和密码信息放在一个配置文件中,应用读取该配置文件,配置文件信息放入缓存。 若数据库的用户名和密码改变时候,还需要重新加载缓存,比较麻烦。通过zooKeeper可以轻松完成,当数据库发生变化时自动完成缓存同步。设计思路:连接zookeeper服务器。读取zookeeper中的配置信息,注册watcher监听器,读取配置信息存入本地变量。当zookeeper中的配置信息发生变化时,通过watcher的回调方法捕获数据变化事件。重新获取配置信息。获

2021-06-07 23:03:44 238

原创 6.zookeeper watcher监听机制

watcher概念zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者。zookeeper采用了Watcher机制实现数据的发布/订阅功能。该机制在被订阅对象发生变化时会异步通知客户端,因此客户端不必在Watcher注册后轮询阻塞,从而减轻了客户端压力。 watcher机制实际上与观察者模式类似,也可看作是一种观察者模式在分布式场景下的实现方式。watcher架构

2021-06-02 00:41:39 213

原创 5.zookeeper javaAPI

znode是zooKeeper集合的核心组件,zookeeper API提供了一小组方法使用 zookeeper集合来操纵znode的所有细节。客户端应该遵循以步骤,与zookeeper服务器进行清晰和干净的交互。连接到zookeeper服务器,zookeeper服务器为客户端分配会话ID(sessionId)。定期向服务器发送心跳。否则,zookeeper服务器将过期会话ID,客户端需要重新连接。只要会话ID处于活动状态,就可以获取/设置znode。所有任务完成后,断开与zookeeper服务

2021-05-25 00:52:23 109

原创 4.zookeeper权限控制

概述zookeeper类似文件系统,client 可以创建节点、更新节点、删除节点。zookeeper的access control list 访问控制列表可以对节点权限的控制。acl权限列表特点如下:zooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限每个znode支持设置多种权限控制方案和多个权限子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点acl权限控制,使用scheme:id:permission来标识,主要涵盖 3 个方面:权

2021-05-15 16:21:49 548

原创 3.zookeeper常用shell命令

zookeeper常用shell命令新增create [-s] [-e] path data #其中-s 为有序节点,-e 临时节点有序节点和无序节点的区别:有序节点创建成功之后,生成的节点路径格式为:指定节点名称 + 自增序号有序节点生成的节点路径为:/test0000000005无序节点创建成功之后,生成的节点路径为指定的节点名称无序节点生成的节点路径为:/hello永久节点和临时节点的区别:zookeeper默认生成都是永久节点。永久节点:只要不手动删除该节点,该

2021-05-11 01:26:26 143

原创 2.zookeeper单机安装

环境准备JDK1.8+安装包Linux系统Zookeeper安装包JDK安装解压tar -xzvf jdk-xxx-xxx.tar.gz配置jdk环境变量vim打开 .bash_profile文件,vi .bash_profile,文件加入以下内容(.bash_profile是位于当前用户home目录下的隐藏文件):JAVA_HOME=/home/zookeeper/jdk1.8.0_131export JAVA_HOMEPATH=$JAVA_HOME/bin:$PATH

2021-05-09 13:27:53 117

原创 1.zookeeper介绍

zookeeper简介zooKeeper由雅虎研究院开发,是Google Chubby的开源实现,后来托管到 Apache,于2010年11月正式成为Apache的顶级项目。大数据生态系统里的很多组件的命名都是某种动物或者昆虫,比如hadoop就是 ????,hive就是????。zookeeper即动物园管理者,顾名思义就是管理大数据生态系统各组件的管理员,如下图所示:zookeeper应用场景zooKeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一 个高性能、高可用,且

2021-05-09 12:42:53 154

原创 2.Kafka介绍

定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。使用消息队列好处解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。可恢复性系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。缓冲有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。削峰在访问量剧增的情况下,应用仍

2021-05-03 14:55:00 135

原创 2.ThreadLocal的使用

什么是ThreadLocal?ThreadLocal提供线程局部变量,每个线程都有自己独立初始化的变量副本,这些变量副本只与其所在的线程独享,不同的线程之间的变量副本互不干扰。ThreadLocal实例通常是希望将变量状态与当前线程相关联(例如,用户ID或事务ID)。例如,下面的类生成每个线程本地的唯一标识符。 线程的ID在第一次调用ThreadId.get()时被分配,并在后续调用中保持不变。public class ThreadId { private static fina

2021-05-02 12:54:45 107

原创 1.线程池

为什么需要线程池线程池的频繁创建和销毁和耗费系统资源,如果没有线程池,就要经常创建和销毁线程,这样就会降低程序的响应速度,相反则加快响应速度。没有线程池,如果完成一个功能要反复创建和销毁100个线程,这100个线程使用次数就为1次,如果引入了线程池,可能就只需要创建20到30个线程,可以让先执行完任务的线程不必先销毁,让其再执行下一个任务,这样有效提高了每个线程的使用效率,也有效减少了线程的反复创建和销毁。为了减少创建和销毁线程的次数,让每个线程可以多次使用,可根据系统情况调整执行的线程数量,防止消

2021-04-22 00:35:25 160

原创 3.ORACLE异常错误处理

异常处理概念异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义错误和自定义错误,由于 PL/SQL 程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行。异常类型预定义异常ORACLE 预定义的异常情况大约有 24 个。对这种异常情况的处理,无需在程序中定义,由 ORACLE 自动将其引发。类似JAVA内置的异常,如NullPointerException、ClassCastException等运行异常,由JAVA程序自动触发。

2021-03-30 23:27:46 327

原创 2.ORACLE游标的使用

游标的概念为了处理 SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set)。游标是一个指向上下文的句柄( handle)或指针。对于不同的 SQL 语句,游标的使用情况不同:SQL 语句游标类型非查询语句(UPDATE、DELETE)隐式游标结果是单行的查询语句隐式或显示结果是多行的查询语句显示游标游标

2021-03-28 14:44:34 1675 1

转载 1.ORACLE安装

概述Oracle Database,又名 Oracle RDBMS,简称 Oracle。Oracle 数据库系统是美国 Oracle 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或B/S体系结构的数据库之一,比如 SilverStream 就是基于数据库的一种中间件。Oracle 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系型数据库,它是一个完备关系的产品;作为分布式数据

2021-02-21 13:55:09 72

原创 14.ActiveMQ高级特性

ActiveMQ高级特性:异步投递延迟投递和定时投递分发策略消息重试机制死信队列异步投递ActiveMQ支持同步,异步两种发送的模式将消息发送到broker,模式的选择对发送延时有巨大的影响。producer能达到怎么样的产出率(产出率=发送数据总量/时间)主要受发送延时的影响,使用异步发送可以显著提高发送的性能。ActiveMQ默认使用异步发送的模式,除非明确指定使用同步发送的方式或者在未使用事务的前提下发送持久化的消息,这两种情况都是同步发送的。如果你没有使用事务且发送的是持久化的

2021-02-03 21:51:45 284

原创 13.ActiveMQ之zookeeper集群

ActiveMQ集群提高了高可用性,避免单点故障。ActiveMQ集群有以下三种方式:基于shareFileSystem共享文件系统(KahaDB)基于JDBC基于Zookeeper和LevelDB搭建的集群本章只重点讲解基于Zookeeper和LevelDB的集群方式,其他集群方式参考官网:http://activemq.apache.org/masterslaveZookeeper集群介绍从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Masster-Slave方

2021-01-30 02:41:27 554 2

原创 12.ActiveMQ的持久化

为了避免服务器意外宕机后导致消息队列数据丢失,需要引入持久化机制保证服务器重启后恢复消息队列数据使ActiveMQ达到高可用性。ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等。再试图将消息发给接收者,成功则将消息从存储中删除,失败则继续尝试尝试发送。消息中心启动以后,要先检查指定的存储位置是否有未成功发送的消息,如果有,则会

2021-01-24 18:15:26 915

原创 11.ActiveMQ的NIO协议使用

NIO协议配置由ActiveMQ安装目录所在的/conf/activemq.xml的配置文件可知,ActiveMQ默认出产配置并没有NIO协议,若想使用NIO协议,需要transportConnectors标签加入以下配置,端口可以自定义:<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true" />配置完后,使用命令./activemq restart重启ActiveMQ,打开控制台的Connections看

2021-01-21 23:51:01 398

原创 10.ActiveMQ的传输协议

协议种类TCP(Transmission Control Protocol)TCP是Broker默认配置的协议,默认监听端口是61616。在网络传输数据前,必须要先序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。默认情况下,ActiveMQ把wire protocol叫做OpenWire,它的目的是促使网络上的效率和数据快速交互。TCP连接的URI形式如:tcp://HostName:port?key=value&key=value,后面的参数是可选的。TCP

2021-01-19 21:58:21 331

原创 9.SpringBoot整合ActiveMQ

环境准备启动的ActiveMQ服务JDK1.8+IDEA或EclipseMaven环境SpringBoot和ActiveMQ整合的依赖<!--activemq启动器--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></de

2021-01-17 15:34:23 305 2

原创 8.Spring整合ActiveMQ

环境准备启动的ActiveMQ服务JDK1.8+IDEA或EclipseMaven环境Spring环境依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.1.RELEASE</version></dependency&

2021-01-13 00:09:49 204 2

原创 7.ActiveMQ的Broker

是什么?相当于一个内嵌式ActiveMQ服务器实例。其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可用性。用ActiveMQ Broker作为独立的消息服务器来构建Java应用。ActiveMQ也支持在vm中通信基于嵌入的broker,能够无缝的集成其他java应用。换言之,类似SpringBoot内嵌了一个Tomcat服务器。怎么用?POM依赖如下:<!-- https://mvnreposito

2021-01-06 23:24:30 266 2

原创 6.JMS规范

JavaEE规范JavaEE是一套使用Java进行企业级应用开发的大家一致遵循的13个核心规范工业标准(JMS只是其中一个)。JavaEE平台提供了一个基于组件的方法来加快设计,开发。装配及部署企业应用程序。JDBC(Java Databease)数据库连接JNDI(Java Naming and Directory Interfaces)Java命名和目录接口EJB(Enterprise JavaBean)RMI(Remote Method Invoke)远程方法调用Java IDL(Int

2020-12-30 00:45:41 319 1

原创 5.Java编码实现ActiveMQ通讯(Topic)

MQ遵循了JAVA EE的JMS规范,JMS规范架构如下:ConnectionFactory加载MQ连接驱动,并创建Connnection连接对象(类似连接数据库时加载JDBC驱动,生成java.sql.Connection对象),由Connection对象创建Session会话对象,Session可以创建Message(消息),Message Producer(消息生产者)和Message Consumer(消息消费者)。Message Producer(消息生产者)将Message(消息)发送到De

2020-12-27 14:23:28 435

原创 4.Java编码实现ActiveMQ通讯(Queue)

MQ遵循了JAVA EE的JMS规范,JMS规范架构如下:ConnectionFactory加载MQ连接驱动,并创建Connnection连接对象(类似连接数据库时加载JDBC驱动,生成java.sql.Connection对象),由Connection对象创建Session会话对象,Session可以创建Message(消息),Message Producer(消息生产者)和Message Consumer(消息消费者)。Message Producer(消息生产者)将Message(消息)发送到De

2020-12-24 23:42:24 404

原创 3.ActiveMQ控制台访问

前提准备使用window客户端访问linux服务端之前先确保客户端和服务端之间能正常通信。使用ifconfig命令查看linux服务端ip地址,比如我的是:192.168.64.129使用ipconfig命令查看window客户端IP地址,比如我的是:192.168.89.1客户端ping服务端如果出现丢失 = 0,表示客户端对服务端通信正常。(如果ping不成功,可以关闭linux防火墙或者将客户端ip地址加入白名单,亦可以对外开放访问端口8161,因为ActiveMQ客户端默

2020-12-23 22:04:47 3625

原创 2.ActiveMQ下载和安装(Linux版)

环境准备Linux系统JDK环境ActiveMQ安装包(Linux)ActiveMQ官网下载地址:http://activemq.apache.org/

2020-12-21 23:02:55 566

ShardingJdbc兼容达梦demo

ShardingJdbc和达梦数据库的扩展和配置问题,ShardingJdbc和DruidDataSource、Mybatis整合的兼容、冲突问题,以及这些问题的解决方案,该demo包含测试用的创表SQL

2024-04-03

空空如也

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

TA关注的人

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