DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和cassandra节点之间的消息.目前支持2种压缩算法:LZ4和SNAPPY.默认为NONE,即不压缩.可以调用Cluster.Bilduer.withCompression()操作来覆盖这个设置.认证和加密驱动可插拔实现com.datastax.driver.core.AuthProvider.比…
分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处理,Stage间使用事件驱动的异步通信模式.更进一步,在每个Stage中可以动态配置自己的线程数,在超载时降级运行(如输出纯文字页面)或拒绝服务.(参考百度百科)一般一些工作单元会在一个线程池中完成.不过cassandra使用SEDA,所以一个操作可能在一个线程池开始,然后把工作移交给别的线程池.移…
认证和授权driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.密码认证器cassandra还支持自定义,可插拔的认证机制.默认的认证器:org.apache.cassandra.auth.AllowAllAuthenticator密码认证:org.apache.cassandra.auth.PasswordAuthenticator配置在cassandra.yaml 的authenticator,cassandra 2.2及以后的版本,…
cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms可以查看特定表的性能. 利用tracing去跟踪某个特定表和相关查询.可以知道每个查询涉及的客户端和节点之间的通信和每一步的时间.设置tracing,可以使用cqlsh设置 TRACING ON,然后查询,再TRACING OFF.也可以通过驱动去查询tracing的结果.nodetool setr…
cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extensions,JMX.JMX是java API,主要采用两种方式管理.首先利用JMX可以从内存,线程池和CPU等java应用通用的一些方面了解健康状况.其次,利用JMX可以分析应用中的监测的特定方面.监测是指在应用代码外加一个包装器,从应用向JVM提供hook(钩子),使JVM能够收集数据供外部工具使用.包括…
写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定写在协调节点,一般是写在下线节点的某个非副本的邻居节点.写一致性ANY:写hint也算成功ONE:写hint和memtable才算成功. 协调节点会根据keyspace的副本数确定哪些是副本节点,如果副本节点不够满足一致性级别,直接报错.多DC时,客户端发请求到协调节点,协调节点同时会转发请求到所有…
配置集群时,要求所有节点的集群名,分区器,snitch必须相同.种子节点最好相同. 种子节点:最好每个DC,配置2个,这样即使一个DC中一个种子节点挂了,仍然有一个中子节点可用.种子节点被认为是最先加入集群的,不会做数据迁移.其他节点都会优先连接种子节点加入集群.允许指定种子节点的实现,默认:org.apache.cassandra.locator.SeedProvider,这会从yaml文件中加载种子节点.分区器:指定分区键如何排序.Murmur3Partitioner,默认分区器,org.a…
环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一个hash来计算分区键落到哪个token中,进而决定分配到哪个节点.org.apache.cassandra.dht.Range类.虚拟节点(vnode),1.2版本引入,2.0默认开启.一个token就是对应一个vnode.将环分解为虚拟节点数的分段,可以让数据分布更均匀,在扩容,缩容,修复都会更…
结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gossip协议.允许各个节点跟踪其他节点的状态信息. cassandra gossip详情可以参考: https://blog.csdn.net/weixin_38916872/article/details/81334014 https://zhaoyanblog.com/archives/1017.html…
没有join操作.有轻量级事务和批处理,但是没有外键等.反规范化.3.0支持物化视图,允许在一个表上创建数据的多个物化视图.使用cassandra要从查询入手,而不是先从数据模型开始.先对查询建模,然后根据查询来组织数据,然后再构建表结构.cassandra建表要考虑磁盘怎么存储数据,也就是要求要保证相关的列定义在同一个表中,不像RDBMS去关联查询.尽可能搜索最小的分区去满足一个给定的查询.搜索单个分区往往会得到最优的性能.排序需要提前设计,根据集群键排序.只能是和设计排序一样,或者完全相反.…
cassandra使用一个特殊主键(复合键)表示宽行,宽行也叫分区.复合键由一个分区键和一组可选的集群列组成.分区键用于确定存储行的节点,分区键也可以包含多个列.集群键用于控制数据如何排序以及在分区中如何存储.cassandra还支持静态列,这些列用于存储不属于主键但是由一个分区中的所有行共享的那些数据.主键=分区键(用来确定分区)+集群键(确定一条记录在分区的位置) 集群-->keyspace-->表-->列可以只查询,更新部分列.不像关系型,不是定义的所有列都会占空间,如果这一列没有…
cassandra是一个开源的.分布式.去中心化.弹性可扩展.高可用.容错.可调一致性.面向行数据库,分布式设计基于Amazon Dynamo,数据模型基于Google BigTable.cassandra由facebook创建.AP数据库去中心化,P2P(peer to peer,对等网络)协议,使用Gossip来维护和同步一个存活或者死亡列表.弹性可扩展,水平扩展简单,自动数据迁移,几乎不影响现有访问.高可用.容错:不存在单点故障问题.扩容缩容更简单.防灾,天然支持多AZ(area zone…
数据库事务正确执行的四个基本要素事务要有四个基本要素:ACID:原子性(Atomic).一致性(Consistent).隔离性(Isolated).持久性(Durable)原子性(Atomic):整个事务中的如果有多个操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节.执行失败则回滚.一致性(Consistent):如果事务并发多个,系统也必须如同串行事务一样操作.单机就保证多表级联操作等等,得保证两个表都同时修改.事务前后的操作得一致.事务执行完得和预期一致.隔离性(Isolated…
HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读一遍之后,会对HTTP有个总体认识.然后你可以根据文章中的关键点,去查找更详细的细节.这就是读书的第二重境界,将书读厚. HTTP(hypertext transfer protocol,超文本传输协议)是万维网进行通信时所使用的协议方案.HTTP有很多应用,但最著名的是用于Web浏览器和Web服务…
web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典的性能优 化最佳实践,是其他数十条性能准则的出发点. 减少DNS查找 每一次主机名解析都需要一次网络往返,从而增加请求的延迟时间,同时还会阻 塞后续请求. 重用TCP连接 尽可能使用持久连接,以消除 TCP 握手和慢启动延迟;参见 2.2.2 节“慢启动”. 减少HTTP重定向 HTTP 重定向极费…
今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[class="one"][name="two"] class属性为one且name属性为two的p元素p[class~="one"] class属性包含one的p元素p[class^="one"] class属性以one开头p[clas…
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮动时,其他内容会环绕该元素.浮动元素会生成一个块级框,不论这个元素本身是什么.并且浮动元素周围的外边距不会合并.如果要浮动一个非替换元素,必须显式声明width. 浮动元素的几条规则: 1)      浮动元素的左(右)外边界不能超出其包含块(包含快是其最近的块级祖先元素)的左(右)边界.但是负外边距或者浮动…
集中讨论以下3 个有意思的话题 :• Kafka 如何进行复制:• Kafka 如何处理来自生产者和消费者的请求 :• Kafka 的存储细节,比如文件格式和索引. 集群成员关系 Kafka 使用 Zoo keeper 来维护集群成员的信息.每个 broker 都有一个唯一标识符,这个标识符可以在配置文件里指定 ,也可以自动生成.在 broker 启动的时候,它通过创建临时节点把自己的ID注册到 Zookeeper.Kafka 组件订阅 Zookeeper 的/brokers/ids 路径(br…
KafkaConsumer概念 消费者和消费者群组 Kafka 消费者从属于消费者群组.一个群组里的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息. 往群组里增加消费者是横向伸缩消费能力的主要方式. 我们有必要为主题创建大量的分区,在负载增长时可以加入更多的消费者.不要让消费者的数量超过主题分区的数量,多余的消费者只会被闲置.  除了通过增加消费者来横向伸缩单个应用程序外,还经常出现多个应用程序从同一个主题读取数据的情况. Kafka 设计的主要目标之一 ,就是要让 Kafka 主…
不管是把 Kafka 作为消息队列.消息总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个从 Kafka 读取数据的消费者,或者一个兼具两种角色的应用程序. 开发者们可以使用 Kafka 内置的客户端 API 开发 Kafka 应用程序. 我们将从 Kafra 生产者的设计和组件讲起,学习如何使用 Kafka 生产者.内容包括: 如何创建 KafkaProducer 和 ProducerRecords 对象.如何将记录发送给 Kafka: 如何处理从 Kafk…
发布与订阅消息系统 数据(消息)的发送者(发布者)不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点.发布者以某种方式对消息进行分类,接收者(订阅者)订阅它们, 以便接收特定类型的消息.发布与订阅系统一般会有一个 broker,也就是发布消息的中心点. Kafka 登场 在0.10版本之前, Kafka仅仅作为一个消息系统,主要用来解决应用解决. 异步消息 . 流量削峰等问题. 不过在0.10版本之后, Kafka提供了连接器与流处理的能力,它也从分布式的消息系统逐渐成为一个流式的数据…
一.HTTP概述 1.WEB客户端和服务器. 2.资源:资源可以是各种格式的静态文件,也可以是应用程序. 3.媒体类型 4.URI:统一资源标识符 URL:统一资源定位符. URL的第一部分称为方案:说明访问资源所使用的协议类型.通常就是HTTP协议. URL的第二部分给出了服务器的因特网地址. 其他部分指定了服务器上的资源路径.目前,几乎所有的URI都是URL. URN:统一资源名. 5.事物:由客户端的请求命令和服务器的响应结果组成. 6.连接:基于TCP/IP协议. 7.代理 8.缓存 9…
本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系统. MapReduce:分布式数据处理模型和执行环境,执行于大型商业集群. HDFS:分布式文件系统,执行于大型商用机集群. Pig:一种数据流语言和执行环境,用以检索很大的数据集. Pig执行在MapReduce和HDFS的集群上. Hive:一个分布式.按列存储的数据仓库.Hive管理HDFS…
第十七章 事件处理 1 客户端JS程序采用了异步事件驱动编程模型. 2 关于事件的重要定义     a 事件类型(event type)     b 事件目标(event target) target === srcElement(IE8及之前版本)     c 事件处理程序(event handler ) 当对象上注册的事件处理程序被调用时,可以说浏览器触发(fire trigger)和派发(dispatch)了事件:     d 事件对象(event object)     e 事件传播(e…
第十五章 脚本化文档   1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子类型. 3 getElementsByNames() 定义在HTMLDocument类中,而不是Document(文档可能代表HTML也可能代表XML) 类中,所以只针对HTML文档可用. 4 由于历史原因,HTMLDocument类定义了一些快捷属性来访问各种各样的节点.例如:images.for…
第十三章 Web浏览器中的JavaScript 1 在Html文档中嵌入客户端4种JS代码方法     a 内联方式,放置在<script>标签之间     b 放置在<script>标签 src 属性指定的外部文件中     c 放置在HTML事件处理程序中     d 放置在URL中,"javascript:" 协议 2 在XHTML中,script标签中内容将被当做其他内容,如果JS代码包含了"<" 或 "&&q…
第十章 正则表达式 1 正则表达式直接量定义为包含在一对斜杠(/)之间的字符     a /s$/ == new RegExp("s$") 2 直接量字符:所有字母和数字都是按照字面含义进行匹配的,非字母的字符需要通过反斜线(\)作为前缀进行转义. 3 字符类:将直接量字符单独放进方括号内就组成了字符类.一个字符类可以匹配它所包含的任意字符. 转义符\b 具有特殊含义,当用在字符类中,它表示退格符,所以一个元素的字符类[\b]表示一个退格符. 4 重复 5 在待匹配的字符后跟随一个问号…
一.JavaScript核心语法 1.字符串中接受RegExp参数的方法 (1)text.search(pattern)返回首次匹配成功的位置 (2)text.match(pattern)返回匹配组成的数组 (3)text.replace(pattern, '#')返回新字符串 (4)text.split(pattern) 2.字符串不是对象为什么会有属性? 只要引用了字符串的属性,JavaScript就会将字符串值通过String()构造函数创建临时对象(包装对象),这个对象继承了字符串的方法…
1.HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案,HTTP是应用层协议,无需关心网络通信的细节,细节交给了传输层协议TCP/IP,HTTP协议位于TCP的上层,HTTP使用TCP来传输其报文数据 2.在客户端向服务器发送报文前,需要用网际协议(Internet Protocol, IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接,所以需要知道服务器的IP地址及在服务器上运行的特定软件相关的TCP端口号.所以…
JavaScript 1.变量 变量是一个表示值的符号,是一个名字,他的本质是值: var x; //----声明一个变量: 值通过等号“=”赋给变量,x = 16; 对象是名/值对的集合,或字符串到值映射的集合: var book = { //对象用花括号包起来 topic:"JavaScript", //属性topic的值是JavaScript,多个名/值对用逗号分隔: fat:true //属性fat的值是true; }; //分号表示定义变量结束: 通过"."…