heartbeat

打造高性能 Kafka队列

為{幸葍}努か 提交于 2020-09-26 01:49:05
目录 一、原理简述 二、Producer 原理 三、Producer 端参数详解 四、Kafka Server 基本原理 五、KafkaServer 主分区与副本数据同步原理 六、KafkaServer 零拷贝原理 七、KafkaServer Leader 选举 八、KafkaConsumer 原理 九、KafkaConsumer 参数详解 十、性能优化方案 一、原理简述 【1】 Producer 将消息进行分组分别发送到对应 leader 节点; 【2】 Leader 将消息写入本地 log ; 【3】 Followers 从 Leader pull 最新消息,写入 log 后向 Leader 发送 ack 确认; 【4】 Leader 收到所有 ISR 中的 Follower 节点的 ACK 后,增加 HW ,标记消息已确认全部备份完成,最后返回给 Producer 消息已提交成功; 【5】消费端从对应 Leader 节点 poll 最新消息并消费,消费完成后将最新的 offset 位置提交至 Topic 为 _consumer_offsets 的主节点中保存。 二、Producer 原理 初始化 KafkaProducer,会创建一个后台线程 KafkaThread ,会循环的判断缓存中的数据是否需要提交。同时会发送消息,主要指定 Topic和 Value,不建议指定

Mysql高可用架构

左心房为你撑大大i 提交于 2020-08-20 07:51:58
低读低写并发、低数据量方案 方案一:双机高可用方案 1.数据库架构图 2.特点 一台机器A作为读写库,另一台B作为备份库;A库故障后B库作为读写库;A库恢复后A作为备库。 3.开发说明 此种情况下,数据源配置中的数据库IP地址,可采用虚拟的IP地址。虚拟IP地址由两台数据库机器上的keepalive配置,并互相检测心跳。当其中一台故障后,虚拟IP地址会自动漂移到另外一台正常的库上。 数据库的主备配置、故障排除和数据补全,需要DBA和运维人员来维护。而程序代码或配置并不需要修改。 具体配置可参考资料: http://lizhenliang.blog.51cto.com/7876557/1362313 http://database.51cto.com/art/201012/237204.htm http://gaoke.iteye.com/blog/2283890 4.适应场景 读和写都不高的场景(单表数据低于500万),双机高可用。 5.优缺点 优点是一个机器故障了可以自动切换;缺点是只有一个库在工作,读写并未分离,并发有限制。 方案二:主从结构方案 1.数据库架构图 2.特点 一台机器A作为写库,另一台B作为读库;A库故障后B库充当读写,A修复后,B库为写库,A库为读库。 3.开发说明 这种方案的实现,要借助数据库中间件Mycat来实现,Mycat的datahost配置如下

Mysql双机热备以及使用Keepalived实现Mysql双主高可用

断了今生、忘了曾经 提交于 2020-08-16 03:49:18
mysql双机热备的方式有两种: 主-从服务器双机热备 主-主服务器双机热备 下文以主-主服务器双机热备为例,主-从配置类似。 两台centos7,ip分别为:192.168.1.6、192.168.1.8 一、mysql创建数据库 本步骤两台主机都要执行一遍。两台主机都要安装,mysql安装见《CentOS7安装mysql8.0.12》或自行搜索。 安装完成后使用命令登录,密码为自己配置的密码: mysql -u root -p 创建一个测试数据库: mysql> CREATE DATABASE `test`; 使用test库(use test;)创建一个测试空表: mysql> create table tb_mobile( mobile VARCHAR(20) comment'手机号码', time timestamp DEFAULT now() comment'时间' ); 注意:网上资料中提到 配置之前要保证两个mysql数据一致,但因为本次配置两台mysql都为全新安装,因此未测试。 二、服务器配置 1.创建同步用户 使用mysql库, mysql> use mysql 然后分别为另一主机创建一个链接用户,该帐户必须授予REPLICATION SLAVE权限,因为mysql8在授权语句中不能出现IDENTIFIED BY ‘password’;

frp 内网穿透工具设置

拥有回忆 提交于 2020-08-15 11:28:51
下载地址: https://github.com/fatedier/frp/releases 参考地址:https://github.com/fatedier/frp/blob/master/README_zh.md 服务端配置 # [common] is integral section [common] # A literal address or host name for IPv6 must be enclosed # in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" bind_addr = 0.0.0.0 bind_port = 7000 # if you want to support virtual host, you must set the http port for listening (optional) vhost_http_port = 8080 vhost_https_port = 443 # if you want to configure or reload frps by dashboard, dashboard_port must be set dashboard_port = 7500 # dashboard user and

Linux下Keepalived安装与配置

痴心易碎 提交于 2020-08-15 11:27:02
简介 负载平衡是一种在真实服务器集群中分配IP流量的方法,可提供一个或多个高度可用的虚拟服务。在设计负载均衡拓扑时,重要的是要考虑负载均衡器本身的可用性以及它背后的真实服务器。用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。 Keepalived为负载平衡和高可用性提供了框架。负载平衡框架依赖于众所周知且广泛使用的Linux虚拟服务器(IPVS)内核模块,该模块提供第4层负载平衡。Keepalived实现了一组健康检查器,以根据其健康动态地自适应地维护和管理负载平衡的服务器池。虚拟冗余路由协议(VRRP)实现高可用性。VRRP是路由器故障转移的基础砖块。此外,keepalived实现了一组挂钩到VRRP有限状态机,提供低级别和高速协议交互。每个Keepalived框架可以独立使用或一起使用,以提供弹性基础设施。 在这种情况下,负载平衡器也可以被称为 导向器 或 LVS路由器 。 简而言之,Keepalived提供了两个主要功能: 健康检查LVS系统 实施VRRPv2堆栈以处理负载均衡器故障转移 Keepalived使用四个Linux内核组件: LVS框架:使用getsockopt和setsockopt调用来获取和设置套接字上的选项。 Netfilter框架:支持NAT和伪装的IPVS代码。 Netlink接口

MyCat关键配置说明

与世无争的帅哥 提交于 2020-08-14 10:18:09
一、 引言 Mycat作为现在最流行的分布式数据库中间件,已经在很多的生产项目中实施,随着时间的推移会有更多的生产项目中会用到Mycat。 本文主要是介绍MyCat主要配置文件,以及笔者对这些配置的一些理解。 二、 前言 本文主要分析的有server.xml,schema.xml,rule.xml三个最常用的文件。 三、 Server.xml Server.xml保存了mycat需要的所有的系统配置信息,代码映射为SystemConfig类。 标签主要有四个: system,user,firewarll,cluster. 接下来对四个标签进行说明 1. user标签 内容: <user name="test"> 说明用户名是test。 子标签: property,privileges. 1) property标签 内容: <property name="password">test</property> 用户密码是test <property name="schemas">db1, db2</property> 可访问的schema有db1,db2 <property name="readOnly">true</property> 是否只读 <property name="benchmark">1000</property> 连接上限,降级权值。 <property name=

面试必问之kafka

随声附和 提交于 2020-08-14 06:24:44
问题1:消息队列的作用 1、 解耦 快递小哥手上有很多快递需要送,他每次都需要先电话一一确认收货人是否有空、哪个时间段有空,然后再确定好送货的方案。这样完全依赖收货人了!如果快递一多,快递小哥估计的忙疯了……如果有了便利店,快递小哥只需要将同一个小区的快递放在同一个便利店,然后通知收货人来取货就可以了,这时候快递小哥和收货人就实现了解耦! 2、 异步 快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在小芳便利店后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。提高了工作的效率。 3、 削峰 假设双十一我买了不同店里的各种商品,而恰巧这些店发货的快递都不一样,有中通、圆通、申通、各种通等……更巧的是他们都同时到货了!中通的小哥打来电话叫我去北门取快递、圆通小哥叫我去南门、申通小哥叫我去东门。我一时手忙脚乱…… 我们能看到在系统需要交互的场景中,使用消息队列中间件真的是好处多多,基于这种思路,就有了丰巢、菜鸟驿站等比小芳便利店更专业的“中间件”了。 问题2:Kafka中有哪几个组件? 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。 经纪人:在管理主题中的消息存储时,我们使用Kafka

CAT分布式监控

感情迁移 提交于 2020-08-13 18:41:28
CAT报表简介 CAT提供以下几种报表: Transaction报表 一段代码运行时间、次数,比如URL、Cache、SQL执行次数和响应时间 Event报表 一行代码运行次数,比如出现一个异常 Problem报表 根据Transaction/Event数据分析出来系统可能出现的异常,包括访问较慢的程序等 Heartbeat报表 JVM内部一些状态信息,比如Memory,Thread等 Business报表 业务监控报表,比如订单指标,支付等业务指标 详情参考 https://github.com/dianping/cat/wiki/readme_report 来源: oschina 链接: https://my.oschina.net/u/4299119/blog/4297144

SpringBoot集成MyCat

♀尐吖头ヾ 提交于 2020-08-13 15:53:43
什么是Mycat   MyCat是一个开源的分布式数据库系统,前端用户可以把它看作是一个数据库代理。其实现的核心原理是“拦截” 。Myacat拦截用户发送过来的Sql语句,做一些特定的分析:如分片分析,路由分 析,读写分析,读写分离分析。然后将SQL发往真实的数据库。不同于其他的中间件比如druid连接池,Mycat使用的是Nio异步通信机制(非阻塞型的),它的线程池数量默认为1,实际生产环境线 程数=CPU的核数。推荐使用Mycat1.6版本,项目中MyCat配置代替原数据源的配置,非常简单。 应用场景: 1)单纯的读写分离,此时配置最为简单,支持读写分离,主从切换; 2)分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片; 3)多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化; 4)报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计; 替代 Hbase,分析大数据; 5)作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选 SpringBoot集成MyCat   Mycat已经帮我们在内部实现了路由的功能,我们只需要在Mycat中配置以下切分规则即可

做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点

≯℡__Kan透↙ 提交于 2020-08-11 19:15:22
CVPR 2020 会议上,有哪些目标检测论文值得关注? 选自heartbeat,作者:Derrick Mwiti,机器之心编译,参与:陈萍。 目标检测是计算机视觉中的经典问题之一。凭借大量可用数据、更快的 GPU 和更好的算法,现在我们可以轻松训练计算机以高精度检测出图像中的多个对象。 前不久结束的 CVPR 2020 会议在推动目标检测领域发展方面做出了一些贡献,本文就为大家推荐其中 6 篇有价值的目标检测论文。 论文清单 A Hierarchical Graph Network for 3D Object Detection on Point Clouds HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detection Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud Camouflaged Object Detection Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector D2Det: Towards High-Quality Object Detection and Instance Segmentation 1. A