[原创]HandlerSocket系列(二):架构、特点及其

电脑杂谈  发布时间:2017-03-10 04:00:52  来源:网络整理

上文介绍了为什么会产生HandlerSocket,是什么需求驱动这个产品产生的。本文主要从整体架构上做一些介绍,包括对它的一些主要优缺点和具体的应用场景。

一、HandlerSocket整体架构

HandlerSocket设计为MySQL的一个plugin,作为mysqld进程的daemon存在,与Client通过TCP/IP交互,进行CRUD相关的操作。基于此原因,不仅可以通过HandlerSocket操作存储层,还可以通过传统的MySQL的方式来操作。这样就可以实现:简单快速的操作通过HandlerSocket来实现,而对于一些复杂的操作,还是通过传统的MySQL方式来实现。

HandlerSocket的如下(图片来自作者Blog):

这里分两条主线来分析上图:

1. MySQL Client -> MySQL Upper Layer -> Storage Engine Layer

这是传统的使用MySQL的方式,MySQL客户端通过3306端口与Upper层交互,在Upper层做SQL解析、打开表、查询计划优化、关闭表等操作,然后提交到Storage层。

2. HandlerSocket Client -> HandlerSocket daemon plugin -> Storage Engine Layer

这是采用HandlerSocket的方式,通过比较MySQL Upper Layer和HandlerSocket daemon plugin,可以明显看出,HandlerSocket减少了很多操作,这正是性能得以提高的最重要的关键点。handlersocket这里使用的是9998和9999两个端口,9998作为读的端口,不能做写入操作,9999为写的端口,可以做读取操作,但是不建议使用,因为在9999端口做读取操作,从性能角度看,比起在9998端口上差一些。

下图更具体的列出了调用关系和结构:

注意目前版本的HandlerSocket暂时只支持Innodb,相信后续版本肯定会支持其他的Storage Engine。

二、HandlerSocket特点

HandlerSocket相比MySQL及其其他的NoSQL产品,具有一些优势:

1. 由于省去了MySQL的SQL层相关的操作,大大的减少了CPU开销。

2. 采用合并操作的方式,合并多个请求同时执行,减少了CPU开销和降低I/O操作次数。关于这个其他的一些NoSQL产品也有这样的机制,比如Mongodb。

3. 由于基于简单的文本协议,能节省不少网络流量,提高网络吞吐量。大部分的NoSQL产品都有这个优势,不少是兼容Memcached协议,当然更多的是采用专有的协议。

4. 能同时使用传统MySQL和HandlerSocket的方式访问MySQL,互相不冲突。这个优势其实挺突出的,是HandlerSocket 的核心竞争力之一。

5. 支持较大的并发连接,可以通过my.cnf的handlersocket_threads来配置连接数。

6. 还可以继续使用MySQL的Master-Slave、Replication等成熟的机制,系统运维与传统的MySQL运维一致。这也是HandlerSocket相比其他NoSQL产品具有的最大的优势。

7. 避免有双重缓存,比如对于Memcached+MySQL的应用来说,在Memcached和MySQL中都存有数据,需要双倍的内存资源,同时也可能会有数据不一致的问题。而采用HandlerSocket则可以避免这样的问题。具体的在接下来的应用场景里介绍。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36767-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...