- 博客(1433)
- 资源 (1)
- 收藏
- 关注
原创 springcloud最全父pom文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd".
2022-05-29 15:48:42
826
转载 LVS之五:使用脚本实现RealServer的健康检查
部署的DR模型中,当一台RS宕机时,ipvs是不会自动踢出该RS服务器的,我这里使用一个脚本实现对RS的监控检查。一、需求分析:脚本要能判断RS运行情况; 当RS的web服务不能访问时,将其从lvs集群中踢出;而当RS重新上线时,再将其加入lvs集群; 定时检查(死循环或cron计划任务); 对RS的下线和上线做日志记录。二、web健康检查命令:使用curl能简单的实现对web应用可用性进行监控:curl命令选项: --cacert <file> CA证书 (...
2022-05-22 17:20:08
408
原创 LVS之四:DR模型实现
LVS-DR中存在的ARP问题与解决方法1、ARP通信絮乱在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱,当一个ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上的,它们都会接收到ARP广播解决方法:对节点服务器进行处理,使其不响应针对VIP的ARP请求使用虚接口lo:0承载ⅥP地址设置内核参数 arp_ignore=1:系统只响应目的IP为本地IP的ARP请
2022-05-22 17:17:30
356
转载 一键自动部署 Redis 任意版本
今天给大家分享一个超级实用的脚本,一键自动安装部署Redis的任意版本,记住是任意版本哦!脚本用法:chmod 755 redis-install.sh && sh redis-install.sh 4.0.10(后面跟的是你需要的版本号,需要什么版本就写什么版本),我这里安装的4.0.10具体脚本内容如下展示:#!/usr/bin/bash##redis任何版本全程自动化源码编译安装##用法:sh redis-install.sh 4.0.10(后面跟的是你需要的版...
2022-05-21 18:57:21
184
转载 分布式锁的 3 种实现方案
前言今天跟大家探讨一下分布式锁的设计与实现,希望对大家有帮助,如果有不正确的地方,欢迎指出,一起学习,一起进步。分布式锁概述我们的系统都是分布式部署的,日常开发中,秒杀下单、抢购商品等等业务场景,为了防止库存超卖,都需要用到分布式锁。分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。业界流行的分布式锁实现,一般有这 3 种方式: 基于数据库实现的分布式锁
2022-05-21 18:53:08
6292
转载 LVS之三:NAT模型实现
实验一、DIP和RIP同网段环境说明:需要四台虚拟机操作: client是客户端,ip为10.0.3.64 lvs服务器ip为10.0.3.65,192.168.137.128 web服务器两台,ip分别为192.168.137.129,192.168.137.130 关于虚拟机的网络: 10.0.3网段是桥接网段 192.168.137网段是仅主机网段 lvs虚拟机有两块网卡,一块桥接,一块仅主机 实验操作:一、在web1和we
2022-05-21 17:21:53
286
转载 RedisJson 横空出世
Redis官网给出了RedisJson(RedisSearch)的性能测试报告,可谓碾压其他NoSQL,下面是核心的报告内容,先上结论:对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。在混合工作负载场景中,实时更新不会影响 Redi
2022-05-16 20:25:26
240
转载 TCP 重传、滑动窗口、流量控制、拥塞控好难
正文TCP巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文,Go!相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。今天,将重.
2022-05-16 20:21:24
187
转载 Redis 官方可视化工具
RedisInsight 是一个直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CLI 和连接的 Redis 进行交互(RedisInsight 内置对 Redis 模块支持):https://docs.redis.com/latest/ri/RedisInsight 提供的功能: 唯一支持 Redis Cluster 的 GUI 工具; 可以基于 Browser 的界面来进行搜索键、查看和编辑
2022-05-16 20:14:28
228
转载 4种 Redis 集群方案对比
在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台服务器可用服务就可用。redis也是一样,为了解决单机故障引入了主从模式,但主从模式存在一个问题:master节点故障后服务,需要人为的手动将slave节点切换成为maser节点后服务才恢复。redis为解决这一问题又引入了哨兵模式,哨兵模式能在master节点故障后能自动将salve节点提升成master
2022-05-16 20:11:57
211
转载 Spring Boot + Redis 实现各种操作
一、Jedis,Redisson,Lettuce 三者的区别共同点:都提供了基于 Redis 操作的 Java API,只是封装程度,具体实现稍有不同。不同点: 1.1、Jedis 是 Redis 的 Java 实现的客户端。支持基本的数据类型如:String、Hash、List、Set、Sorted Set。特点:使用阻塞的 I/O,方法调用同步,程序流需要等到 socket 处理完 I/O 才能执行,不支持异步操作。Jedis 客户端实例不是线程安全的,需要通过连接池来使用 Jed
2022-05-16 20:05:59
279
转载 开源大数据OLAP引擎最佳实践
01开源OLAP综述如今的开源数据引擎多种多样,不同种类的引擎满足了我们不同的需求。现在ROLAP计算存储一体的数据仓库主要有三种,即StarRocks(DorisDB),ClickHouse和Apache Doris。应用最广的数据查询系统主要有Druid,Kylin和HBase。MPP引擎主要有Trino,PrestoDB和Impala。这些引擎在行业内有着广泛的应用。02开源数仓解决方案接下来,我们讲讲开源大数据以及数仓的解决方案。上图是EMR的..
2022-05-16 20:00:26
159
转载 5种限流算法,7种限流方式,挡住突发流量
前言最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环,这篇文章介绍限流相关知识。1. 限流限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请
2022-05-16 19:57:42
846
转载 Redis 分布式锁原理与实战总结
Redis 分布式锁使用SET指令就可以实现了么?在分布式领域CAP理论一直存在。分布式锁的门道可没那么简单,我们在网上看到的分布式锁方案可能是有问题的。「楼仔」一步步带你深入分布式锁是如何一步步完善,在高并发生产环境中如何正确使用分布式锁。在进入正文之前,我们先带着问题去思考: 什么时候需要分布式锁? 加、解锁的代码位置有讲究么? 如何避免出现锁再也无法删除? 超时时间设置多少合适呢? 如何避免锁被其他线程释放 如何实现重入锁?...
2022-05-16 19:53:16
561
转载 淘宝 10 年,高并发分布式架构演进之路
概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则,架构演进过程如下: 单机架构 第一次演进:Tomcat与数据库分开部署 第二次演进:引入本地缓存和分布式缓存 第三次演进:引入反向代理实现负载均衡 第四次演进:数据库读写分离 第五次演进:数据库按业务分库 第六次演进:把大表拆分为小表 第七次演
2022-05-16 19:48:35
165
转载 Redis 16 个使用场景
常见的16种应用场景:缓存、数据共享分布式、分布式锁、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、消息队列、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜.1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享例如:分布式Session<dependen
2022-05-15 18:09:59
139
转载 最全工作流引擎 Activiti
一、工作流介绍1.1 概念工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。1.2 工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。即使
2022-05-15 17:14:47
1074
转载 关于证书(certificate)和公钥基础设施(PKI)的一切
这篇长文并不是枯燥、零碎地介绍 PKI、X.509、OID 等概念,而是从前因后果、历史沿革 的角度把这些东西串联起来,逻辑非常清晰,让读者知其然,更知其所以然。证书和 PKI 的目标其实很简单:将名字关联到公钥(bind names to public keys)。加密方式的演进:MAC最早的验证消息是否被篡改的方式,发送消息时附带一段验证码|双方共享同一密码,做哈希;最常用的哈希算法:HMAC|\/Signature 解决 ...
2022-04-30 20:13:03
4511
转载 一个注解,优雅的实现循环重试功能
前言在实际工作中,重处理是一个非常常见的场景,比如: 发送消息失败。 调用远程服务失败。 争抢锁失败。 这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try/catch,while循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。一、@Retryable是什么?spring系列的spring-retry是另
2022-04-11 07:12:26
152
转载 Hive 核心知识点
1请谈一下 Hive 的特点 hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析,但是 Hive 不支持实时查询。2Hive 底层与数据库交互原理?...
2022-04-11 07:12:13
211
转载 Java8 Stream,常用方法大合集
一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。特点: 不是数据结构,不会保存数据。 不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。(保留意见:毕竟peek方法可
2022-04-11 07:11:38
217
转载 Redis 布隆(Bloom Filter)过滤器
当你遇到数据量大,又需要去重的时候就可以考虑布隆过滤器,如下场景: 解决Redis 缓存穿透问题(面试重点); 邮件过滤,使用布隆过滤器实现邮件黑名单过滤; 爬虫爬过的网站过滤,爬过的网站不再爬取; 推荐过的新闻不再推荐; 什么是布隆过滤器布隆过滤器 (Bloom Filter)是由 Burton Howard Bloom 于 1970 年提出,它是一种 space efficient 的概率型数据结构,用于判断一个元素是否在集合中。当布隆过滤器说,某个数据.
2022-04-10 16:14:42
2034
转载 Paxos VS Raft,谁才是王者
目录 Raft 基础 选举 日志复制 脑裂情况 大名鼎鼎的 Paxos 算法可能不少人都听说过,几乎垄断了一致性算法领域,在 Raft 协议诞生之前,Paxos 几乎成了一致性协议的代名词。但是对于大多数人来说,Paxos 算法太难以理解了,而且难以实现。因此斯坦福大学的两位教授 Diego Ongaro 和 John Ousterhout 决定设计一种更容易理解的一致性算法,最终提出了 Raft 算法!Raft 是一种更为简单方便易于理解的分布式算法,主要解
2022-04-10 15:52:54
228
转载 ES+Redis+MySQL,高可用架构设计
背景会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并,越来越多的系统需要打通同程 APP、艺龙 APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销,用户买了一张火车票,此时想给他发酒店红包,这就需要查询该用户的统一会员关系。因为火车票用的是同程会员体系,酒店用的是艺龙会员体系,只有查到对应的
2022-04-10 15:49:29
173
转载 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下
五、实时数仓建设核心1. 实时计算初期虽然实时计算在最近几年才火起来,但是在早期也有部分公司有实时计算的需求,但是数据量比较少,所以在实时方面形成不了完整的体系,基本所有的开发都是具体问题具体分析,来一个需求做一个,基本不考虑它们之间的关系,开发形式如下:早期实时计算如上图所示,拿到数据源后,会经过数据清洗,扩维,通过Flink进行业务逻辑处理,最后直接进行业务输出。把这个环节拆开来看,数据源端会重复引用相同的数据源,后面进行清洗、过滤、扩维等操作,都要重复做一遍,唯一不同的是业务的代码
2022-04-10 15:36:54
461
转载 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上
一、数仓基本概念1. 数据仓库架构我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,“架构”是什么?这个问题从来就没有一个准确的答案。这里我们引用一段话:在软件行业,一种被普遍接受的架构定义是指系统的一个或多个结构。结构中包括软件的构建(构建是指软件的设计与实现),构建的外部可以看到属性以及它们之间的相互关系。这里参考此定义,把数据仓库架构理解成构成数据仓库的组件及其之间的关系,画出下面的数仓架构图:数仓架构上图中显示的整个数据仓库环境包括操作型系统和数据仓库系统两大部分。操
2022-04-10 15:22:01
485
转载 Redis+Caffeine 两级缓存
在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。随着不断的发展,这一架构也产生了改进,在一些场景下可能单纯使用Redis类的远程缓存已经不够了,还需要进一步配合本地缓存使用,例如 Guava cache 或 Caffeine,从而再次提升程序的响应速度与服务性能。于是,就产生了使用本地缓存作为一级缓存,再加上远程缓存作...
2022-04-10 15:16:32
382
转载 Eureka注册中心如何承载大型系统的千万级访问
一、问题起源Spring Cloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。不少初学Spring Cloud的朋友在落地公司生产环境部署时,经常会问: Eureka Server到底要部署几台机器? 我们的系统那么多服务,到底会对Eureka Server产生多大的访问压力? Eureka Server能不能抗住一个大型系统的访问压力? 如果你也有这些疑问,别着急!咱们这就一起去看看,E
2022-04-10 15:04:17
364
转载 Spring Cloud底层原理
概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。一、
2022-04-10 14:42:37
323
1
转载 数据库和缓存双写一致性
前言数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深,跟大家一起聊聊,数据库和缓存双写数据一致性问题常见的解决方案,这些方案中可能存在的坑,以及最优方案是什么。1. 常见方案通常情况下,我们使用缓存的主要目的是为了提升查询的性能。大多数情况下,我们是这样使用缓存的: 用户请求过
2022-04-10 14:09:28
243
转载 分布式事务,Seata的演变
背景大家好,今天给大家分享一个在 2022 年出去面试 Java 几乎必问的一个技术,那就是 seata。什么??你才看了第一句话心里有闪现了无数个问号?因为没听说过 seata 这个东西?没关系,为了避免兄弟们出去面试被问到 seata 的时候,一脸蒙圈,我们今天就把这个东西给大家讲明白。既然要给大家讲什么是 seata,那就得先说一下这个东西的定位,这东西就是现在很火的 Spring Cloud Alibaba 里的一个组件,是专门帮助我们解决分布式事务问题的,也就是说,seata 是一
2022-04-10 13:54:31
203
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人