kbmMW均衡负载与容灾(2)(转载红鱼儿)

集中式均衡负载

为实现集中式均衡负载方案,需要实现两个不同的应用服务器,一个是只包含均衡负载组件再无其他内容的应用服务器,可称之为均衡负载应用服务器,下文简称LB
Server
,另外一个就是包含一个或多个业务逻辑服务(Query Service and Http
Service...)及一个均衡负载服务(Load Balancing
Service)的应用服务器,可称之为业务逻辑应用服务器,简称APP Server。

kbmMW提供了较多的负载均衡组件:

TkbmMWRandomLoadBalancer以随机方式可用的App
Server之间进行选择;
TkbmMWBestFitLoadBalancer以App
Server负载为参考,试图找到一个目前拥有最小负载的App
Server;
TkbmMWRoundRobinLoadBalancer,按App
Server列表依次选择服务器;

第一步,为App Server增加Load Balance
Service,利用向导建立,记住,一路Next,不要输入任务信息,最后建立一个新的Service 单元,为新的Service
Class起个好听点的名子,然后注册到kbmMWServer中,这个过程与建立一个Query Service一样。:

增加了这个服务的App Server,就可以被LB Server检测到了!当然,还要让LB
Server知道这个服务的访问地址,即ConnectionString。

第二步,建立LB Server
这个过程要麻烦点,需要说明的也多一点,让我们先看看建立过程:
1.放一个kbmMWServer,
2.放一个LoadBalancer组件,这里,我们选择kbmMWRoundRobinLoadBalancer,然后,设置kbmMWServer.LoadBalancer=kbmMWRoundRobinLoadBalancer

3.放一个kbmMWHttpSysClientTransport,然后设置LoadBalancer组件的Transport等于他,即:kbmMWRoundRobinLoadBalancer.Transport=kbmMWHttpSysClientTransport

4.再放一个kbmMWHttpSysServerTransport,设置他的Server=kbmMWServer,进一步配置ServerTransport的Host,让客户端知道按这个地址访问

时间: 2024-11-01 07:49:09

kbmMW均衡负载与容灾(2)(转载红鱼儿)的相关文章

kbmMW均衡负载与容灾(3)(转载红鱼儿)

在kbmMW均衡负载与容灾(1)中,介绍了利用ClientTransport的OnReconnect事件,对联接的应用服务器的地址进行更换,做容灾处理.实际上,作者还给我们提供了另外一种机制,直接在ClientTransport中定义可联接服务器及如何切换.具体来说就是三个属性,如下图: 1.FallbackServers:定义可访问的应用服务器的列表:利用Add,每次加一个AppServer地址联接串,即服务地址. 2.AutoFallback:启用FallbackServers地址:如果定义

kbmMW均衡负载与容灾(1)(转载红鱼儿)

kbmMW为均衡负载与容灾提供了很好的机制,支持多种实现方式,现在看看最简单的一种,客户端控制的容灾和简单的负载均衡. 现在,我们将kbmMWServer部署到不同的服务器,或者在同一服务器部署多份实例,这样,我们会有一个服务的访问列表: 192.168.0.88:9000 192.168.0.88:9001 192.168.0.89.9000 192.168.0.89.9001 服务准备好了,现在,改造一下客户端的Transport,就可以实现容灾和负载均衡.具体来说,就是利用ClientTr

数据库"负载均衡,备份,异地容灾"设计

数据库"负载均衡,备份,异地容灾"设计 Author: DigoalPS - 纯属个人看法,仅供参考. 1. 数据对象按分类放到不同的SCHEMA  为了方便实施数据库层面的备份和容灾,必须将数据对象按内容进行逻辑分类设计.  例如:  (某下载系统)    1.tbl_app_info 表 - 存储应用信息,新应用部署时需要插入该表,应用下线时需要更新或删除该表的记录,用户下载时需要查询该表,还有等等一些其他操作;数据增长缓慢,数据量视应用数决定.    2.tbl_download

[转载红鱼儿]kbmmw 开发点滴:There be must at least one field

There be must at least one field 用uniDAC+kbmMW+SQL Server做服务器,当客户端查询时,出现这个错误,在QQ群请教,一位朋友说,在服务器端查询不对,憋了一天,最终,朋友改了TkbmMWUNIDACConnection,得以解决,原来是这样,如果uniDAC+SQL Server,则需要调用CoInitialize.而kbmMWUNIDACConnection中没有调用. 代码如下,红色是需要增加的代码,当然仅对于MS SQL Server,对于

[转载红鱼儿]kbmmw 开发点滴:kbmMW在事务中批量执行SQL

按客户端使用事务更新多个表数据到kbmMW服务器,使用TkbmMWClientTransactionResolve, 可以一次性提交多个修改的数据集到服务器端,服务器利用事务来执行数据的更新,成功,提交事务,不成功,则Rollback事务.在实际开发中,可能遇到 在更新数据集的同时,还要执行单独的SQL,处理业务逻辑.方法是:用一个单独的TkbmMWClientQuery来执行.具体用法: kbmMWClietnQuery3.Query.Text:='Update T1 Set F2=1 whe

[转载红鱼儿]kbmmw 开发点滴:kbmMW客户端提交事务的现场处理

多层应用中的事务处理,是必须的,如果处理不好,就会出现各种数据不同步的现象,无法投入使用.以前用ASTA实现的多层应用,是在客户端利用ASTA机 制,将要提交的数据集.执行的SQL及SP,统统生成到一个脚本中,在ASTA是TAstaParamList,然后一次性提交到服务器,在服务器端在执 行这个脚本时,开启事务,执行脚本,如果成功则Commit,失败则Rollback. kbmMW提供了更好的事务处理机制,即可以在服务器端做事务处理(TkbmMWTransactionResolve)也可以在客

[转载红鱼儿]kbmmw 开发点滴:kbmMW:Unknown property:indexes

利用kbmMW的QueryServices,对数据集进行提交,当改用JSON格式时,客户端提交时,会产生这个错误,明明已经更新数据库,也产生这个错误!如果换成Bin格式,则正常. 能过查看kbmMWJSONStreamFormat单元,问题产生在这行代码:nIndexDefs:=nDefs.AsArray['indexes']; 可以这样理解: 客户端提交数据后,服务器会返回一个错误结果数据集,不管有无错误,都要返回这个结果集.客户端会把这个数据集加载到 ClientQuery.ErrorTab

[转载红鱼儿]kbmmw 开发点滴:解决QueryService重复查询问题

做一个简单的QueryService,在跟踪过程中发现,客户端一个查询,会被触发两次.怎么会这样,这严重影响服务器性能. 客户端的代码非常简单,就是执行一个SQL,通过QueryService返回结果:   kbmMWClientQuery2.Close;   kbmMWClientQuery2.Open; 于是利用服务器端的QueryService的事件OnQueryStatement进一步检查SQL的执行情况,把SQL写到Memo中: procedure TkbmMWQueryService

[转载红鱼儿]kbmmw 开发点滴:kbmMW默认服务

这两天,用xalion的入门文章学习kbmMW的使用,当用kbmMW向导生成一个Service后,需要注册到kbmMWServer中,具体的方法在生成的Service中已经有说明: // INSTRUCTIONS FOR REGISTRATION/USAGE // ----------------------------------- // Please update the uses clause of the datamodule/form the TkbmMWServer is place