Yezhiwei Blog

平时多流汗,战时少流血!

微服务简介

单体应用架构存在的问题 一个 war 包含所有功能的应用程序,通常称为单体应用。尽管在程序中进行了模块化,但若干业务模块被打包在一个 war 包中,这样的应用系统称为单体应用。 优点:容易部署、测试。可以快速实现需求。 缺点:随着需求的不断增加,开发团队的状大,代码库也在迅速增长, 此时单体应用变得越来越臃肿,可维护性、灵活性逐渐下降,维护成本高: 模块非常多、模块的边界模糊、依赖关系不...

Scrapy安装与创建项目

Scrapy爬取静态页面数据

Scrapy 安装 pip install scrapy 以上会报超时错误,所以增加了国内镜像,如下 pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scrapy 还是会有超时现象,不过重新试一次就自动地把所有相关的包安装成功,最后终端显示如下提示,说明安装成功: Installing collected pac...

Scrapy的初步认识

Scrapy 的初步认识 Scrapy 是一个高级的 Python 爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫获取的数据保存到 csv、json 等文件中。 Scrapy 使用了 Twisted 作为框架,Twisted 是事件驱动的,对于会阻塞线程的操作(访问文件、数据库等),比较适合异步的代码。 Scrapy 整体架构 Scrapy 数据流是由执行的核心引擎(Engine...

Kafka常见问题总结

在使用 Kafka 时,我们经常会遇到的问题有哪些? 会不会丢消息? Offset 怎么保存? Consumer 重复消费问题怎么处理? 如何保证消息的顺序? 数据倾斜怎么处理? 一个 Topic 分配多少个 Partiton 合适以及修改 Partiton有哪些限制? 如何保证消息不丢失? 消息不丢失对于消息队列来说至关重要,但要实现这一点也是非常困难。因为服务器可能会宕机,磁盘可能...

Redis实现分布式锁

常用的分布式锁实现方式 分布式锁一般有三种实现方式: 数据库乐观锁; 基于 Redis 的分布式锁; 基于 ZooKeeper 的分布式锁。 分布式锁的可靠性 为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件: 互斥性:在任意时刻,只有一个客户端能持有锁。 不会发生死锁:即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁(设置超时)。 具有容错性...

MySQL的四种事务隔离级别

事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用...

Spark常用算子实践总结

mapPartitions 与 map 的区别 与 map 方法类似,map 是对 rdd 中的每一个元素进行操作,而 mapPartitions(foreachPartition) 则是对 rdd 中的每个分区的迭代器进行操作。如果在 map 过程中需要频繁创建额外的对象,例如将 rdd 中的数据通过 JDBC 连接写入数据库,map 需要为每个元素创建一个 Connection 链接,开...

Flume案例——日志分析采集系统

概述 大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征: 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦; 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统; 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。 日志分析采集系统模块 数据采集模块:负责从各节点上实时采集数据,选用 Flume-NG 来实现。 ...

Flume安装及配置

Flume 提供了大量内置的 Source、Channel 和 Sink 类型。而且不同类型的 Source、Channel 和 Sink 可以自由组合—–组合方式基于配置文件的设置,非常灵活。比如:Channel 可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink 可以把日志写入 HDFS、HBase,甚至是另外一个 Source 等。 安装 下载源码包到 /usr/loca...

Flume核心概念

简介 Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。 功能 支持在日志系统中定制各类数据发送方,用于收集数据。 Flume 提供对数据进行简单处理,并写到各种数据接收方...