ALog

Kafka学习笔记(2)----Kafka的架构

心已入冬 提交于 2021-02-11 02:21:41
1. 架构图      一个Kafka集群中包含若干个Broker(消息实例),Kafka支持Broker横向扩展,Broker越多,吞吐量越大,同时也包含了若干个Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等)和若干个Consumer(消费者)以及一个zookeeper集群,Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。 2. Topic和Partition      Topic:是一个逻辑的概念,它可以认为类似于其他中间件中queue的概念,作为一组消息的一个集合,跟其他的消息中间件一样,每个消息的发送或者是消费都必须要指定Topic,表明将消息存在哪个Topic中。一个Topic可以接受多个Producer发送的消息和被多个Consumer消费。   Partition:了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件,同意Topic下不同分区包含的消息是不同的

Kafka学习之路 (二)Kafka的架构

雨燕双飞 提交于 2021-02-11 01:41:31
一、Kafka的架构 如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。 二、Topics和Partition Topic在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。创建一个topic时,同时可以指定分区数目,分区数越多,其吞吐量也越大,但是需要的资源也越多,同时也会导致更高的不可用性,kafka在接收到生产者发送的消息之后,会根据均衡策略将消息存储到不同的分区中

Hacker News 简讯 2020-08-26

早过忘川 提交于 2020-10-01 05:04:40
最后更新时间: 2020-08-26 23:00 Arwes – Futuristic Sci-Fi / Cyberpunk Graphical User Interface Framework - (arwes.dev) Arwes–未来科幻/网络朋克图形用户界面框架 得分:143 | 评论:30 Jacques Cousteau’s Grandson Wants to Build the ISS of the Sea - (smithsonianmag.com) 雅克·库斯托的孙子想建造海上国际空间站 得分:192 | 评论:97 Discrete Cosine Transform – Explain Like I'm Five - (ottverse.com) 离散余弦变换-像我五岁一样解释 得分:59 | 评论:25 What happens when you load a URL? (2015) - (danluu.com) 加载URL时会发生什么?(2015年) 得分:37 | 评论:12 Boom Supersonic hopes to test-fly its supersonic plane in 2021 - (engadget.com) Boom超音速公司希望在2021年试飞其超音速飞机 得分:67 | 评论:50 Draft of OCaml

11.2 rman 备份 放在DG 库上跑,可能遇到的问题。

折月煮酒 提交于 2020-08-14 00:17:39
问题: 在这里 DB DG 切换,发现一个问题,主库A的模式切换到备库模式 时候,该主库日志会有如下提示: ORA-17627: ORA-01017: invalid username/password; logon denied ORA-17629: Cannot connect to the remote database server 检查: 1. 经过检查,发现该报错来自于rman@pdbdb03 (TNS V1-V3) 进程 *** MODULE NAME:(rman@pdbdb03 (TNS V1-V3)) 2020-06-08 01:31:36.843 krsd_get_primary_connect_string 询问了,备份是跑数据库 A 上,备份也是正常的, 说明这个报错不会影响备份。 2. 经过分析,应该是触发了一个bug Bug 17580082 - ACTIVE STANDBY - RMAN-06820: WARNING: FAILED TO ARCHIVE CURRENT LOG AT PRIMARY Status: 32 - Not a Bug. To Filer 在11.2 环境下,如果rman 备份发生在备库,oracle 会强制主库做一个switch logfile 操作。如果连不上主库,就会触发这个报错。 as of 11.2.0.4, we

Spring Aop基于注解的实现

可紊 提交于 2020-08-11 14:52:40
一.AspectOriented Programing,面向切面编程。   AOP主要用于日志记录,性能统计,安全控制(权限控制),事务处理,异常处理等。将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。   Spring AOP织入增强(Advice)的方式有两种 如果连接点实现了接口采用jdk自带的动态代理的形式实现织入,如果连接点没有实现接口则采用动态字节码生成技术(CGLIB)实现织入。 二.AOP常用术语: 连接点(Joinpoint)   增强程序执行的某个特定位置(要在哪个地方做增强操作)。Spring仅支持方法的连接点,既仅能在方法调用前,方法调用后,方法抛出异常时等这些程序执行点进行织入增强。 切点(Pointcut)   切点是一组连接点的集合。AOP通过“切点”定位特定的连接点。通过数据库查询的概念来理解切点和连接点的关系再适合不过了:连接点相当于数据库中的记录,而切点相当于查询条件。 增强(Advice)   增强是织入到目标类连接点上的一段程序代码。表示要在连接点上做的操作。 切面(Aspect)   切面由切点和增强(引介)组成(可以包含多个切点和多个增强),它既包括了横切逻辑的定义,也包括了连接点的定义

如何在不停止程序的情况下打印完整的回溯?

扶醉桌前 提交于 2020-08-08 00:49:46
问题: I'm writing a program that parses 10 websites, locates data files, saves the files, and then parses them to make data that can be readily used in the NumPy library. 我正在编写一个程序,该程序可以解析10个网站,找到数据文件,保存文件,然后解析它们以生成可以在NumPy库中轻松使用的数据。 There are tons of errors this file encounters through bad links, poorly formed XML, missing entries, and other things I've yet to categorize. 有过不良链接,不好的XML,缺项,其他的事情我还没有进行分类文件遭遇 吨 的错误。 I initially made this program to handle errors like this: 我最初制作该程序来处理以下错误: try: do_stuff() except: pass But now I want to log errors: 但是现在我想记录错误: try: do_stuff() except Exception, err:

Android FrameWork——Binder机制详解(1)

一个人想着一个人 提交于 2020-07-27 04:20:03
1.前面我曾经发表过一篇blog介绍了aidl实现机制(aidl实现机制浅析),不过那只是停留在java表层,并遗留了一个问题,那就是BinderProxy.transact 该方法本地化实现,同时我指出了它的具体代码位置: \frameworks\base\core\jni\android_util_Binder.cpp->static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,jint code, jobject dataObj,jobject replyObj, jint flags) 要进一步深入进去,其实涉及了android ipc机制,也就是android独有进程通信机制的Binder,本文主要就是想深入说明Binder机制, 首先说明,这个有点难度,只是对我来说,呵呵,我参加完台湾教授,高焕堂先生开设的android高阶培训课程(android软硬件结合开发培训),并反复看了课件android底层Android框架底层结构知多少?以及网上其它同仁的blog后才有所体会,不过,在些这blog前我还是有不少不解之处,我和大家一样,带着疑问去写这个blog,边写边学习,有问题我会遗留,同时可能有不少不正确的地方,希望路过的高手解答一下,小弟不胜感激。 2.好了,结束开场白

如何在不停止程序的情况下打印完整的回溯?

£可爱£侵袭症+ 提交于 2020-05-01 13:39:43
问题: I'm writing a program that parses 10 websites, locates data files, saves the files, and then parses them to make data that can be readily used in the NumPy library. 我正在编写一个程序,该程序可以解析10个网站,找到数据文件,保存文件,然后解析它们以生成可以在NumPy库中轻松使用的数据。 There are tons of errors this file encounters through bad links, poorly formed XML, missing entries, and other things I've yet to categorize. 有过不良链接,不好的XML,缺项,其他的事情我还没有进行分类文件遭遇 吨 的错误。 I initially made this program to handle errors like this: 我最初制作该程序来处理以下错误: try: do_stuff() except: pass But now I want to log errors: 但是现在我想记录错误: try: do_stuff() except Exception, err:

nginx日志切割(logrotate或shell脚本)

大憨熊 提交于 2020-04-28 12:21:30
nginx自己不会对日志文件进行切割,可以通过两种不同的方式进行,分别是:通过logrotate和通过shell脚本。 如果是yum方式安装的nginx,系统默认会自动通过logrotate这个日志管理软件,按天进行分割(配置如下,具体含义可看下文)。 [root@flume- 2 ~]# cat /etc/logrotate.d/ nginx /var/log/nginx /* log { create 0644 nginx nginx daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript } 下面分别对这两种方法进行介绍下: 一、使用logrotate切割 前面说了yum或者apt-get方式安装的nginx会自动使用logrotate这个日志管理软件进行切割,所以本章节我们主要介绍有关logrotate相关的知识点。 1.1 logrotate 介绍 logrotate是什么呢?它是一个linux系统日志的管理工具。它可以切割、压缩等其他软件的日志文件软件。 logrotate是基于crontab运行的

websocket++序列: Config

萝らか妹 提交于 2020-04-13 17:01:42
【今日推荐】:为什么一到面试就懵逼!>>> 1. Core Configs 1.1 Policies: Typedef Name Effect concurrency_type Concurrency policy: 并行策略 elog_type Error logger type: 错误日志类型 alog_type Access logger type: 接入日志类型 request_type HTTP request type: HTTP请求类型 response_type HTTP response type: HTTP响应类型 message_type Type to deliver recieved messages: 用于传输接收的消息的类型 con_msg_manager_type Connection level message manager: connection级别消息管理 endpoint_msg_manager_type Endpoint level message manager: endpoint级别消息管理 rng_type Random Number Generation policy: 产生随机数的策略 transport_type Transport policy to use: 使用的传输策略 endpoint_base User