背景:

  在项目启动的选用了Memcached 作为缓存服务器,采用了Xmemcached作为客户端。在项目中使用了Shiro,为了给 Shiro 配置缓存的时候,采用了开源代码   https://github.com/mythfish/shiro-memcached 来实现 缓存服务器实现类。其他与项目自适应的修改,皆在当前类的基础上。

此后,Memcached 升级为了 CouchBase,本项目环境需与此对接。

环境:

  1、随着数据的增多,为了访问速度的更快,采用缓存服务器来缓解数据库的压力,目前项目采用的是 memcached 缓存服务器

  2、memcached的java 客户端有多种形式,目前采用 Xmemcached

  3、目前项目的框架是 Spring+SpringMVC+MyBatis+Shiro ,需要将 Xmemcached 与这些对应的技术结合起来

  4、Xmemcached 与 Spring的结合,参考:

  https://github.com/ragnor/simple-spring-memcached

  5、Shiro 与 Spring的结合,参考:

   https://github.com/mythfish/shiro-memcached

  6、memcached 升级为新的版本 Couchbase

   关于Couchbase的介绍与安装:http://developer.couchbase.com/documentation/server/4.5/getting-started/installing.html

    也可参考 我的另一篇博客  Couchbase的安装步骤

  7、由于Couchbase 是整合了 Membase、Memcached和CouchDB ,未改变其根本性功能,故 在其发挥与Memcached相同的功能的时候,可以就采用原有的Memcached 的使用方法!

  8、Couchbase 安装后,http://localhost:8091 是web 控制台访问路径。11211 是Memcached 访问端口,8091 是管理和操作端口,其他几个是用于管理和集群通讯的。

对比知识要点:

  由于我的环境使然,我只会去关注 couchbase 中与缓存相关的功能。

  先理解一下 Couchbase Server的结构。集群、Couchbase Server(在集群中每一个Couchbase是一个Node)

  

Cluster
一个cluster是一个包含一个或多个Couchbase Server实例而且作为一个逻辑上的cluster设置的集群。所有cluster内的node都是相同的,提供相同的功能。每个节点都可以管理cluster并提供其统计数据和操作信息。用户数据通过vBucket系统存储在整个cluster之中。

Couchbase Server 或 Node
一个在机器上运行着的Couchbase Server实例,无论是实体机器、虚拟机器、EC2或者其它环境。
所有Couchbase Server实例都是相同的,提供相同功能、接口和系统,包含相同的组成部件。

Couchbase Server使用buckets来提供数据管理服务。buckets是为数据准备的互相隔离的虚拟容器。一个bucket就是一个cluster内物理资源的一个逻辑上的分组,可以通过cluster被多个客户使用。Buckets提供了一种安全的组织、管理和分析数据资源的机制。

Couchbase Server中有两类bucket: 1) memcached buckets,以及 2) couchbase buckets.这两种bucket让你可以选择仅把数据缓存在内存里,还是既缓存在内存里也为了持久性同步到硬盘上。

有三种可以设置的bucket接口:
The default Bucket
  默认的default bucket是Couchbase 类型的bucket,预留11211端口且不需要SASL认证。当Couchbase Server安装成功时default bucket也自动安装了。这个bucket也可以在安装后卸载,如果需要再次添加,只需要在11211端口上以default为名称添加一个non-SASL类型的bucket即可。default bucket可以通过一个识别vBucket的智能客户端、一个ASCII客户端或者是不使用SASL认证的二进制客户端访问。
Non-SASL Buckets
  名称不是“default”的Non-SASL buckets 应该在除了11211以外的端口设置。一个端口上只能安排一个Non-SASL bucket。此类bucket可以通过一个识别vBucket的智能客户端、一个ASCII客户端或者是不使用SASL认证的二进制客户端访问。
SASL Buckets
  SASL认证的Couchbase类型buckets只能设置在11211端口,不同bucket通过名称和密码区别。SASL bucket不应该在11211以外的端口设置。此类buckets可以通过识别vBucket的智能客户端或支持SASL认证的二进制客户端访问,不可通过ASCII客户端访问。

与实际结合:

  安装完 CouchBase 后,登录 http://localhost:8091/  Couchbase的管理窗口,可以查看一下 各个页面,页面上都会有与上述概念相关的配置。

参考博客:Couchbase2.2使用手册(一)——介绍

由Memcached升级到 Couchbase的 Java 客户端的过程记录(一)的更多相关文章

  1. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(二)

    Shiro提供了类似于Spring的Cache抽象,即Shiro本身不实现Cache,但是对Cache进行了又抽象,方便更换不同的底层Cache实现. shiro对缓存的支持 shiro并没有实现缓存 ...

  2. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)

    采用之前的源码运行后,我们发现 只有一个配置信息 即servers=127.0.0.1:11211,即 Couchbase Server的服务所在ip 和端口,此时数据直接存在 default 中 根 ...

  3. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

  4. (转)Memcached 在windows下的java使用

    Memcached 在windows下的java使用   研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...

  5. JAVA客户端API调用memcached两种方式

    1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...

  6. Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用

     介绍 Memcached java client是官方推荐的最早的memcached java客户端.最新版本:java_memcached-release_2.6.1. 官方下载地址:http ...

  7. 缓存系统MemCached的Java客户端优化历程

    Memcached 是什么? Memcached是一种集中式Cache,支持分布式横向扩展.这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端 ...

  8. 转: memcached Java客户端spymemcached的一致性Hash算法

    转自:http://colobu.com/2015/04/13/consistent-hash-algorithm-in-java-memcached-client/ memcached Java客户 ...

  9. Memcached的几种Java客户端(待实践)

    其实现在来尝试Memcached的客户端估计会有点过气,因为现在大势基本都在Redis那边. Memcached Client目前有3种: Memcached Client for Java(已经停止 ...

随机推荐

  1. JavaScript单元测试框架JsUnit基本介绍和使用

    JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...

  2. Watir-WebDriver关于交互式等待方法,告别一味sleep时代

    有交互就有等待,等待页面加载完毕的时间怎么处理呢? 有人说sleep: sleep N #等待N秒后继续执行 怎么才能告别毫无意义的命令呢? 接下来介绍一下Watir-Webdriver为我们提供等待 ...

  3. python-list tuple dict set

    1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...

  4. TeamCity实战(1):准备工作

    环境: Windows Server 2008 R2 SP1(不会再有SP2,参考这里:http://www.techspot.com/news/50599-microsoft-wont-releas ...

  5. 下一代Asp.net开发规范OWIN(3)—— Middleware

    Middleware是OWIN管道的基本组成单元,最后拼接的OWIN管道来处理客户端请求,输出网页.这篇文章,首先看看Web Form, MVC, Web API如何结合OWIN使用. 然后将如何编写 ...

  6. SQL Server自动化运维系列——批量执行SQL脚本(Power Shell)

    需求描述 一般在生产环境中,在投产的情况下,需要批量的来执行SQL脚本文件,来完成整个投产,如果投产文件比较多的情况下,无疑这是一个比较痛苦的过程,所以本篇通过PowerShell脚本来批量完成. 监 ...

  7. MySQL性能优化——索引

    原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html InnoDB使用B+Tree作为索引结构 最左前缀原理与相关优化 ...

  8. Centos 安装jdk1.8

    我是根据右边链接进行安装的 ,但是第一步不同噢.http://www.cnblogs.com/spiders/archive/2016/09/06/5845727.html 1.下载rpm安装文件. ...

  9. nodejs缓冲模块buffer相关资料

    buffer模块的详细使用教程 浅析nodejs的buffer类 深入浅出NodeJS--Buffer Node Buffer/Stream 内存策略分析

  10. Python实用环境pyenv搭建教程

    实验系统:kubuntu-15.10-desktop-amd64 关于pyenv的介绍:一般在操作系统中我们会安装多个Python版本,在*nix系统中一般默认就自带了Python2与Python3两 ...