Ver Fonte

调整中间件目录、整理Hbase

wenwan há 8 anos atrás
pai
commit
f52b5f9f57
3 ficheiros alterados com 136 adições e 25 exclusões
  1. 33 15
      README.md
  2. 96 0
      middle-software/Hbase.md
  3. 7 10
      system-architecture/架构经验.md

+ 33 - 15
README.md

@@ -28,7 +28,7 @@
 * 	[id生成器](data-base/id生成器.md)
 * 	[mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围](data-base/bigint类型.md)
 * 	[DAO层接口性能监控](data-base/DAO层接口性能监控.md)
-* 	读写分离
+* 	[读写分离](http://blog.csdn.net/itomge/article/details/6909240)
 
 ### web容器/协议/网络
 
@@ -39,20 +39,6 @@
 * [CDN](system-architecture/CDN.md)
 
 
-### 中间件
-
-* [dubbo](middle-software/dubbo.md)
-* [kafka](middle-software/kafka.md)
-* [redis](open-source-framework/redis.md)
-* [zookeeper](middle-software/zookeeper.md)
-* [cobar](http://hualong.iteye.com/blog/2102798)
-* [Elasticsearch](middle-software/elasticsearch.md)
-* Storm
-* Hbase
-* [ActiveMQ](https://github.com/apache/activemq)
-
-
-
 ### 常用三方工具包
 
 * [Google Guava](open-source-framework/Goole-Guava.md)
@@ -76,6 +62,38 @@
 * [cache相关](system-architecture/cache相关.md)
 * [分布式锁](system-architecture/分布式锁.md)
 
+### 中间件
+
+*	RPC框架
+	* [dubbo](middle-software/dubbo.md)
+	* [dubbox](https://www.oschina.net/p/dubbox)
+	* [Thrift](https://github.com/apache/thrift)
+
+*   MQ消息
+	* [kafka](middle-software/kafka.md)
+	* [ActiveMQ](https://github.com/apache/activemq)
+	* [RocketMQ](https://github.com/apache/incubator-rocketmq)
+
+*   缓存
+	* [redis](open-source-framework/redis.md)
+	* [memcache](http://blog.csdn.net/itomge/article/details/8035197)
+
+*   搜索
+	* [Elasticsearch](middle-software/elasticsearch.md)
+
+*   分布式数据框架
+	* [cobar](http://hualong.iteye.com/blog/2102798)
+	* [tsharding](https://www.oschina.net/p/TSharding-Client)
+	* [tddl](https://github.com/alibaba/tb_tddl)
+
+*   大数据
+	* [Hbase](middle-software/Hbase.md)
+	* [MogonDB]()
+	* [Storm]()
+	
+*  其它
+	* [zookeeper](middle-software/zookeeper.md)
+	* [FastDFS(分布式文件系统)](https://www.oschina.net/p/fastdfs)
 
 
 ### 运维

+ 96 - 0
middle-software/Hbase.md

@@ -0,0 +1,96 @@
+## Hbase
+
+---
+
+附录:
+
+[Hbase安装](http://blog.csdn.net/itomge/article/details/9970833)
+
+-----
+
+HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性、高性能、高伸缩的分布式存储系统,使用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
+
+HBase最初是以Hadoop子项目的形式进行开发建设,底层依赖于HDFS组件作为其存储系统,直到2010年5月才正式成为Apache的顶级项目独立发展。
+
+##### 传统关系型数据库的特征:
+
+* 数据按行存储
+* 没有索引的查询使用大量的I/O
+* 建立索引和物化视图需要大量的资源
+
+Hbase通过行键(Rowkey)检索数据,仅支持单行事务,单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都很有弹性。
+
+#####  组成部分:
+
+* 客户端client
+
+客户端使用HBase的RPC机制与HMaster和RegionServer进行通信,客户端支持java接口、Thrift、Rest等多种形式
+
+* 协调服务组件ZooKeeper
+
+负责管理HBase中多个HMaster的选举、服务器之间状态同步
+
+* 主节点HMaster
+
+在HBase中可以启动多个HMaster,通过选举机制保证只有一个Master正常运行并提供服务。HMaster主要负责Tabel和Region的管理工作。
+
+```
+管理用户对Table的增、删、改、查操作
+管理RegionServer的负载均衡,调整Region分布
+在Region分裂后,负责新Region的分配
+在RegionServer死机后,负责失效的RegionServer上的Region迁移
+```
+
+* Region节点HRegionServer
+
+负责响应用户的I/O请求,向HDFS文件系统读写数据,是HBase最核心模块。内部管理了一系列HRegion对象,每个Region由多个Hstore组成,每个Hstore对应了Table中的一个列族的存储。可以看出每个列族其实就是一个存储单元,因为最好将共同I/O特性的列放在一个列族中,保证高效读写。
+
+HStore由两部分组成,MemStore和StoreFile。用户写入的数据首先会放入MemStore,当满了后会缓冲成一个StoreFile。
+
+
+##### 使用场景
+
+* 存储大量的数据(PB级别)
+* 写吞吐量大,瞬间写入量很大
+* 优雅数据扩展,动态扩展整个存储系统容量
+* 数据格式无限制,支持半结构化和非结构化的数据
+* 业务场景简单,不需要全部的关系型数据库的特征,如交叉列、交叉表、事务、连接等
+
+##### 操作
+
+* Get
+
+get()方法默认一次取回该行全部列的数据,我们也可以限定只取回某个列族的列的数据,或者进一步限定只取回某些列的数据
+
+* Put
+
+如果RowKey是新的表示插入,否则表示更新
+
+* Scan
+
+与get方法类似,可以指定startRow参数来定义扫描读取HBase表的起始行键,同时可选stopRow参数来限定读取到何处停止。
+
+* Delete
+
+删除数据。与关系型数据库的delete操作不同,HBase的Delete操作可以指定删除某个列族或者某个列,或者指定某个时间戳,删除比这个时间早的数据。
+
+##### RowKey的设计
+
+HBase只能在RowKey上建立索引。非RowKey的访问,只能全表扫描。
+
+RowKey是以字典顺序由小到大的排序。
+
+RowKey尽量散列,可以保证数据都不在一个Region上,从而避免读写的压力集中在个别Region。
+
+RowKey的长度尽量短。
+
+
+
+
+
+
+
+
+
+	
+	

+ 7 - 10
system-architecture/架构经验.md

@@ -2,6 +2,13 @@
 
 ---
 
+#### 目录
+
+*	[技术不应成为业务的工具](https://app.yinxiang.com/Home.action#n=376d7f6d-22a8-4092-a340-4a7d62d8baa9&ses=4&sh=2&sds=5&)
+*	[系统性能优化常用手段](http://blog.csdn.net/itomge/article/details/21649489)
+*	[web性能优化14法则](http://blog.csdn.net/itomge/article/details/8712102)
+
+----
 **CPU运算速度>>>>>内存的读写速度>>磁盘读写速度**
 
 **架构其实就是把复杂的问题抽象化、简单化**
@@ -49,14 +56,4 @@
 * 基于易变和不易变。将不易变的代码抽象到一个模块里,比如系统的比较通用的功能。将易变的代码放在另外一个或多个模块里,比如业务逻辑。因为易变的代码经常修改,会很不稳定,分开之后易变代码在修改时候,不会将BUG传染给不变的代码。
 
 
----
-#### 资料
-
-*	[技术不应成为业务的工具](https://app.yinxiang.com/Home.action#n=376d7f6d-22a8-4092-a340-4a7d62d8baa9&ses=4&sh=2&sds=5&)
-
-
-
-
-
-