- 博客(20)
- 资源 (17)
- 收藏
- 关注
转载 MySQL是怎么处理并发操作的?
问题: 为什么需要锁? MySQL 中锁分类? 什么是事务? 事务的隔离级别 MySQL 是怎么实现事务机制的? MVCC 机制 总结 为什么需要锁?相信大家都比较熟悉电商系统中库存管理的场景,对于日常活动促销、618、双 11 等场景,会在规定时间内对商品进行促销活动,假设现在有一款 HHKB 机械键盘要参与促销活动,数据库中准备了 10 件,促销活动开始时,多位买家开始争抢,每卖出一件商品,库存减 1,直到卖完,那么怎么能保证商品
2020-08-29 11:20:17 1160
原创 PHP-FPM进程模型
本文将介绍以下内容: PHP-FPM进程管理方式介绍 PHP-FPM如何与Nginx等Web服务器进行通信 先说一下PHP-FPM的进程模型,PHP-FPM采用的是Master/Worker进程模型。当PHP-FPM启动时,会读取配置文件,然后创建一个Master进程和若干个Worker进程(具体是几个Worker进程是由php-fpm.conf中配置的个数决定)。Worker进程是由Master进程fork出来的。Master进程和Worker进程的作用: Mas..
2020-08-29 11:17:19 443
原创 python 实现简单的五子棋游戏
# -*- coding:utf-8 -*-# @Time: 2017/8/29 0029 10:14# @Author: assasin# @Email: assasin0308@sina.comfrom tkinter import *import mathclass chessBoard(): def __init__(self): # 创建一个tk对象,窗口 self.window = Tk() # 窗口名称 .
2020-08-29 11:15:43 459
转载 Kafka系列10:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(下)
前言在今天文章开始之前,想和粉丝朋友们先分享一个好消息,作者坚持以原创的态度去努力写好每一篇文章,同时得到了一小部分粉丝朋友们的认可和 InfoQ 写作平台的支持。在此非常感谢粉丝朋友的支持,同时也非常感谢 InfoQ 小编的认可。接下来我会继续努力,不忘初心,用心写好每一篇文章。另外最近忙着搬家和工作的事情,导致没有多余的时间来更文,希望朋友们能够多多包涵。好了,今天我们我们来继续分析 Kafka 的常见面试题。文章概览 Kafka 的延迟队列你有了解吗? Kafka 的幂等性
2020-08-22 10:29:37 139
转载 Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)
前言在本文开始之前,作者一直有个疑惑,就是面试题是只写写问题和答案就草草了事,还是应该深入分析一下其背后发生的一些原理。和朋友探讨以后作者还是决定采用后者的方式,因为我认为不仅要做到知其一,更要知其二,所以我们就用讲解原理的方式来看看 Kafka 常见的面试题吧。另外避免文章过长,我打算接下来使用几篇文章来详解每道题背后的原理。好了废话有点多,直接开干。文章概览 kafka 如何保证数据的可靠性和一致性? kafka 为什么那么快? Kafka 中的消息是否会丢失和重复消费
2020-08-22 10:29:28 175
转载 Kafka系列8:一网打尽常用脚本及配置,宜收藏落灰!
前言通过前面 7 篇文章的介绍,小伙伴们应该对 Kafka 运行工作原理有一个相对比较清晰的认识了。为了提高平时的工作效率,帮助我们快速定位一些线上问题,比如查看部分 Partition 堆积机器 IP 等操作,这篇文章总结了一些平时常用到的一些 Kafka 命令及常用配置,方便日后查阅(该文章中提到的相关配置会持续更新)。文章概览 常用脚本及命令总结。 常用配置及说明。 常用命令总结一.kafka-topic.sh脚本相关常用命令,主要操作 Topic。 创建名字..
2020-08-22 10:29:20 789
转载 Kafka系列第7篇:你必须要知道集群内部工作原理的一些事!
前言上篇文章讲到了消息在 Partition 上的存储形式,本来准备接着来聊聊生产中的一些使用方式,想了想还有些很重要的工作组件原理没有讲清楚,比如一个 Topic 由 N 个 Partition 组成,那么这些 Partition 是如何均匀的分布在不同的 Broker 上?再比如当一个 Broker 宕机后,其上负责读写请求的主 Partition 无法正常访问,如何让从 Partition 转变成主 Partition 来继续提供正常的读写服务?想要解决这些问题,就必须先要了解一下 Kafka 集
2020-08-22 10:29:11 195
转载 Kafka系列第6篇:消息是如何在服务端存储与读取的,你真的知道吗?
前言经过前 5 篇文章的介绍,估么着小伙伴们已经对消息生产和消费的流程应该有一个比较清晰的认识了。当然小伙伴们肯定也比较好奇,Kafka 能够处理千万级消息,那它的消息是如何在 Partition 上存储的呢?今天这篇文章就来为大家揭秘消息是如何存储的。本文主要从消息的逻辑存储和物理存储两个角度来介绍其实现原理。文章概览 Partition、Replica、Log 和 LogSegment 的关系。 写入消息流程分析。 消费消息及副本同步流程分析。 Partition、
2020-08-22 10:29:00 121
转载 Kafka系列第4篇:消息发送时,网络“偷偷”帮忙做的那点事儿
前言上篇文章讲述了消息从生产到写入到 Broker 的 partition 上背后发生的故事,并提出了消息发送的网络模型的问题。本篇文章我们来尝试揭开其背后的神秘面纱,耐心看完你一定会有所收获。文章概览 Sender 线程的建连准备阶段和发送网络请求两阶段。 Selector 选择器处理网络请求过程。 Sender 线程的两阶段上篇文章结尾提到了三个重要的方法,分别是 ready()、send()、poll()。其中 ready()和 send()可以理解为第一阶段,即建连准
2020-08-22 10:28:41 107
转载 Kafka第3篇之一条消息如何被存储到Broker上
本文我们从以下 4 个方面来探讨下一条消息如何被准确的发送到 Broker 的 partition 上。1. 客户端组件2. 客户端缓存存储模型3. 确定消息的 partition 位置4. 发送线程的工作原理客户端组件 KafkaProducer: KafkaProducer 是一个生产者客户端的进程,通过该对象启动生产者来发送消息。 RecordAccumulator: RecordAccumulator 是一个记录收集器,用于收集客户端发送的消息,并将收集到的消
2020-08-22 10:28:22 131
转载 Kafka系列文章之安装测试-第2篇
上篇文章讲解了 Kafka 的基础概念和架构,了解了基本概念之后,必须得实践一波了,所谓“实践才是检验真理的唯一办法”,后续系列关于 Kafka 的文章都以 kafka_2.11-0.9.0.0 为例;另外为了让大家快速入门,本文只提供单机版的安装实战教程,如果有想尝试集群方案的,后面在出一篇集群安装的教程,废话不多说了,直接开干。安装1. 下载版本号:kafka_2.11-0.9.0.0下载地址:http://kafka.apache.org/downloads2. 安装# 安装
2020-08-19 19:07:23 118
翻译 Kafka是什么-第一篇
前言如果有幸目睹过系统从零到一的演变过程,大家估计都会有一种感叹,就是随着业务复杂度和流量的不断上升,系统变得越来越难以维护,面对高额的维护成本,攻城师们不得不对现有架构进行改造升级,以便使得系统更适合当下业务的发展。说到架构改造升级,那到底该怎么改造呢?从哪里入手比较合适呢?这是一个比较大的话题,一两句话没办法讲述清楚,但是有一个出发点肯定是没有错的,就是为了更好的适应业务的发展需要进行必要的改造。假设几个场景,场景一:用户 A 刷了微博,可能对某类博主比较感兴趣,为了让用户 A 看到更多可能
2020-08-19 19:06:38 137
转载 Redis系列(八):缓存到底该如何做到高可用?
什么情况会导致缓存不可用? 单点问题: 什么是单点问题呢?就是我们在使用缓存时,有时候由于 QPS、内存容量只需要一个端口(此处的一个端口是指一主一从)就可以扛住所有读写请求时,比如写 QPS 5k,读 QPS 30k,内存 5G;根据这个数据规模,DBA 在部署资源时会选择只部署一个节点。当缓存资源由于某些情况导致服务器宕机或服务不可用时,由于只部署了一个端口,从而导致当前整个应用服务不可用(这种情况之前在实际生产环境中真实发生过,直接炸裂),这就是所谓的单点问题;其实在分布式架构中,为了做.
2020-08-19 19:04:46 155
转载 Redis系列(七):缓存只是读写回种这么简单吗?
前面利用 6 篇文章讲述了 Redis 相关的基础知识,相信小伙伴们对 Redis 已经有了一个比较深入的认识和理解了;本文来讲讲实际生产环境中 Redis 作为常用缓存组件是怎么和 DB(关系型数据库,比如 MySQL)配合使用的。看到这里可能有些朋友会内心肯定会淡淡的说上一句:写操作先更新 DB,然后在更新缓存,读操作先读缓存,如果没有读 DB 回种缓存,然后返回结果不就完事了么,这有什么好讲的?只要你有这样的疑问,那么请你一定认真看完本文,因为缓存读写策略远不止你想的那么简单,下面我们就来分析
2020-08-19 19:03:57 289
转载 Redis系列(六):Redis线程模型
最近有朋友说,能不能写一篇关于 Redis 线程模型的文章,面试被问到不会导致比较尴尬;今天就来给安排上。Redis 事件是什么?不是讲线程模型吗?和事件有什么关系?实际上 Redis 是一个事件驱动程序;大白话理解一下:就是通过事件的方式来运行 Redis 的。比如客户端向服务端发起一个 get 请求,在做好了建连、发送请求、响应请求、关闭连接等准备操作后,就触发了一个事件。所以在了解线程模型之前,先来看看事件。Redis 的事件分为两种,分别是文件事件和时间事件两种。什么是文件事件
2020-08-19 19:02:47 184
转载 Redis系列(五): Redis 集群搭建!
前言上篇文章我们介绍了 Redis 集群的工作原理机制,本文我们就来手动搭建一个 Redis 集群玩玩。强烈建议大家在开始本篇文章之前先看看上篇文章的介绍,这样对集群的安装会更加清楚一些。Redis 集群工作原理环境及版本说明 环境:MacOS 10.14.6 Redis 版本:Redis-4.0.10 最终目标 集群最终会有 6 个节点,3 主 3 从 7000 - 7002 三个节点为主节点 7003 - 7003 三个节点为从节点 700
2020-08-19 19:02:05 132
转载 Redis系列(四):Redis集群工作原理
前言插播一个小插曲,本来文章已经写好准备发布了,手贱清理了缓存导致文本内容全部丢失,以至于重新写稿。借此提醒广大粉丝朋友,平时一定要养成备份的好习惯,谨防出现博主这种愚蠢的行为。上篇文章讲解了缓存剔除的流程,以及 RDB 文件和 AOF 文件的原理介绍,本文我们来讲讲数据复制和集群工作的原理。目录 主从数据同步原理分析。 Redis 集群工作原理剖析。 集群槽指派机制。 集群服务自动检测 & 故障转移恢复操作。 主从数据同步原理分析主从数据同步
2020-08-19 19:00:37 290 1
转载 Redis系列(三):缓存过期该如何剔除?RDB和AOF又是什么?
前言相信很多朋友和我一样,平时工作中经常用到 Redis 的过期特性,还有通过 RDB 和 AOF 文件恢复数据,但是它们是如何工作的,本文就来介绍一下;通过了解底层实现原理,从而更好的整体把控系统的正常运行。目录 Redis 的缓存过期策略 RDB 的实现原理 AOF 的实现原理 Redis 的缓存过期策略常见的缓存过期策略大概有如下几种: 定时剔除策略 定期剔除策略 惰性剔除策略 定时剔除策略定时剔除是指在 Redis 后台启动
2020-08-19 18:59:39 307
转载 Redis系列之扫盲篇(一)
目录 Redis 是什么? Redis 安装。 基础命令扫盲。 Redis 是什么?Redis 是一款由 C 语言编写的、分布式的、高性能的、非关系型数据库,其拥有超高的吞吐量(每秒 10w,我司实际使用场景中单端口读请求最高 8w,写请求 5w,具体得看实际使用场景和机器性能),但由于其基于内存操作的,内存相对比较昂贵的,所以一般只有在并发相对比较高且存储要求相对较小的场景中被广泛使用(如果有钱一般可以不用考虑内存的事情,哈哈)。想说一句多余的话,为什么要学习 Red
2020-08-19 18:58:30 119
转载 Redis系列(二): 集合底层实现原理
目录 SDS 的设计到底有多牛逼。 List、Set、Sorted Set、Hash 底层实现原理 SDS 的设计到底有多牛逼Redis 使用 C 语言编写,但是并没有直接使用 C 语言自带的字符串,而是使用了 SDS 来管理字符串。接下来就来探讨下为什么 Redis 使用了 SDS 来管理字符串。SDS 全称 Simple Dynamic String,即简单动态字符串。SDS 组成部分如下: free:表示 buf 中的空闲的空间大小,图左空闲空间为 0,图右空闲空
2020-08-19 18:57:15 686
Lamp 环境搭建 (centos7 php 7.2 + apache 2.4 + Mariadb 10.2)
2018-12-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人