- 博客(75)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
原创 如何使用好Mycat
Mycat 简介Mycat 的前身是Ali 的Cobar,核心的功能时提供数据库的分片和读写分离。Mycat 并不是完全意义上的分布式数据库,而是介于数据库和应用之间的中间件服务;Mycat 核心概念 逻辑库 Mycat 作为一个中间件,对于使用者来说,无需知道中间件的存在,所以数据库中间件可以被当做一个或者多个数据库集群构成的逻辑库; 逻辑表 逻辑表和逻辑库相似,对于应用来说,读写数据表就是逻辑表。逻辑表可以是数据切分后分布在一个或者多个分片库中,也可以是单独的一个表;...
2021-05-26 22:27:01
217
原创 微服务注册中心如何选型?
目录注册中心是什么注册中心有哪些?又改如何选用CAP 原理Nacos(CP+AP)Zookeeper(CP)Eureka(AP)Consul(CP)总结注册中心是什么在微服务环境中,往往存在着多个服务提供者或者服务调用者,服务提供者和调用者需要具备弹性收缩扩容的能力,所以原始的LB(LoadBalance)负载均衡机制不能够在满足,由此引入了服务注册中心,来管理服务提供者和服务消费者;服务注册中心的核心就是为了解耦服务提供者和服务消费者;注册中心有哪些?又改.
2021-04-13 22:43:17
1004
原创 Spring Cloud Gateway Filter过滤器
上一篇描述了服务网关Gateway 的工作流程,断言、和生命周期;Predicate 的作用是,请求到来之后,如果匹配到相应的断言,则会交给相应的路由进行处理,在路由处理之前,请求还过经过
2021-03-30 22:32:39
1260
原创 Gateway 服务网关断言工厂
目录什么是服务网关服务网关的实现原理断言工厂AfterRoutePredicateFactory 断言工厂BeforeRoutePredicateFactoryBetweenRoutePredicateFactoryCookieRoutePredicateFactoryHeaderRoutePredicateFactoryHostRoutePredicateFactoryMethodRoutePredicateFactoryPathRoutePreidic..
2021-03-29 23:09:08
1650
原创 Spring cloud stream 其他特性总结使用
背景上一篇博文Spring cloud Stream 入门讲述了spring cloud stream 的背景,组成,以及基于rocketMq 搭建简单的demo 。完成消息的发送和消费。但是在实际工作过程中,我们要用到的远远不局限于简单的demo .比如自定义接口、事务消息、消息的筛选,异常处理,消息的分区等;下面一一来列举出这些基于spring cloud stream 该如何实现呢?自定义接口在上一篇博文demo中,我们发送消息使用的是Source.class 中的output 方法.
2021-03-21 23:07:42
396
1
原创 Spring Cloud Stream 入门
为什么要引入Spring Cloud Stream在实际开发过程中,服务与服务之间的数据交互,多数以消息中间件的的方式实现。由于不同消息中间件在spring cloud 中收发消息的方式存在着不同,所以编码过程中,要基于不同的消息中间件实现消息的收发。从而使得消息中间件和系统的耦合性特别高,不方便后期的扩展;Spring Cloud Stream 能做什么什么是Spring Cloud StreamSpring Cloud Stream 是一个为微服务提供消息驱动能力的框架,解决了在开发过.
2021-03-21 15:03:50
556
原创 RocketMq +Spring boot 使用示例
背景上面几篇博文,从RocketMq 的概念,特性,架构等方面详细描述了RocketMq 的基础知识和架构原理;下面我们研究下工作中在什么样的场景应该使用RocketMq什么样的属性;开发环境: jdk1.8 + RocketMq 4.8.0 + springboot 2.3.2.release准备工作加依赖 <dependency> <groupId>org.apache.rocketmq</groupId>
2021-03-16 22:18:33
1100
转载 RocketMq 设计
消息存储消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构、PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面来分别展开叙述。消息存储整体架构消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ,文件名长度为20位,左边补零,剩余为起始偏移量,比如0000000
2021-03-16 20:43:01
149
转载 RocketMq 架构
技术架构RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。 Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。 NameServer:NameServer是
2021-03-16 15:51:51
118
转载 RocketMq 特性
订阅与发布消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息,进而从该topic消费数据。消息顺序消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了三条消息分别是订单创建、订单付款、订单完成。消费时要按照这个顺序消费才能有意义,但是同时订单之间是可以并行消费的。RocketMQ可以严格的保证消息有序。顺序消息分为全局顺序消息与分区顺序消息,全局顺序是指某个Topic下的所有消息都要保证顺序;部分顺序消息
2021-03-16 15:26:43
212
转载 RocketMq 基本概念
消息模型(Message Model)RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。Consum
2021-03-16 14:51:45
303
原创 Redis、Zk 分布式锁如何选择
背景Zk 实现分布式锁redis 实现分布式锁基于前面两篇文章,了解了redis 锁和zk 锁实现分布式锁的原理和方式,但是在实践中,如何去选择呢?在分布式场景下,分布式CAP 定理告诉我们,任何一个分布式系统都无法满足C(Consistency) 一致性,A(Availability) 可用性,P(Partition tolerance) 分区容错性,最多只能同时满足两项;分布式锁最终理想结果是什么?1. 可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个
2021-03-13 15:42:01
348
原创 zookeeper 实现分布式锁
背景Zookeeper 可以实现分布式锁,主要取决于Zookeeper 的节点是一个天然的顺序发号器,在每一个节点下创建的临时顺序节点类型,在节点下生成的新的子节点,且子节点命名会生成一个次序编号,这个次序编号是上一个次序编号加1;思考一个问题:1. zk 如何保证并发场景下顺序节点不会重复?通过zk 创建子节点源码方法(addChild)可以看到,其采用了synchronized 关键字修饰,保证创建子节点的方法是同步方法;在集群的环境下,leader 只有一台,fllower 接收到增、
2021-03-13 14:51:14
641
原创 redis ,redisson 分布式锁深入剖析
# 为什么要用分布式锁?为了保证一个方法或属性在高并发的情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用并发处理相关的功能进行互斥控制( jvm 锁),但是随着业务发展的需要,原来单体单机部署的系统被演化成分布式集全系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这时原来的jvm锁失效,单纯的应用并不能提供分布式锁的能力,为了解决这个问题,这个时候就需要 分布式锁了。# 分布式锁所遵循的原则?互斥性: 在分布式系统环境下, 一个锁只能被一个线程持有. 高
2021-03-08 18:54:15
1001
原创 Sentinel 基础学习
目录学习背景常见的容错方案有哪些?1. 超时2. 限流3. 仓壁模式4. 断路器Sentinel 学习Sentinel 是什么?Spring cloud 如何整合Sentinel 和Sentinel 控制台?Sentinel 如何实现编码埋点?Sentinel @SentinelResource注解使用及属性详情RestTemplate 如何整合Sentinel ?Feign 如何整合Sentinel?Sentinel 如何实现持久化?Sentin
2021-02-17 17:11:03
268
原创 Feign 基础学习
问题背景使用RestTemplate 存在的痛点有哪些?首先看下RestTemplate 调用http 接口的方式:eg: restTemplate.getForObject("http://alibaba-nacos/config/get",String.class,"1")从以上调用方式可以看出其存在如下痛点:1. 代码的可读性比较差2. 对于负载的url 难维护3. 编程的体验差什么是Feign?Feign 是Netflix 开源的声明式http 调用客户端。旨在.
2021-01-26 18:09:10
570
原创 Ribbon 基础学习
目录Ribbon 是什么?如何使用Ribbon?1. 引入依赖2. 加注解(RestTemplate整合Ribbon)3. 编码Ribbon 是由哪些组件构成?Ribbon 内置的负载规则有哪些?Ribbon 如何细力度配置负载规则?代码配置配置属性方式两种方式对比Ribbon 如何开启全局配置?Ribbon 如何开启饥饿加载?Ribbon 如何基于Nacos 的权重实现负载规则?Ribbon 如何有些调用同一机房的集群服务?总结:...
2021-01-25 11:44:05
446
1
原创 ElasticSearch 基础之语法学习
前言日常Web 服务中,数据存储多选择mysql ,但是mysql 单表性能极致的情况数据条数区间在400w-500w之间,数据量超过这个体量时,解决方案多为,分片,分表,分库 等;但是业务数据量庞大且查询复杂到无法用DB 数据库来支撑时,此时可以引入Elasticsearch 来承载相关服务的数据操作压力;一、Elasticsearch 是什么?Elasticsearch 结合Kibana、Logstash、Beats 被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。
2020-09-09 22:13:02
271
原创 面试官:如何实现Redis和Mysql 保持数据强一致性?不知道啊,回去等消息吧
背景Redis 缓存如何保证和mysql 的数据一致性,算是在面试过程中一个老生常谈的问题,什么?你不知道,那回去等通知吧! 其实这个问题,不管是先删除缓存在修改数据;还是先修改数据在更新缓存都是存在问题的;场景一:先删除缓存在修改数据这种方式在并发量小的时候是没有问题的,如果在高并发量的环境下,删除缓存,还没有完成写库,另一个请求来了,发现缓存为空,从数据库获取数据然后更新缓存,那么这个时候缓存中的数据其实是脏数据;场景二: 先修改数据后删缓存这种方式,主要是极端情况下,已经完成了数据库写库,但
2020-05-27 17:03:36
3791
2
原创 SpringBoot 2.x RedisCache 实现自定义过期时间(注解式)
背景Spring cache + Redis 实现缓存时,在设置TTL的过期时间需要针对每个容器单独编码设置过期时间:@Configuration@EnableCachingpublic class RedisCacheConfig extends CachingConfigurerSupport { private static Logger logger = LoggerFac...
2020-04-14 19:38:32
4130
1
原创 SpringBoot 2.x redis + Spring Cache 缓存管理
SpringBoot 2.x redis+cache 作缓存背景通常在使用Redis 直接做业务缓存时,判断逻辑流程如下:代码逻辑如下: public List<String> getRedisCacheResult(){ //查询缓存结果集 Object test = redisTemplate.opsForValue().get("te...
2020-04-09 11:34:34
398
原创 SpringBoot2.x 集成redis
Spring boot 集成redismaven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>p...
2020-04-04 21:45:49
174
原创 什么JVM优化不熟悉?回去等消息吧
java 虚拟机jvm 内存结构前言jvm 内存结构程序计数器虚拟机栈什么是栈栈中主要存储了什么局部变量表操作数栈栈的异常堆什么是堆?java堆方法区什么是方法区java 垃圾回收垃圾判断引用计数法可达性分析垃圾回收算法标记-清除标记-整理复制分代收集垃圾收集器CMS,G1JDK 性能监控查看虚拟机进程: jps 命令虚拟机统计信息:jstat 命令查看虚拟机参数:jinfo 命令导出堆到文件:j...
2019-11-24 20:42:40
400
原创 Docker基础命令
Docker 基础命令Docker 基础命令Docker 基础命令查看docker 版本docker -version 搜索命令 docker search 应用名 eg: docker search tomcat下载命令 docker pull 镜像名称 eg: docker pull console/tomcat-7.0查看本地镜像 docker images...
2019-08-23 20:16:25
280
原创 Docker 安装 Tomcat
Docker 安装Tomcat背景Docker 安装Tomcat启动Tomcat普通启动挂载启动重启,删除 服务参考自https://blog.youkuaiyun.com/oabcde12/article/details/79268429背景Docker 安装完成后,便开始了Docker 之旅,本次从在Docker 安装Tomcat中,主要的目的是接触Docker 命令,从而达到对Docker 的学习...
2019-08-22 17:21:10
192
原创 Win10 安装 Docker
Windows10 安装Dockerwindows10 安装docker背景:Docker 简介Docker Win10 安装环境准备Docker 安装Docker 常用配置验证总结本文参考: https://blog.youkuaiyun.com/hunan961/article/details/79484098windows10 安装docker背景:随着微服务的普遍,日常系统测试和维护都需要系统...
2019-08-22 11:11:16
208
原创 SpringBoot Redis 哨兵配置(一主两从三哨兵配置)
SpringBoot Redis 哨兵配置(一主两从三哨兵 )配置背景Redis 哨兵模式作为Redis 的一种高可用方案,实现了主从复制、监控,故障转移等工作,在一定程度上保证了Redis的高可用,避免了因Redis服务宕机导致缓存服务不可用情况;本博文主要是基于Spring Boot进行搭建的Redis Sentinel(哨兵模式),采用的是 一主两从三哨兵Redis Sentinel...
2019-04-10 14:31:13
192475
10
转载 Freemarker 宏
本文出自链接:https://www.jianshu.com/p/5f9cf758aed8什么是宏: 所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务;什么是Freemarker宏:在freemarker中宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量;宏可以算是Freemarker的一大特色,可以将公共的代码块进行抽取出来然后作为宏,可以减少代码量且方便...
2018-11-20 21:32:17
776
原创 Freemarker 视图解析器标签
该篇博客参考了网上一些标签,博文中的标签都自测可用,仅用来作为后边忘记查阅的资料;1.数据类型FreeMarker和java不同,FreeMarker不需要定义变量的类型,直接赋值即可。字符串: value = “xxxx” 。如果有特殊字符 string = r"xxxx" 。单引号和双引号是一样的。数值:value = 1.2。数值可以直接等于,但是不能用科学计数法。布尔值:true...
2018-11-20 20:55:02
485
原创 Spring mvc配置jsp,freemarker双视图解析器
背景对于正在维护的项目,原始采用的是jsp进行页面渲染,在维护过程中,本着前后端数据分离的原则,开始采用freemarker进行页面渲染,但是又要兼容原始jsp页面,所以需要配置jsp,freemarker双视图解析器;开始1,pom文件中引入freemarker相关依赖<dependency> <groupId>org.freemarker...
2018-11-20 09:35:19
917
转载 java静态资源获取 .properties配置文件中属性值
背景在开发中,会遇到有些资源会放在静态资源中,在环境初始化时去初始化一次,从而可以共享给所有对象使用;但是在我们静态资源获取xxx.properties配置文件中的值时,不能采用Spring原始注解的方法@Value(${xxxx})获取,因为Static静态资源加载的顺序在Spring容器加载之前,所以无法读取xxx.properties中的值;如果需要静态资源获取properties中的值,...
2018-11-16 14:18:46
2922
原创 cas 单点登录实现指定url不过滤
背景:因为系统的庞大,所以将不同模块的系统放在不通的model模块中,这样在开发中可以一定程度上体现解耦的思想,不同模块之间的登录采用的是cas进行单点登录进行管理;但是开发过程中遇到一个问题,就是cas单点登录时,配置的过滤器是过滤所有的url请求的,及所有的请求url必须cas登录后才可以进行访问,但是有些url请求不需要登录的,比如注册请求url,这时我们就需要进行修改cas的过滤机制,但是...
2018-11-09 14:48:43
12963
1
原创 RabbitMq 结合Spring
背景:前期再学习RabbitMq时,只是基于main方法的形式进行学习,但是实际中使用是结合spring 或者是spring boot的,所以就搜索博客查看RabbitMq和Spring的整合方式,开始摸着石头过河,估计是运气不好,找了好多demo都是有bug,或者项目报错,基于看了好多博客,spring配置文件配置的方式大致相同,于是开始边摸索边参考一些文档敲出一下demo;以下demo经测试可...
2018-10-30 21:49:44
175
原创 利用maven-resource-plugin插件进行打包时不同环境下的配置文件切换
基本概念说明(resources、filter和profile): 1.profiles定义了各个环境的变量id 2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值 3.resources中是定义哪些目录下的文件会被配置文件中定义的变量替换,一般我们会把项目的配置文件放在src/main/resources下,像db,bean等,里面用到的变量...
2018-09-30 11:27:19
2092
原创 linux环境下配置ftp
1.查看linux是否安装ftp若返回ftp的版本信息,则标志着已经安装过ftp,可以根据需求判断是否卸载,卸载命令rpm -e vsftp 2. 安装ftpyum install -y vsftpd 3.配置ftp配置文件(ftp默认安装在/etc/vsftpd文件夹)ftp主要有3个主要配置文件,分别是:/etc/vsftpd/vsftpd.conf ...
2018-09-26 22:23:20
4203
转载 CAS 配置数据库方式账户认证
该篇博文转自:https://www.imooc.com/article/3729 CAS给出的缺省例子是将账户信息(用户名/密码)放在配置文件中,实际运行系统,账户信息通常是在数据库中保存。现在我们就配置一下如何对数据库中保存的账户进行认证。具体配置参考如下: 1. 首先,在mysql数据库中建立一张账户表account,并添加一些账户例子。注意,密码我们使用了MD5...
2018-05-12 22:22:25
746
1
转载 SSO CAS记住密码免登陆信息配置
SSO CAS记录密码免登陆操作 该篇博文转自https://www.imooc.com/article/3729 登录时,为了提高用户体验,在登录时,可以选择是否记住密码,从而使再次登录时无需输入密码,及记住密码操作,CAS 本身就提供了这种记住密码的操作,具体配置信息如下: 记住密码也是我们登录常提供的功能,CAS本身已经提供。...
2018-05-12 22:19:04
2560
转载 SSO CAS跨域请求配置
该篇博文信息参考自:https://www.imooc.com/article/4017 前面我们介绍的SSO,无论是CAS还是我们自主开发的Nebula,都有一个共同的特点,就是应用系统需要登录时,都先重定向到认证服务器进行登录。也就是说系统需要从一个应用先跳到另一个应用,我们看阿里的单点登录就是这么做的。但有时候,我们想进一步增加用户体验,并不希望用户离开原应用页面,在原...
2018-05-12 22:12:13
4888
canal 1.1.5安装包
2020-05-27
red hat mysql8.0.15安装包下载
2019-03-20
负载均衡3中session共享demo
2017-11-12
nginx-1.13.5安装包
2017-11-12
EasyUI中文API文档
2016-12-31
富文本框jar包
2016-12-31
tomcat7.0工具
2016-09-26
SSM框架关于js和css及静态资源无法加载问题
2017-03-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人