基于后台缓存的访问处理方法及适配器的制造方法_2

文档序号:9870375阅读:来源:国知局
的读写加锁;
[0053 ]步骤1012:适配器与当前IP连接数最小的机器连接,获得结果;
[0054]步骤1013:控制块将IP连接数最小机器的数据块解锁,并将IP连接数减I;
[0055]步骤1014:适配器将获得的结果返回给前台系统,流程结束。
[0056]其中,在步骤1012中还会出现超时的情况,如果超时仍未收到结果,则适配器依然执行步骤1013,并在步骤1014中将超时消息返回给前台系统。
[0057]具体的,本发明实施例的访问方法还可以通过图2所示的流程实现,具体如下:
[0058]步骤201:前台系统通过协议商定的格式,将访问请求按一定策略分组,每个分组对应一组主机IP地址和一组备机IP地址,并将每个访问请求与其对应的主机IP地址和备机IP地址拼成请求串,发送给适配器,适配器接收所述请求串,解析请求串,分解出主机IP地址组和备机IP地址组;
[0059]步骤202:适配器通过前台系统提供的计算系统中机器的IP地址,查询这些地址是否都在共享内存中;
[0060]其中,通过配置的系统共享内存键值(ipckey)查找具体的共享内存(sharememory)所在位置,去内存中读取对应的结构化数据。
[0061 ] 步骤203:如果不是都存在共享内存中,进入步骤204;否则,直接进入步骤208;
[0062]步骤204:共享内存的控制块对其所有数据块的读写加锁,防止多进程间写数据操作冲关;
[0063]其中,控制块为共享内存中的数据,多个进程间通过加锁机制防止写数据操作冲关O
[0064]步骤205:重新遍历共享内存中的IP地址列表,查看在加锁后是否有地址仍未在共享内存中初始化。如果是,则继续步骤207;否则继续步骤206;
[0065]步骤206:将未在共享内存中的IP地址添加到共享内存中。
[0066]步骤207:更新控制块的IP地址数,控制块对所有数据块的读写解锁;
[0067]其中,在步骤206-207中,控制块中需要记录已有的IP地址总数即IP地址数,并建立每个IP地址的索引。
[0068]步骤208:适配器查看监控程序提供的主备信息,确定当前仅访问计算系统的主机系统,还是访问计算系统的主机系统和计算系统的备机系统;
[0069]其中,使用监控程序对计算系统主机系统进行监控,查看计算系统主机系统是否正常。在共享内存中设置相应值,标明适配器该使用主机系统还是主机系统和备机系统。
[0070]步骤209:访问共享内存,找到主(备)机IP地址列表中IP连接数最小的机器。
[0071]其中,通过共享内存查找主机(备机)IP地址列表中IP连接数最小的。具体方式为:通过ipckey找到控制块存在的内存地址,对内存地址进行格式化,用IP地址作为key,循环找到每个IP对应的连接数。请求数为每次请求计算系统的一个IP地址,将该地址的IP连接数加I,得到结果(超时)后将IP连接数减I。
[0072]其中,如果当前使用的是主机,就找主机的IP连接数最小机器,如果当前使用的是备机找备机的IP连接数最小机器。
[0073]步骤210:控制块将IP连接数最小机器的访问数(即IP连接数)加I,并将其数据块的读与加锁;
[0074]步骤211:适配器与后台的计算系统中连接数最小的机器建立连接,发送请求,得到结果或者超时,控制块将IP连接数最小机器的数据块的读写解锁,并将其将访问数(即IP连接数)减I;
[0075]其中,在步骤十一中,适配器对最后选定的计算系统机器发出请求,并获得结果,将结果返回主进程。
[0076]步骤212:将得到的结果信息或超时信息返回到前台系统。
[0077]本发明实施例采用了共享内存技术、控制锁技术等,适配器和监控程序都可以采用C++开发,不再赘述。
[0078]如图3,本发明实施例访问处理方法还可以通过如下的流程来实现,具体过程如下:
[0079]步骤301:前台通过协议商定的格式,将访问请求按一定策略分组,对每个分组对应一组主机IP地址和一组备机IP地址拼成请求串发送给计算系统适配器。
[0080]其中,前台的访问请求可以通过一定的键值策略将请求进行拆分,根据该策略将拆分开的每组请求对应特定键值,通过键值预先配置好对应的n(n为不小于I的整数)台主机机器和m(m为不小于I的整数)台备机机器,将每组请求同对应的IP地址(主/备)发送到适配器。
[0081]由于涉及到进程间发送数据,前台系统和适配器会部署在同一套环境服务下。本发明实施例采用tuxedo方式部署,前台系统会根据上述原则对请求拆分,分为多个请求,通过tuxedo的tpcal I (tpacal I)方式发送给适配器,多个适配器都会接收到相应的请求,再对请求中的地址解析,这里就涉及到了两者之间的传输协议。
[0082]由于IP地址可以是多个,还有主备关系,即不定长,通常做法是使用标示符或者是标记字节长度。例如,如果使用的是标示符进行区分,可以使用标示符I分割主IP和备IP的实际请求,使用标示符2分割主(备)IP地址列表之间的每个IP地址。
[0083]步骤302:适配器通过提供的计算系统IP地址,查看这些地址是否都在共享内存中。
[0084]具体地,使用share memory存储结构化数据,在I inux下通过ipckey将内存地址和固定的数据做对应,再结构化相应的数据,对数据查找对应IP信息。
[0085]步骤303:如果不是都存在共享内存,通过步骤304到步骤307初始化,如果已存在,直接进入步骤308。
[0086]步骤304:共享内存的控制块对其所有数据块加锁;
[0087]实际应用中,直接操作共享内存中数据,对该数据加解锁,防止在之后对IP数据读写时发生冲突。
[0088]实际应用中,服务启动时创建共享内存共享内存主要分为两部分:控制块和数据块,控制块用于锁住或解开数据块的读写,每个数据块用于存储一个机器相关的信息。一个控制块可以同时管理多个数据块,一个数据块对应计算系统的一个机器。
[0089]其中,控制块可以包括如下信息:当前的后台状态、共享内存中保存的机器数量、IP地址数以及为每个IP建立的索引。其中,当前的后台状态(status)取值为P或A,P表示只访问主机计算系统,不访问备机计算系统,A表示可以访问主机计算系统及备机计算系统。共享内存中保存的机器数量记录为serverNo。
[0090]其中,每个数据块存储的是一个机器相关的所有信息,一个数据块可以包含一个机器的1?(8;^3561^61']^[16])、机器的端口(port)、机器的IP连接数(connNums)等信息。
[0091]步骤305:重新遍历共享内存中的IP地址列表查看在加锁后是否有地址仍未在共享内存中初始化。如果是,则继续步骤307;否则继续步骤306;
[0092]具体地,再次读取共享内存中的IP地址信息,防止在加锁前到加锁的过程中该内存的数据被其他进程修改,造成问题。如果再次读取发现该IP地址信息依然没有,再向该结构化数据中写入该IP地址信息,并初始化相应的数据。最后更新整体的IP结构索引,再次将整个结构写回到共享内存中。
[0093]步骤306:将未在共享内存中的IP地址添加到共享内存中。
[0094]步骤307:更新控制块中IP地址数,控制块解锁所有数据块。
[0095]步骤308:查看监控程序提供的主备信息,确定当前仅访问计算系统的主机系统,还是访问计算系统的主机系统和计算系统的备机系统。
[0096]这里,监控程序用于接收监控消息,进行相关操作。如果监控系统发现计算系统生产资源紧张超过设定的阈值,则更新共享内存状态为A;如果计算系统主机系统恢复消息,则更新共享内存状态为P。
[0097]步骤309:访问共享内存,找到主(备)机器IP地址列表中IP连接数最小的机器。
[0098]步骤310:控制块将IP连接数最小机器的访问数加I,并将其数据块的读写加锁;
[0099]步骤311:适配器与IP连接数最小的机器建立连接,发送请求给计算系统,得到计算系统返回的结果或者得到超时信息,控制块将IP连接数最小机器的数据块解锁,并将其访问数减I。
[0100]步骤312:将结果信息(超时信息)返回到前台系统。
[0101]在本发明实施例中,通过前台系统、用于访问处理的适配器以及后台计算机系统这三个部分的协同工作处理访问请求。前台系统在调用后台计算系统时,利用共享内存、计数器、控制锁等技术实现对计算系统访问的负载均衡,达到对计算系统的压力减小、主备切换及高缓存命中率。本发明实施例利用的共享内存技术,定时监控后台系统,对访问系统计数加锁等方式,对计算系统按一定策略访问,加大计算系统的缓存命中率,并在一定程度上负载均衡。
[0102]如图4,本发明实施例还提供了一种适配器,用于实现上述的访问处理方法,该适配器包括如下部分:
[0103]接收模块41,用于接收前台系统发送的请求串,所述请求串由访问请求分组及其对应的主机IP地址和备机
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1