8. memcached实例的SLA级别得到较大的提升;
3. 系统部署图
图表 1 系统部署<?xml:namespace prefix =" o" ns =" "urn:schemas-microsoft-com:office:office"" />
1. 应用通过索引服务器(主)进行数据Set/Get,不直接对memcached进行访问。
2. 按照上图的部署架构,索引服务器(从)不进行实际Set/Get操作,只是对索引服务器(主)的一份热备。当索引服务器(主)出现异常时,可承担起从责任处理应用应用的请求,而原来已经异常的索引服务器(主)变为从,把对应用产生的影响降至最小。索引服务器(主)出现异常时,通过商城配置中心进行服务路由切换,那么服务器(从)由从变为主,所有的Set/Get请求落在索引服务器(从)上,待主索引应用重新启动,会向集群中指定IP的索引服务请求当前最新的状态信息,这些信息包括:memcached服务列表信息,索引数据的全量信息。
3. 可在这种拓扑结构上进行扩充,在索引服务器(从)的基础上,再多加一台索引服务器(组织),组织索引服务也是当前主的索引服务器的一个热备,组织和从的区别在于,组织不会处理任何Set/Get请求,只是专门用来处理索引服务器异常重启时状态信息获取的请求。根据测试500w条索引信息,大概会消耗150mb的内存空间,并且在传递初始信息的时候,机器会出现短时cpu负载偏高的情况,所以最好经由组织为新增结点提供初始化索引数据的服务。
4. 系统结构
索引服务使用网络接入自主开发的java nio 框架实现(其本原理和MINA框架类似),下图给出索引服务的系统结构。
图表 2 作为主机角色的索引服务的运行时结构
图表 3 作为备机角色的索引服务的运行时结构
5. 索引数据结构
图表 4 索引数据结构
索引结点数据中有一个version来标识结点数据的版本信息,当索引服务的使用者在试图设置一个版本值低于当前已经存在高版本结点数据值,索引服务将拒绝给予处理,并记录日志,定时将错误总数至itil。
文章TAG: