【7】JMicro微服务-服务路由,负载均衡

1。关于服务路由和负载均衡

服务路由:根据预先配置好的策略,为客户端选择一个当前可用的服务提供者,根据策略选择一个可用的即可。

负载均衡:在当前可用的服务中,为客户端选择一个最合适的服务服务提供者,要选一个最合适的,公平的。

所以负载均衡是路由的进一步筛选,查看org.jmicro.client.RoundBalance源码,就是这么做的。

2. 目前JMicro提供四种路由实现

IP路由:根据客户端请求IP查找路由规则,源IP的请求导到指定IP的服务上;

标签路由:根据请求上下文是否包含某个值查找路由规则,并将服务导到指定的IP的服务上;

服务路由:根据请求的服务名称空间,服务名称,服务版本,服务方法查找路由规则,导到指定IP的服务上;

默认路由:根据IP,标签,服务依次过虑规则,最终找到唯一规则并导到指定IP的服务上。

3. 配置路由规则

扫描二维码关注公众号,回复: 5617622 查看本文章

3.1 配置IP路由规则:

ZKUI进入/jmicro/routeRules,新建属性如下图

名称可以任意取,不重复就行,值如下所示

{"type":"sourceIpPortMatch2IpPort", //IP路由规则固定值
"id":"TestIpRoute", //同种类型规则不能重复
"from":{"ipPort":"192.168.1.102"},//源IP,也就是客户端IP
"to":{"ipPort":"192.168.1.103:2999"},//目的IP
"enable":true,//启用规则
"priority":1000}//优先级,如有多个规则,值越小,优先级越高

 以上配置规则表示192.168.1.102的请求全部路由到192.168.1.103:2999服务上,端口可选。

3.2 配置标签路由规则

操作方式与3.1相同,值如下

{"type":"contextParamMatch2IpPort","id":"TestTagRoute",
"from":{
"tagKey":"routerTag",//上下文标签KEY
"tagVal":"tagValue"//上下文标签KEY下的值

},
"to":{"ipPort":"172.16.22.7:3333"},//目的IP
"enable":true,"priority":1003}

以上规则的意思是请求上下文包含routerTag="tagValue"时,客户端请求被路由到172.16.22.7:3333的服务上

3.3 配置服务路由规则

操作方式与3.1相同,值如下

{"type":"clientServiceMatch2IpPort","id":"TestServiceRoute",
"from":{"serviceName":"org.jmicro.example.api.ITestRpcService","namespace":"testrpc","version":"0.0.1","method":"getPerson"},//对这个服务的全部请求
"to":{"ipPort":"192.168.1.102"},//目的IP
"enable":true,"priority":1001}

以上规则的意思是对org.jmicro.example.api.ITestRpcService:testrpc:0.0.1:getPerson服务的请求,全部路由到192.168.1.102的服务上

 4. 测试

4.1 先启动几个Provider实例,记下IP及对应的端口,并配置到以上的规则目标(to属性)里面。

4.2 根据本机IP的配置from值,测试IP路由

4.3 标签路由,代码如下

public static void main(String[] args) {
        
        IObjectFactory of = JMicro.getObjectFactoryAndStart(new String[]{""});
        
        JMicroContext.get().setParam("routerTag", "tagValue");//设置上下文标签,匹配from对应属性
        
        //got remote service from object factory
        ISimpleRpc src = of.get(ISimpleRpc.class);
        //invoke remote service
        System.out.println(src.hello("Hello JMicro"));
    }

4.4 服务路由

后面了解Jmicro服务标识相关概念以后再进一步说明怎么做这个测试

猜你喜欢

转载自www.cnblogs.com/jmicro/p/10579919.html
今日推荐