- 博客(53)
- 收藏
- 关注
原创 redis分布式锁之redisson可重入锁
1.上篇讲了java里使用setNX实现redis分布式锁,可是这种方法还是有很多弊端的,追求完美的做法可以使用redisson来实现分布式锁,如下:2.Redisson 是 java 的 Redis 客户端之一,是 Redis 官网推荐的 java 语言实现分布式锁的项目。它提供了一些 api 方便操作 Redis。因为本文主要以锁为主,所以接下来我们主要关注锁相关的类,以下是 Redisson 中提供的多样化的锁:可重入锁(Reentrant Lock)公平锁(Fair Lock)联
2022-04-11 19:00:34
3822
原创 kafka再平衡机制
所谓的再平衡,指的是在kafka consumer所订阅的topic发生变化时发生的一种分区重分配机制。一般有三种情况会触发再平衡:consumer group中的新增或删除某个consumer,导致其所消费的分区需要分配到组内其他的consumer上;consumer订阅的topic发生变化,比如订阅的topic采用的是正则表达式的形式,如test-*此时如果有一个新建了一个topic test-user,那么这个topic的所有分区也是会自动分配给当前的consumer的,此时就会发生再平衡;c
2021-09-27 20:11:54
984
原创 高并发场景下,对象存储桶的优化
OBS按照对象名的UTF-8编码范围来进行分区管理,对系统进行水平扩展与动态负载均衡。如果用户在对象命名规则上使用了顺序前缀(如时间戳或字母顺序),可能导致大量对象的请求访问集中于某个特定分区,造成访问热点。热点分区上的请求速率受限,访问时延上升。推荐使用随机前缀对象名,这样请求就会均匀分布在多个分区,达到水平扩展的效果。比如一下对象上传:vehicle/2021/8/13/xxxxxxxxx1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1.jpgvehicle/2021/
2021-08-13 09:45:36
593
原创 高并发接口设计
场景:每秒10000-40000并发,最高将近50000并发量一、硬件加持简单粗暴,单机视情况加内存,cpu等等,考虑加服务器做集群,或增加集群节点二、架构选择不会吧,不会吧,不会还有人在高并发场景下做成单体应用吧,假如某个接口并发量特别大,在不做限流的情况下是不是会把整个系统拖垮,其他功能也用不了,一个接口并发高导致服务器cpu或内存起飞,最终导致整个系统死掉。所以分布式架构是必须的,做成微服务,最坏结果也就是某个功能用不了,不影响其他功能。我遇到过的实际场景,某业务接口并发量很高,不限流的情况下
2021-07-09 19:58:36
3281
原创 Spring WebFlux异步非阻塞式编程
Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程去处理。了解了 Spring MVC 之后,再来说说 Spring WebFlux:上图左边,官方给出的定义如下:Spring WebFlux is a non-blocking web framework built from the ground up to take advantage of multi-core, next-gen
2021-06-09 11:27:56
2766
原创 微服务:gateway+sentinel+nacos实现服务熔断降级
准备一个gateway微服务pom如下: <!-- SpringCloud Gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </d
2021-04-08 21:44:22
4335
4
原创 docker环境下安装clickhouse
1.运行以下命令,会自动拉取镜像,运行容器docker run -itd --name ch-server --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server2.docker ps -a 可查看运行的容器3.进入clickhouse容器:docker exec -it 256e01f46a1d /bin/bash4.安装vim,可以不安装,不安装
2021-03-29 17:32:47
673
2
原创 springboot集成clickhouse
1.clickhouse应用场景,copy:应用场景:1.绝大多数请求都是用于读访问的2.数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作3.数据只是添加到数据库,没有必要修改4.读取数据时,会从数据库中提取出大量的行,但只用到一小部分列5.表很“宽”,即表中包含大量的列6.查询频率相对较低(通常每台服务器每秒查询数百次或更少)7.对于简单查询,允许大约50毫秒的延迟8.列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)9.在处理单个查询
2021-03-29 17:22:45
12679
4
原创 java8新特性,stream流多种写法
1.stream的.filter().findAny().orElse (null) 是什么意思EventStatisticsVo eventStatisticsVoTotal = list.stream().filter(p -> p.getType() == 2).findAny().orElse(eventStatisticsVoT);filter(p -> p.getType() == 2)表示过滤出list中type为2的元素;.findAny()表示将其中任意一个返回;.
2021-03-22 16:32:37
2714
原创 微服务:gateway+sentinel+nacos实现网关限流
1.准备一个gateway微服务导入以下依赖:<!-- SpringCloud Gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </depend
2021-03-18 17:41:23
3435
1
原创 网关限流,sentinel-dashboard安装部署
1.下载地址:https://github.com/alibaba/Sentinel/releases注意:sentinel控制台需要在JDK 1.8+的版本上运行。2.使用以下命令运行java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=196.128.1.0:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar如果我们需要修改端口,其中 -Dser
2021-03-18 16:47:41
925
原创 sykwalking分布式微服务链路追踪
不做介绍,直接上教程skuwalking历史版本下载地址:https://archive.apache.org/dist/skywalking/一.安装服务端下载apache-skywalking-apm-8.4.0.tar.gz,丢到服务器路径下。命令tar -zxvf 解压 ,mv ./apache-skywalking-apm-bin ./skywalking 改名1.更改信息存储方式,默认h2(内存数据库存储方式,重启后信息丢失),我们修改成es存储。在此之前请先安装es7.x.
2021-03-16 15:50:55
702
原创 Springboot admin 微服务监控,宕机邮件提醒
1.服务端依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>2.登录邮箱->设置->账户->开启IMAP/SMTP服务(去百度)3.配置yml文件# springspring: secu
2021-03-11 17:10:00
838
原创 微服务系列Springboot Admin搭配nacos进行服务监控
1.版本说明Spring-Boot版本:2.3.7.RELEASESpring-Cloud版本:Hoxton.SR9Spring-Cloud-Alibaba版本:2.2.5.RELEASESpring-Boot-Admin-starter-client:2.3.1Spring-Boot-Admin-starter-server:2.3.1这里springboot和springboot admin的大小版本最好相同,如boot版本是2.1,admin版本也应该是2.1,否则项目很有可.
2021-03-11 17:01:37
2977
2
原创 SpringCloud系列+Alibaba Nacos,使用Nacos替代Eureka与Spring Cloud Config
开年公司架构调整,准备走微服务架构,大佬们讨论后大概就是springcloud系列了,之前也有过springcloud核心组件的学习,不过现在得集成Nacos来替代官方推荐的eureka与config作为注册中心和分布式配置中心。 1.下面弄来一张对比图,看一下:对比:1.性能也不差,对于服务数量小于上千台来说,性能没有问题2.eureka: 可以做注册中心,完全AP,支持注册中心之间的节点复制,同时支持服务端同时注册多个注册中心节点, 所以不存节点信息不一致的情况3...
2021-02-25 17:15:01
1947
4
原创 springboot集成Pulsar,生产者与消费者示例代码
话不多说,上代码:1.导入pulsar的jar包<dependency> <groupId>org.apache.pulsar</groupId> <artifactId>pulsar-client</artifactId> <version>2.6.1</version></dependency>2.pulsar配置(示例为yml文件)# pulsar配置p
2021-02-22 16:00:16
9791
4
原创 Pulsar对比Kafka,为什么用Pulsar代替Kafka
Pulsar与Kafka一样是分布式消息中间件Pulsar特性:1.线性扩展。能够丝滑的扩容到成百上千个节点(Kafka扩容需要占用很多系统资源在节点间拷贝数据,而Plusar完全不用)2.高吞吐。每秒数百万消息3.低延迟。在大规模的消息量下依然能够保持低延迟(< 5ms)4.持久化机制。Plusar的持久化机制构建在Apache BookKeeper之上,提供了写与读之前的IO隔离5.基于地理位置的复制。Plusar将多地域/可用区的复制作为首要特性支持。用户只需配置好可用区
2021-02-22 15:19:22
8885
原创 ElasticSearch第十一篇:常用DSL查询语法
一:Filter DSL1.term 过滤(精确匹配)term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型)DSL:{ "query" : { "term" : { "picParentId" : "15020400114" } }}2.terms 过滤(多条件精确匹配)terms跟term有点类似,但terms允许指定多个匹配条件。...
2020-12-07 17:44:36
3988
原创 Springboot集成kafka,更换环境启动项目报Connection to node -1 could not be established. Broker may not be availab
10:33:51.717 [restartedMain] INFO o.a.k.c.u.AppInfoParser - [<init>,109] - Kafka version : 2.0.110:33:51.717 [restartedMain] INFO o.a.k.c.u.AppInfoParser - [<init>,110] - Kafka commitId : fa14705e51bd2ce510:34:12.834 [restartedMain] WARN .
2020-12-07 17:30:31
1421
原创 SpringBoot集成Spring Security实现登陆和简单权限验证
1.数据库配置好2.导依赖 <!-- spring security 安全认证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependen
2020-09-21 11:51:53
7320
6
原创 阿里云服务器安装配置redis,无法远程访问
我的博客要上线测试了,买的阿里云服务器,在装完redis后,项目和管理工具并不能连接上服务器上的redis,这是怎么回事。解决办法如下:1.开启防火墙:systemctl start firewalld.service2.添加端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent3.重启防火墙:firewall-cmd --reload再尝试连接,还是连接不上。因为新建的阿里云服务器实例,是默认不让外网访问的,一个实
2020-09-07 22:24:18
974
原创 linux环境下安装配置redis,并设置开机自启动
1.官网下载tar包,地址:https://redis.io/download2.上传至/usr/local目录并解压tar -zxvf redis-6.0.7.tar.gz3.安装gcc环境由于redis是由C语言编写的,它的运行需要C环境,因此我们需要先安装gcc。安装命令如下(二选一或全选):yum -y install gcc gcc-c++ libstdc++-develyum install gcc-c++4.如果安装过程中报以下错误:编译错误zmallo
2020-09-07 11:39:19
1789
原创 ElasticSearch第十篇:multi_match多字段查询以及wildcard模糊查询
1.multi_matchmulti_match查询提供了一个简便的方法用来对多个字段执行相同的查询,即对指定的多个字段进行match查询,其有三种类型,best_fields,most_fields以及cross_fields,默认为best_fields。比如使用同一个查询关键字同时在company和place中查询:GET 51job/_doc/_search{ "query": { "multi_match" : { "query"
2020-08-19 17:13:27
8869
原创 ElasticSearch第九篇:match和term查询的区别,match_phrase短语查询,bool联合查询
本博客以51job数据作为数据支持1.match查询match查询会先对搜索词进行分词,分词完毕后再逐个对分词结果进行匹配,因此相比于term的精确搜索,match是分词匹配搜索,match搜索还有两个相似功能的变种,一个是match_phrase,一个是multi_match。对于最基本的match搜索来说,只要搜索词的分词集合中的一个或多个存在于文档中即可。基本的match查询:GET 51job/_doc/_search{ "query": { "match": {
2020-08-17 18:29:58
1449
原创 Python多进程根据标题批量爬取视频,自动解析片段数量,自动解析.m3u8链接,并按标题分类存储
注:此博客无任何教程,只有代码和部分注释,博主自己看的!刚学习python三天,不喜勿喷功能:1.解析首页资源2.解析首页对应标题下的资源页面链接3.自动解析每个资源链接的.ts数量4.自动解析每个资源对应的.m3u8资源(用于分析片段数量)5.按标题分类存储代码仅提供爬虫实现的思路,无法复用code:import multiprocessingimport osimport stringimport requestsimport refrom bs4 im
2020-08-16 13:59:55
734
原创 基于java的zabbix4.4 API开发
为什么要写这篇博客呢,是因为最近做的视频结构化运维系统有集成zabbix做服务器监控,项目需要调用zabbix得api来获取服务器得指标。所以呢边学习便记录api开发有两种方式,一种是基于zabbix4j得jar包开发,一种是直接http直接调用,今天得博客就是通过http来调用。...
2020-07-28 14:06:08
1827
2
原创 zabbix4.4配置监控服务器指标,以及图形页乱码解决
此博客基础为已搭建好zabbix_server与zabbix_agent,且能进入web页面。详情看上篇博客。1.创建需要监控的主机配置-主机-创建主机 (按下图配置好后点应用或者更新)2.点击模板,然后点击选择,选择后点击更新。3.应用模板之后,等一会自动添加这些信息(启用主机)4.点击监测-最新数据 或者 图形就可以看监控的数据了到这就完成了服务器指标监控,下面解决乱码:1.先去自己电脑复制一份字体2.上传(STXINGKA.TTF为我上.
2020-07-24 15:51:33
316
原创 linux源码编译安装部署zabbix4.4
1.关闭防火墙systemctl stop firewalld.service # 临时关闭systemctl disable firewalld.service # 永久关闭2.安装apacheyum install -y httpdsystemctl enable httpd # httpd服务开机进行自启systemctl start httpd # 启动httpd服务3.安装mysql(博主装得5.6.42,不再赘述),不会使用源码装得或者网络慢得使用
2020-07-22 17:34:45
605
2
原创 springboot集成bboss操作elasticsearch索引,类型,文档(单集群)
工作之余想开发一个前后端分离的个人博客系统来熟悉和增加自己的技术栈,想使用elastisearch来做博客的搜索功能,而原生的api操作起来步骤较多,感觉很繁琐。所以最近在找框架,看能不能简化操作,快捷的开发。然后,然后就找到了bboss。 bboss是一套基于query dsl语法操作和访问分布式搜索引擎elasticsearch的o/r mapping高性能开发库,底层基于es restful api。基于bboss elasticsearch,可以快速编写出访问和操作ela...
2020-07-04 19:12:10
4336
2
原创 springboot集成CXF开发webservice,并向外发布,调用接口
先复制一段说明: Apache CXF = Celtix + XFire,CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或 者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。CXF 包含了大量的功能特性,但...
2020-06-27 16:17:03
4494
1
原创 SpringCloud之Config分布式远程配置中心
一、什么是分布式配置中心?用来干嘛的?Spring Cloud Config 是一种用来动态获取Git、SVN、本地配置文件的一种工具在spring cloud项目中,都会配置一个配置中心去管理各个服务的配置文件,而往往配置文件不会放到本地配置中心,一般都会放到git上,也就是配置文件与项目分离,放在git或者svn上统一管理。既可以多个项目的配置文件共用一个仓库,也可以每个项目分别一个仓库!!接下来我们看看如何来搭建config服务端和客户端:1.先创建一个名为springcloud-co
2020-06-16 22:32:29
381
原创 Hystrix熔断器:服务熔断与服务降级
先了解一下什么是服务雪崩? 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”、如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。 对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒中内饱和,比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生...
2020-06-09 17:11:20
1372
原创 ElasticSearch第八篇:springboot集成Elasticsearch,以及索引和文档的原生API操作详解,超详细!!!!!!!!!!!!!!
1.进入官网https://www.elastic.co/cn/2.查找api文档3.找到该导入的依赖:<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.6.1</v
2020-06-03 23:25:58
1501
2
原创 ElasticSearch第七篇:ES花式查询(重点),高亮查询(重点,好玩实用)!以及文档简单的增删查改
1.添加文档PUT /bujingyi/user/1{ "name":"不经意", "age":24, "desc":"伤痛开花,苦难结果,思维灵动,人生丰盈", "tags":["直男","技术","爱学习"]}2.获取数据,GET(最简单的获取)GET /bujingyi/user/1简单的条件查询:GET /bujingyi/user/_search?q=name:不经意上图的查询结果中有一个字段"_score" : 2.561446,
2020-06-01 22:13:39
1693
原创 ElasticSearch第六篇:基于restful风格的基本ES索引增删改查操作
method url 描述 PUT 192.168.141.128:9002/索引名/类型名(高版本弃用之后可不写)/文档id 创建文档(指定文档id) POST 192.168.141.128:9002/索引名/类型名(高版本弃用之后可不写) 创建文档(随机文档id) POST 192.168.141.128:9002/索引名/类型名(高版本弃用之后可不写)/文档id/_update 修改文档 DELETE 192.168.141.12
2020-05-31 23:52:56
966
1
原创 ElasticSearch第五篇:IK分词器,自定义扩展字典
一、什么是ik分词器分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是每个字看成一个词,比如“我爱狂神”会被分为“我,“爱”,“狂”,“神”,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题,IK提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分!二、如何使用1.下载各版本下载
2020-05-29 17:18:52
5605
7
原创 ElasticSearch第四篇:ES核心概念与倒排索引
一、ES核心概念注意:ES是面向文档的!!!!!!!!对比一下关系型数据库:Relational DB Elasticsearch 数据库(database) 索引(index) 表(tables) 类型(types) 行(rows) 文档(documents) 列(columns) 字段(fields) 1.集群一个集群就是由一个或多个节点组织在一起,他们,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群有一个唯一的名字标识,.
2020-05-27 23:05:08
982
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人