自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1433)
  • 资源 (1)
  • 收藏
  • 关注

原创 Tomcat通过Redis实现session共享

对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每个用户的Session对象存在Servlet容器中,如果Tomcat服务器重启或者宕机的话,那么该session就会丢失,而客户端的操作会由于session丢失而造成数据丢失;如果当前用户访问量巨大,每个用户的Session里存放大量数据的话,那么就很占用服务器大量的内存,进而致使服务器性能受到影响。数据库持久

2022-01-21 01:27:28 1423 1

原创 Tomcat通过Memcached实现session共享

对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块。要实现这一点, 大体上有两种方式:一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据;另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据。在集群系统下实现session统一的有如下几种方案:1) 请求精确定位:session s

2022-01-20 01:49:52 1160

原创 Tomcat通过自带的Cluster方式实现Session会话共享

一般来说,在多个tomcat集群业务中,session会话共享是必须的需求,不然前端nginx转发过来的请求不知道之前请求在哪台tomcat节点上,从而就找不到session以至于最终导致请求失败。要实现tomcat session共享有多种方案,今天介绍下使用tomcat自带的cluster方式,在多个tomcat节点间自动实时复制session信息,配置起来很简单。tomcat自带的这种session共享方案,对于规模较小的tomcat集群来说够用了,但这个方案的效率比较低,在大并发下表现并不好。所以大

2022-01-19 01:44:51 619

原创 keepalived heartbeat和corosync区别

Heartbeat、Corosync、Keepalived这三个集群组件我们到底选哪个好呢?首先要说明的是,Heartbeat、Corosync是属于同一类型,Keepalived与Heartbeat、Corosync,根本不是同一类型的。Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);Heartbeat或Corosync是基于主机或网络服务的高可用方式;简单的说就是,Keepalived的目的是

2021-11-27 15:51:03 1350

原创 keepalived和zookeeper对比

以下是Keepalived与Zookeeper的对比:1、概括对比:1.1、Keepalived:优点:简单,基本不需要业务层面做任何事情,就可以实现高可用,主备容灾。而且容灾的宕机时间也比较短。缺点:也是简单,因为VRRP、主备切换都没有什么复杂的逻辑,所以无法应对某些特殊场景,比如主备通信链路出问题,会导致脑裂。同时,keepalived也不容易做负载均衡。1.2、zookeeper:优点:可以支持高可用,负载均衡。本身是个分布式的服务。缺点:跟业务结合的比较紧密。需要在业务代码

2021-11-26 14:35:52 187

原创 Activity工作流入门篇

什么是 Activity 工作流引擎 ?什么是工作流,比如说,我们在公司请假,可能要走审批的流程,从你自己到 Leader,然后从 Leader 到部门经理,然后部门经理再到人事部门,这一系列的流程实际上就相当于是一个工作流程,而这个就是一个工作流的最容易理解的模型。这肯定官方解读肯定不是这样,不然也太接地气了点,那么什么是 Activity 工作流呢?工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算

2021-09-06 00:26:01 27539 43

原创 一文搞懂Kafka

1、为什么有消息系统 解耦合 异步处理 例如电商平台,秒杀活动。一般流程会分为:1:风险控制、2:库存锁定、3:生成订单、4:短信通知、5:更新数据 通过消息系统将秒杀活动业务拆分开,将不急需处理的业务放在后面慢慢处理;流程改为:1:风险控制、2:库存锁定、3:消息系统、4:生成订单、5:短信通知、6:更新数据 流量的控制 1. 网关在接受到请求后,就把请求放入到消息队列里面 2.后端的服务从消息队列里面获取到请求,完成后续的秒杀处理流程。然后再给用户返回结果。优点:控.

2021-09-05 14:51:50 253

原创 猿辅导 x DorisDB:构建统一OLAP平台,全面升级数据分析能力

平台选型的业务背景业务特点和需求猿辅导作为互联网教育行业赛道中的领先品牌,每日有海量数据生成,为实现科技助力教育,十分重视数据在公司发展中发挥的作用,需要不断解决在数据建设上遇到的诸多挑战。在互联网教育数据体系中,不仅仅要关注用户活跃、订单收入,也很看重渠道推广转换率和用户续报率。这些指标存在不同的维度和不同的计算口径,以及多样化的业务系统接入模式,给我们OneService的底层设计带来了挑战。另一方面,数据时效性需求逐渐增强,离线T+1的数据已经越来越无法满足驱动业务的需求,数据逐步实时化也

2021-09-05 14:15:37 154

原创 小红书 x DorisDB:实现数据服务平台统一化,简化数据链路,提升高并发极速查询能力

OLAP引擎在小红书的演进史第一阶段,在2017年之前,数据总量还不是特别大,这个阶段使用AWS的Redshift,此时数仓体系还没有完全建立,很多数据需求的实现都是用短平快、烟囱式开发的方式来满足。数据ETL、数仓模型到最后报表端展现,在Redshift中一站式完成。但随着业务复杂度不断提升,以及数据量的快速增长,这种模式很快遇到了瓶颈。主要有以下问题: Redshift无法在不影响线上查询性能的前提下弹性扩展,一旦涉及到扩容,就会涉及到数据重分布,从而影响集群的性能以及可用性。

2021-09-05 14:06:31 318

原创 好未来 x DorisDB:全新实时数仓实践,深入释放实时数据价值

业务背景业务场景分类在教育场景下,根据数据时效性划分,数据分析处理可分为离线和实时两大部分:离线离线数据以8大数据域(日志、营销、交易、服务、教学、内容、学习、画像)建设为主,主要处理核心历史数据,解决“业务运营、分析师、算法”等海量数据多维度分析和挖掘等,采用批处理的方式定时计算。实时实时数据分析处理,主要包括由埋点产生的各种日志数据,数据量大,以结构化或半结构化类型为主;另外还包括由业务交易产生的业务数据,通常使用数据库的Binlog获取。实时数据分析的需求越来越多,特别

2021-09-05 13:18:23 224

原创 Apache Kudu 对频繁更新数据场景下的大数据实时分析

Apache Kudu 对频繁更新数据场景下的大数据实时分析最佳用例由于最近两次在大数据项目中使用Apache Kudu,写一篇文章谈谈对Kudu的一些看法和使用心得。一.对大规模数据实时分析的商业价值几乎所有的企业都有随着时间推移贬值的资产。直观地说,延长使用设备会降低设备的价值,如我们日常生活中的汽车、电子产品等。然而,数据通常不被视为随时间失去价值的资产,这种想法是错误的。虽然可能不是会计部门可以支付的费用,但是在可能导致更好的行动过程的时间段内,业务数据将失去价值。无论数据是否告诉您

2021-09-05 12:46:13 706

转载 TiDB 中的TiKV 性能参数调优实战

概述:TiKV 最底层使用的是 RocksDB 做为持久化存储,所以 TiKV 的很多性能相关的参数都是与 RocksDB 相关的。TiKV 使用了两个 RocksDB 实例,默认 RocksDB 实例存储 KV 数据,Raft RocksDB 实例(简称 RaftDB)存储 Raft 数据。TiKV 使用了 RocksDB 的 Column Families 特性。默认 RocksDB 实例将 KV 数据存储在内部的 default、write 和 lock 3 个 CF 内。defaul

2021-09-05 10:29:18 468

转载 Elasticsearch之 cerebro

cerebro is an open source(MIT License) elasticsearch web admin tool built using Scala, Play Framework, AngularJS and Bootstrap.celebro 是一个Elasticsearch的web 管理工具,基于scala,play框架和angularJS和Bootstrap前端工具构建。可以看到cerebro是对Elastic监控的工具,和对Elastic操作的工具。https://vk

2021-09-05 10:11:59 120

原创 DorisDB 性能调优实战

一些用户在做 DorisDB 的 POC 测试时,参照《DorisDB 企业版文档》进行了表模型选择、分区、分桶等基础配置后,查询性能离期望的理想状况可能还是会有些差异,或者想针对业务进一步优化以达到最佳性能。这里,我们就借用一个用户 POC 时的调优场景,来分享一些 DorisDB 系统性能调优中的技巧,同时也简要介绍下 DorisDB 企业版可视化 profiling 工具的使用。如果您使用的是 DorisDB 标准版,可以通过文字版的 profiling 信息,用文中提及的一些方法优化。下文将先介

2021-09-05 02:32:23 2180

原创 Flink 最佳实践之 通过 TiCDC 将 TiDB 数据流入 Flink

背景介绍本文将介绍如何将 TiDB 中的数据,通过 TiCDC 导入到 Kafka 中,继而被 Flink 消费的案例。为了能够快速的验证整套流程的功能性,所有的组件都以单机的形式部署。如果需要在生产环境中部署,建议将每一个组件替换成高可用的集群部署方案。其中,我们单独创建了一套 Zookeeper 单节点环境,Flink、Kafka、等组件共用这个 Zookeeper 环境。针对于所有需要 JRE 的组件,如 Flink,Kafka,Zookeeper,考虑到升级 JRE 可能会影响到其他

2021-09-05 01:58:57 555

原创 Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB

背景介绍本文将介绍如何将 MySQL 中的数据,通过 Binlog + Canal 的形式导入到 Kafka 中,继而被 Flink 消费的案例。为了能够快速的验证整套流程的功能性,所有的组件都以单机的形式部署。如果手上的物理资源不足,可以将本文中的所有组件搭建在一台 4G 1U 的虚拟机环境中。如果需要在生产环境中部署,建议将每一个组件替换成高可用的集群部署方案。其中,我们单独创建了一套 Zookeeper 单节点环境,Flink、Kafka、Canal 等组件共用这个 Zookeeper

2021-09-05 01:54:33 401 1

原创 如何查看 Flink 作业执行计划

当一个应用程序需求比较简单的情况下,数据转换涉及的 operator(算子)可能不多,但是当应用的需求变得越来越复杂时,可能在一个 Job 里面算子的个数会达到几十个、甚至上百个,在如此多算子的情况下,整个应用程序就会变得非常复杂,所以在编写 Flink Job 的时候要是能够随时知道 Job 的执行计划那就很方便了。刚好,Flink 是支持可以获取到整个 Job 的执行计划的,另外 Flink 官网还提供了一个可视化工具 visualizer(可以将执行计划 JSON 绘制出执行图),如下图所示。

2021-09-04 23:13:08 744

原创 基于 Flink 的动态欺诈检测系统(下)

介绍在本系列的前两篇文章中,我们描述了如何基于动态更新配置(欺诈检测规则)来实现灵活的数据流分区,以及如何利用 Flink 的 Broadcast 机制在运行时在相关算子之间分配处理配置。直接跟上我们上次讨论端到端解决方案的地方,在本篇文章中,我们将描述如何使用 Flink 的 "瑞士军刀" —— Process Function 来创建一个量身定制的实现,以满足你的流业务逻辑需求。我们的讨论将在欺诈检测引擎的背景下继续进行,我们还将演示如何在 DataStream API 提供的窗口不能满足你的要

2021-09-04 23:08:12 630 1

原创 一文搞定bin log/redo log/undo log

日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。binlogbinlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并且由Server层进行记录,使用任何存储...

2021-09-04 22:10:40 112

转载 Redis Pipeline详解

https://blog.csdn.net/w1lgy/article/details/84455579

2021-09-04 19:03:53 111

原创 Redis 性能

我们有个这样的需求:每天每一个抢购商品只能买一次,并且全场抢购商品总购买次数不允许超过5次。那么,整个商品限购的流程大概如下图所示:那么,在每次购买成功商品成功后,发送的MQ大概是这样的(假设当前这笔订单有两件抢购商品):[{"orderId":"2020020622000001","orderTime":"1581001673012","productId":"599055114591","userId":"860000000000001","mer...

2021-09-04 18:51:03 197

原创 阿里推荐的Redis使用规范

一、键值设计1、key名设计可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2、value设计拒绝bigkey防止网卡流量、慢查询,string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。反例:一个包含200万个元素的li

2021-09-04 18:17:15 228 1

原创 SpringBoot+Kafka+ELK 完成海量日志收集

整体流程大概如下:服务器准备在这先列出各服务器节点,方便同学们在下文中对照节点查看相应内容图片推荐下自己做的 Spring Boot 的实战项目:https://github.com/YunaiV/ruoyi-vue-proSpringBoot项目准备引入log4j2替换SpringBoot默认log,demo项目结构如下:图片pom<dependencies><dependency><gro...

2021-09-04 17:41:46 136

原创 微服务架构下的静态数据通用缓存机制

什么是静态数据这里静态数据是指不经常发生变化或者变化频率比较低的数据,比如车型库、用户基本信息、车辆基本信息等,车型库这种可能每个月会更新一次,用户和车辆基本信息的变化来源于用户注册、修改,这个操作的频率相对也是比较低的。推荐下自己做的 Spring Boot 的实战项目:https://github.com/YunaiV/ruoyi-vue-pro另外这类数据的另一个特点是要求准确率和实时性都比较高,不能出现丢失、错误,以及过长时间的陈旧读。具体是不是应该归类为静态数据要看具体的业

2021-09-04 17:26:33 152

原创 Redis 热点 Key的解决方案

一、热点Key问题产生的原因1、用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场景也会产生热点问题。2、请求分片集中,超过单 Server 的性能极限。在服务端读数据进行访问时,往往会对数据进行分片切分,此过程中会

2021-09-04 17:24:07 473

原创 es从系统到配置到使用调优

一、配置文件调优elasticsearch.yml内存锁定bootstrap.memory_lock:true 允许 JVM 锁住内存,禁止操作系统交换出去。zen.discoveryElasticsearch 默认被配置为使用单播发现,以防止节点无意中加入集群。组播发现应该永远不被使用在生产环境了,否则你得到的结果就是一个节点意外的加入到了你的生产环境,仅仅是因为他们收到了一个错误的组播信号。ES是一个P2P类型的分布式系统,使用gossip协议,集群的任意请求都可以发送到集群的任一节

2021-09-04 12:37:46 234

转载 Hadoop之——Hadoop3.x集群动态增加和删除DataNode与NodeManager节点

https://blog.csdn.net/l1028386804/article/details/94164259

2021-08-22 21:17:54 272

转载 Hadoop之——基于3台服务器搭建Hadoop3.x集群

https://blog.csdn.net/l1028386804/article/details/94164259

2021-08-22 21:16:03 132

转载 Flume之——配置多个Sink源(一个Source对应多个Channel和Sink)

https://blog.csdn.net/l1028386804/article/details/98055100

2021-08-22 21:12:58 914

转载 Storm之——Storm on Yarn 部署

http://blog.csdn.net/l1028386804/article/details/79172573

2021-08-22 21:11:30 126

原创 SkyWalking6.2.0版本UI参数、告警参数、指标含义中文解释

一、告警规则相关参数二、SkyWalking UI相关参数CPM:每分钟请求调用的次数SLA: 服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服务的性能和可用性。网站服务可用性SLA:9越多代表全年服务可用时间越长服务更可靠,停机时间越短1年 = 365天 = 8760小时99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时99.99 = 8760 * 0.0001 = 0.876小时 = 0.8.

2021-08-17 00:12:29 481

原创 SkyWalking 源码分析 —— traceId 集成到日志组件

1. 概述本文主要分享traceId 集成到日志组件,例如 log4j 、log4j2 、logback 等等。我们首先看看集成的使用例子,再看看集成的实现代码。涉及代码如下: 本文以logback 1.x为例子。2. 使用例子1、无需引入相应的工具包,只需启动参数带上-javaagent:/Users/yunai/Java/skywalking/packages/skywalking-agent/skywalking-agent.jar。2、在log...

2021-08-17 00:12:19 1548

原创 SkyWalking 源码分析 —— @Trace 注解想要追踪的任何方法

1. 概述本文主要分享@Trace 注解想要追踪的任何方法。我们首先看看@Trace的使用例子,再看看@Trace的实现代码。涉及代码如下: 2. 使用例子本节参考官方文档:Application-toolkit-trace-CN.md1、使用 Maven 引入相应的工具包 <dependency> <groupId>org.skywalking</groupId> <artifact...

2021-08-17 00:12:06 4305

原创 SkyWalking 源码分析 —— 运维界面(四)之操作视角

1. 概述本文主要分享运维界面的第四部分,操作视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Service Tree(service/serviceTree.html) 页时,如下图:以操作为维度进行展示。 黄色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心跳时间...

2021-08-16 01:24:45 303

原创 SkyWalking 源码分析 —— 运维界面(三)之链路追踪视角

1. 概述本文主要分享运维界面的第三部分,链路追踪视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Trace Stack(trace/trace.html) 页时,如下图:以链路追踪为维度进行展示。 红色部分,应用筛选器,调用「2. ApplicationsGetHandler」接口,获得应用列表。 紫色部分,TraceSegme...

2021-08-16 01:24:32 323

原创 SkyWalking 源码分析 —— 运维界面(二)之应用实例视角

1. 概述本文主要分享运维界面的第二部分,应用实例视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Instance Override(health/health.html) 页时,如下图:以应用实例为维度进行展示。 红色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心...

2021-08-16 01:24:21 296

原创 SkyWalking 源码分析 —— 运维界面(一)之应用视角

1. 概述本文主要分享运维界面的第一部分,应用视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的首页时,如下图:以应用为维度进行展示。 紫色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心跳时间。大多情况下,我们进入该界面,看的是从最后心跳时间开始的应用调用情况。 红色部分,..

2021-08-16 01:24:07 468

原创 SkyWalking 源码分析 —— JVM 指标的收集与存储

1. 概述本文主要分享SkyWalking JVM 指标的收集与存储。大体流程如下:Agent 每秒定时收集 JVM 指标到缓冲队列。 Agent 每秒定时将缓冲队列的 JVM 指标发送到 Collector 。 Collector 接收到 JVM 指标,异步批量存储到存储器( 例如,ES )。目前 JVM 指标包括四个维度:CPU Memory MemoryPool GCSkyWalking UI 界面如下:2. Agent 收集 JVM 指标2.1 JVMServ.

2021-08-16 01:23:55 547

原创 SkyWalking 源码分析 —— Collector 存储 Trace 数据

1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector 。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第四部分】SkyWalking Collector 存储 Trace 数据。友情提示:Collector 接收到 TraceSegment 的数据,对应的类是 Protobuf 生成的。考虑到更加易读易懂,本.

2021-08-16 01:23:43 857

原创 SkyWalking 源码分析 —— Collector 接收 Trace 数据

1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector 。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第三部分】SkyWalking Collector 接收 Trace 数据。友情提示:Collector 接收到 TraceSegment 的数据,对应的类是 Protobuf 生成的。考虑到更加易读易懂,本.

2021-08-16 01:23:29 460

linux实用命令集.txt

自己在工作中的一些总结,包括了使用工具,Java技术,数据库安装

2019-07-16

空空如也

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

TA关注的人

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