cassandra

架构师都该懂的 CAP 定理

痴心易碎 提交于 2020-12-12 19:53:34
面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事。由此,分布式系统领域诞生了一个基本定理,即 CAP 定理,用于指导分布式系统的设计,从系统高可用,数据一致性,网络容错三个角度将分布式系统的特性抽成一个分区容错一致性模型。这样一来,让系统设计者只需根据业务场景特点,进行权衡设计适合业务场景的分区容错一致性模型即可,很大程度简化了分布式系统设计的难度。 也因此,CAP 定理是架构师所必须要掌握的内容,它影响着架构师对分布式系统的技术选型,技术决策。既然如此重要,接下来,我们就一起学习下 CAP 定理吧。 什么是 CAP CAP 定理最初是由加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想,也因此被叫做布鲁尔定理。后来在 2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了 CAP 定理的证明,让它成为分布式系统领域公认的一个定理。 CAP 定理指出了,在一个跨区域网络连接,共享数据的分布式系统中,一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance)

分布式系统基本原理

雨燕双飞 提交于 2020-12-12 14:59:19
三元组 其实,分布式系统说白了,就是很多机器组成的集群,靠彼此之间的网络通信,担当的角色可能不同,共同完成同一个事情的系统。如果按”实体“来划分的话,就是如下这几种: 节点 -- 系统中按照协议完成计算工作的一个逻辑实体,可能是执行某些工作的进程或机器 网络 -- 系统的数据传输通道,用来彼此通信。通信是具有方向性的。 存储 -- 系统中持久化数据的数据库或者文件存储。 状态特性 各个节点的状态可以是“无状态”或者“有状态的”. 一般认为,节点是偏计算和通信的模块,一般是无状态的。这类应用一般不会存储自己的中间状态信息,比如Nginx,一般情况下是转发请求而已,不会存储中间信息。另一种“有状态”的,如mysql等数据库,状态和数据全部持久化到磁盘等介质。 “无状态”的节点一般我们认为是可随意重启的,因为重启后只需要立刻工作就好。“有状态”的则不同,需要先读取持久化的数据,才能开始服务。所以,“无状态”的节点一般是可以随意扩展的,“有状态”的节点需要一些控制协议来保证扩展。 分布式系统的三个指标 这三个指标不可能同时做到。这个结论就叫做 CAP 定理 CAP三个特性只能满足其中两个,那么取舍的策略就共有三种: CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但放弃P的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限

Cassandra data stax driver update 4.4 query timeout issues

隐身守侯 提交于 2020-12-11 06:24:13
问题 our application was recently upgraded to cassandra datastax driver 4.4.X. Earlier it was on version 3.3. After the upgrade we noticed quite a lot of timeout issues for ex: init query timeout session query timeout control connection timeout.. and other timeout parameters defaulted in reference.conf Earlier this used to work with default parameter but after the upgrade we need to default this to > 5 seconds. Have any one faced similar issue after the upgrade? 回答1: You need to upgrade to at

Connecting Cassandra from AWS Lambda

旧时模样 提交于 2020-12-07 06:38:31
问题 We are checking the feasibility of migrating one of our application to Amazon Web Services (AWS) . We decide to use AWS API Gateway to expose the services and AWS Lambda (java) for back end data processing. The lambda function has to fetch a large amount of data from our database. Currently using Cassandra for data storage, which has been set up with in an EC2 instance and it has no public ip. Can anyone suggest a way to access Cassandra(EC2) from AWS Lambda using the private Ip ( 10.0.x.x)?

Creating new table with cqlsh on existing keyspace: Column family ID mismatch

跟風遠走 提交于 2020-11-30 06:20:31
问题 Houston, we have a problem. Trying to create a new table with cqlsh on an existing Cassandra (v2.1.3) keyspace results in: ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ConfigurationException: Column family ID mismatch (found e8c03790-c952-11e4-a753-5981ea73cd7c; expected e8b14370-c952-11e4-a844-8f10bfb9c386)"> After the first create attempt, trying

Cassandra add node problem, failed; error='Cannot allocate memory' (errno=12)

妖精的绣舞 提交于 2020-11-29 09:21:26
问题 I have a cluster of cassandra (v3.11.4) with 14 nodes and I wanna to add a new node. The machine has 256GB memory and I set heap size (max and min) to 64GB . But I cannot add a new node due to memory error! What is the exact problem and What I need to do? The last line of logs are as follows: INFO [CompactionExecutor:1153] 2020-06-11 10:51:09,719 NoSpamLogger.java:91 - Maximum memory usage reached (20971520000), cannot allocate chunk of 1048576 INFO [Service Thread] 2020-06-11 10:51:10,339

Netflix基于云的微服务架构设计分析

那年仲夏 提交于 2020-11-25 10:46:33
Netflix的微服务架构为其提供全球视频流服务,本篇文章将对此架构进行全面的系统设计分析。 1. 简介 Netflix多年来一直是全球最出色的在线订阅制的视频流服务之一,其占世界互联网带宽容量的15%以上。2019年,Netflix已经获得了超过1.67亿的订阅用户,每个季度新增用户超过500万,服务涵覆盖全球200多个国家或地区。更具体点说,Netflix的用户每天要花费超过1.65亿小时观看4000多部电影和47000多集电视剧。这些令人印象深刻的数据从工程设计的角度来看,Netflix的技术团队已经设计了一个惊人的视频流系统,其具有高可用性和可扩展性,以服务其全球客户。 然而,这可是其技术团队花费了超过8年的时间才将他们的IT系统升级到现在的规模。事实上,Netflix的基础架构转型始于2008年8月,触发点是当时数据中心的服务中断导致整个DVD租赁服务关闭了三天。Netflix意识到它需要一个没有单点故障的更可靠的基础架构。为此,它做出了两个重要的决定:将IT基础架构从其数据中心迁移到公有云,并使用微服务架构的小型可管理软件组件替换其单体应用程序。这两个决定直接塑造了Netflix今天的成功。 Netflix选择AWS Cloud来迁移其IT基础架构,因为AWS可以在全球范围提供高度可靠的数据库、大规模云存储和多个数据中心。通过使用AWS建立和维护的云基础架构

Cassandra的误解

↘锁芯ラ 提交于 2020-11-23 23:59:26
转载:https://www.infoq.cn/article/cassandra-mythology/ 正如 Apache Cassandr a 的名称是来自于著名的物洛伊女巫一样,在它身上确实存在着各种误解。和大多数误解一样,至少在一开始时它们确实是有那么一点道理的,但随着 Cassandra 不断地深化与改善,这些误解的内容已经不复存在了。在本文中,我将针对五个常见的疑惑作出解释,澄清人们的困惑。 误解:Cassandra 就是一个嵌套的 map 随着使用 Cassandra 的应用程序变得越来越复杂,以下观点正在逐渐变得清晰起来:与“任何东西都是一个数组缓冲”或者“任何东西都是一个字符串”这种设计方式相比,schema 与数据类型会使大型应用的开发与维护更加简单, 现如今,理解 Cassandra 的数据模型的最好方式是将其想像为 表与行 的组合,并且与关系型数据相似的是,Cassandra 的列也是强类型的,并且可以进行索引。 你也许还听到过其它这些说法: “Cassandra 是一种列数据库。” 列数据库 会将某个列的全部数据一起保存在磁盘上,这种方式对于数据仓库的检索方式是比较适合的,但对于那些需要对特定的行进行快速访问的应用程序来说就不太适合了。 “Cassandra 是一种 宽行数据库 。”这种说法有一定的道理,因为Cassandra

9月数据库排名出来啦!why哥带你看看数据库到底哪家强!

戏子无情 提交于 2020-11-21 05:26:21
来源: 华章计算机(hzbook_jsj) DB-Engines 最近发布 了 2020 年 9 月份的数据库排名。该网站根据数据库管理系统的受欢迎程度对其进行排名, 实时统计了 35 8种数据库的排名指数 。前 10 名的排行情况详见下图: 1-10排名情况 在国产数据库异军突起的现在,Oracle、 MySQL 、 Microsoft SQL Server 前三的宝座短时间内怕是无可超越。 PostgreSQL 也稳居第四名,它包括了可以说是目前世界上最丰富的数据类型的支持,还是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 推荐语: 《MySQL技术内幕:InnoDB存储引擎(原书第2版) 》 资深MySQL专家撰写,全球知名 MySQL 数据库服务提供商 Percona 公司 CTO 作序推荐,国内多位数据库专家联袂推荐。 推荐语: 《数据库高效优化》 本书以大量案例为依托,系统讲解了SQL语句优化的原理、方法及技术要点,尤为注重实践 , 在章节中引入了大量的案例,便于学习者实践、测试,反复揣摩。 推荐语: 《 PostgreSQL修炼之道:从小工到专家 》 P ostgreSQL中国社区资深数据库专家、沃趣科技首席数据库架构师撰写,

docker安装kong和kong-dashboard

无人久伴 提交于 2020-11-20 03:59:22
1:docker安装遵循官方手册 2:安装kong 参考文档:https://getkong.org/install/docker/ 安装过程基本和文档一致,文档十分简单清晰。 但应注意,为了最新版kong-dashboard,使用的kong镜像为 0.12版本。 否则kong-dashboard不支持。 注意:本文档使用postgres数据库 2.1 安装postgres docker run -d --name kong-database -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" postgres 2.2 docker run --rm --link kong-database:kong-database -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" kong: 0.12 kong migrations up 如果使用的cassandra,KONG_DATABASE属性对应修改为cassandra就可以了。 2.3 docker run -d --name kong \ --link kong-database:kong