Update Hbase Java API.md

This commit is contained in:
heibaiying 2019-04-10 17:49:31 +08:00 committed by GitHub
parent 712aea8c00
commit e0138866dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -678,7 +678,7 @@ public class HBaseUtils {
## 四、正确连接Hbase ## 四、正确连接Hbase
在上面的代码中在类加载时候就初始化了Connection连接并且之后的方法都是复用这个Connection这时我们可能会考虑是否可以使用义连接池来获取更好的性能表现实际上这是没有必要的。 在上面的代码中在类加载时候就初始化了Connection连接并且之后的方法都是复用这个Connection这时我们可能会考虑是否可以使用自定义连接池来获取更好的性能表现?实际上这是没有必要的。
首先官方对于`Connection Pooling`做了如下表述: 首先官方对于`Connection Pooling`做了如下表述:
@ -688,7 +688,7 @@ access (e.g., web-servers or application servers that may serve many
application threads in a single JVM), you can pre-create a Connection, application threads in a single JVM), you can pre-create a Connection,
as shown in the following example: as shown in the following example:
#对于高并发多线程访问的应用程序例如在单个JVM中存在的为多个线程服务的Web服务器或应用程序服务器 对于高并发多线程访问的应用程序例如在单个JVM中存在的为多个线程服务的Web服务器或应用程序服务器
您只需要预先创建一个Connection。例子如下 您只需要预先创建一个Connection。例子如下
``` ```
@ -709,7 +709,7 @@ connection to zookeeper. Connections are instantiated through the ConnectionFac
The lifecycle of the connection is managed by the caller, who has to close() the connection The lifecycle of the connection is managed by the caller, who has to close() the connection
to release the resources. to release the resources.
# Connection是一个集群连接封装了与多台服务器Matser/Region Server的底层连接以及与zookeeper的连接。 Connection是一个集群连接封装了与多台服务器Matser/Region Server的底层连接以及与zookeeper的连接。
连接通过ConnectionFactory 类实例化。连接的生命周期由调用者管理调用者必须使用close()关闭连接以释放资源。 连接通过ConnectionFactory 类实例化。连接的生命周期由调用者管理调用者必须使用close()关闭连接以释放资源。
``` ```
@ -754,7 +754,7 @@ connection = ConnectionFactory.createConnection(config);
从以上的表述中可以看出HBase中Connection类已经实现了对连接的管理功能所以我们不需要自己在Connection之上再做额外的管理。 从以上的表述中可以看出HBase中Connection类已经实现了对连接的管理功能所以我们不需要自己在Connection之上再做额外的管理。
另外Connection是线程安全的而Table和Admin则不是线程安全的因此正确的做法是一个进程共用一个Connection对象而在不同的线程中使用单独的Table和Admin对象,且Table和Admin的获取`getTable()``getAdmin()`都是轻量级的操作,所以不必担心性能的消耗,使用完成后建议显示的调用`close()`方法关闭它们。 另外Connection是线程安全的但Table和Admin却不是线程安全的因此正确的做法是一个进程共用一个Connection对象而在不同的线程中使用单独的Table和Admin对象Table和Admin的获取`getTable()``getAdmin()`都是轻量级的操作,所以不必担心性能的消耗,同时使用完成后建议显示的调用`close()`方法关闭它们。