数据库、hbase、kafka

2021年09月15日 阅读数:3
这篇文章主要向大家介绍数据库、hbase、kafka,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、数据库数据库

1.简介缓存

目前数据库产品有300+多种,数据库产品繁多,可是在在进行数据库产品的选择的时候咱们主要考虑成本低,可用高,易维护,知足业务需求的条件下进行高效选择。 当前的数据库产品又能够分为关系型和非关系型数据库,关系数据库主要选择流行的产品Oracle, MySQL , SQL Serve 等,对于非关系型数据库,列式存储的数据库主要有MongoDB,Hbase等。安全

2.数据库的选择架构

  • 根据特性:可靠性、可扩展性、成本(Oracle ,DB2 ,SQL Server 等都是企业级的商业数据库,提供了很强的可用性和安全性,可是须要企业去花费大量的财力去购买产品许可证和服务。而MySQL 和 postgreSQL 均有基于社区发布的社区版,能够提供企业用户无偿使用,基于庞大的用户群体,功能和稳定性也很强,从而给企业节省了大量的采购成本。)
  • 根据业务等级

金融数据库对数据一致性,可用性要求相对比较高,基本都属于P0的业务,包括支付订单类型系统,白条核心系统,白条帐务等都属于核心的业务等级,这样的业务通常使用MySQL的分库分表,读写分离的方案,有效的提高系统的吞吐量。分布式

根据数据等级要求(P0-P4):数据库选择流程:ide

(1)关系型数据库(P0-P3)oop

  1. 确认数据库的应用等级。
    1. P0-P3 业务选择MySQL
    2. P4系统能够选择NoSQL , Hbase/MongoDB/CK/TiDB/数据中心
  2. 确认须要的存储空间和TPS/QPS,参考 "硬件基础资源"
    1. 预计1年的总数据量小于6T能够选择物理机的一主一从。(尽可能不选择MHA架构,由于不能知足自动跨机房切换)
    2. 若是1年的数据量大于6T,须要考虑分库分表,分布式StarDB。
  3. 确认分库分表
    1. 若是单表数据量大于2kw,选择分库分表,可使用CDS或者StarDB
    2. 对于读取量大的系统,能够增长从库进行读写分离。

(2)非结构化存储数据(P4)post

  1.   能够选择MongoDB,Hbase等
    1. 文档类型数据库选择MongoDB
    2. Key-Value 类型的选择Hbase
  2. 分析统计类系统,P4类系统,选型ClickHouse
    1. CK 为列式存储,对于count,group by 有很大的优化。
  3. 运营类型系统,能够选择使用 “数据中心”

 

2、hbase性能

1. hbase是什么优化

答:HBase是一个分布式的、面向列的开源数据库。

2.hbase的特色

  • HBase在Hadoop之上提供了相似于Bigtable的能力。
  • HBase是Apache的Hadoop项目的子项目。
  • HBase不一样于通常的关系数据库,它是一个适合于非结构化数据存储的数据库。
  • 另外一个不一样的是HBase基于列的而不是基于行的模式。

3.hbase的原理

  • 数据会先写到内存中,为了防止内存数据丢失,写内存的同时须要持久化到磁盘,对应了HBase的MemStore和HLog;
  • MemStore中的数据达到必定的阈值以后,须要将数据刷写到磁盘,即生成HFile(也是一颗小的B+树)文件;
  • hbase中的minor(少许HFile小文件合并)major(一个region的全部HFile文件合并)执行compact操做,同时删除无效数据(过时及删除的数据),多棵小树在这个时机合并成大树,来加强读性能。

4.hbase适用场景

  • 因为Hbase 是LSM树结构,牺牲了部分的读性能,大幅提升写性能,因此Hbase 适合写多读少的场景。

 

3、kafka

1.kafka是什么

答:Kafka是一个分布式发布-订阅消息系统。它最初由LinkedIn公司开发,以后成为Apache项目的一部分。

2.kafka特色

(1) 高吞吐量。据了解,Kafka每秒能够生产约25万条消息(50 MB),每秒处理55万条消息(110 MB)。

(2) 持久化。将消息持久化到磁盘,所以可用于批量消费,例如ETL,以及实时应用程序。经过将数据持久化到硬盘以及replication防止数据丢失。

(3) 分布式系统。全部的producer、broker和consumer都会有多个,均为分布式的。     

(4) 可扩展性。kafka使用zookeeper来实现动态的集群扩展,不须要更改客户端(producer和consumer)的配置。broker会在 zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在zookeeper上注册相关的watcher。     

3.Kafka中角色与术语

  • Producer          向kafka中发布消息的进程
  • Comsumer       从Kafka中订阅消息的进程
  • Broker               Kafka集群中每个kafka服务
  • Topic                 保存在Kafka中的每一类消息

  它们之间的数据流程如右图所示

数据库、hbase、kafka_数据库

  • Partition             每个topic能够被分红多个partition(分区)

Kafka集群中维护的partitions如图所示:

数据库、hbase、kafka_数据库_02

  • Replication

     一个partition能够有多个备份,默认为1。

  • Leader/Follower

     每一个partition都有一个惟一的leader,全部的读写操做都在leader上完成。

  • Offset

  每一个消息在partition中的位置叫作offset。

  • Consumer Group

  同一个Consumer Group中的consumers,Kafka将相应Topic中每一个消息只发送给其中一个Consumer。

4.Kafka系统架构

数据库、hbase、kafka_数据库_03

kafka是显式分布式架构,producer、broker(Kafka)和consumer均可以有多个。

Kafka的做用相似于缓存,即活跃的数据和离线处理系统之间的缓存

5.相关文档