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

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

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

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

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

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

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

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

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

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

3. 配置路由规则

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服务标识相关概念以后再进一步说明怎么做这个测试

原文地址:https://www.cnblogs.com/jmicro/p/10579919.html

时间: 2024-10-25 14:15:28

【7】JMicro微服务-服务路由,负载均衡的相关文章

.net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行. 负载均衡,英文名称为Load

开源jms服务ActiveMQ的负载均衡+高可用部署方案探索

一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是否为目录(d)与文件(-)或连接文件(l)等属性.此外,Linux还可以设置其他系统安全属性,使用chattr来设置,以lsattr来查看,最重要的是可以设置其不可修改的特性,即便是文件的拥有者都不能进行修改.这个属性相当重要,尤其是在安全机制方面(security). 文件默认权限:umask 当建立一个新的文件或目录时,它的默认属性是与umask有关的.通常,umask就是指定当前用户在建立文件或目录时的属性默认值.那么,

kubernetes云平台管理实战: 服务发现和负载均衡(五)

一.rc控制器常用命令 1.rc控制器信息查看 [root@k8s-master ~]# kubectl get replicationcontroller NAME DESIRED CURRENT READY AGE myweb 3 3 3 3m [root@k8s-master ~]# kubectl get rc NAME DESIRED CURRENT READY AGE myweb 3 3 3 5m 2.删除rc [root@k8s-master ~]# kubectl delete

BGP路由负载均衡故障案例

网络架构介绍 1.拓扑图: 考虑到公司网络隐私性和更清楚的描述故障现象,对实际网络结构进行了简化. 2.网络规划及数据配置简介: ◆ASR9K分别以互联地址与两台N7K建立IBGP邻居关系: ◆ASR9K下挂思科752架构,752下为CDN服务器: ◆服务器网关均在N7K,两台7K之间起HSRP V2,相同优先级: ◆规划CDN服务器流量负载均衡(BOND0)至752,N7K再通过BGP将流量均衡送至ASR9K,最               后流量从ASR9出公网. 数据配置: ASR9K:

微服务SpringCloud之服务调用与负载均衡

上一篇我们学习了服务的注册与发现,本篇博客是在上一篇的基础上学习服务的调用.上一博客主要创建了Eureka的服务端和一个Client,该Client包含了一个Controller用来提供对外服务供外部调用,可以作为生产者. 一.引入依赖 前面创建了EurekaClient的项目,在项目中引入了spring-cloud-starter-netflix-eureka-client用来注册服务,是生产者,这里调用属于消费者,同样也需要引入spring-cloud-starter-netflix-eur

高性能Web服务之Httpd负载均衡Tomcat实现Session Sticky及Session Cluster

Httpd负载均衡Tomcat实现Session Sticky及Session Cluster架构如下所示: 实现过程如下: 配置tomcat服务(tomcat1\tomcat2) (1)安装JDK # rpm -ivh jdk-7u9-linux-x64.rpm  --安装JDK后生成的文件 # cd /usr/java/ ; ll total 4 lrwxrwxrwx  1 root root   16 Sep 27 09:09 default -> /usr/java/latest drw

day10 nfs服务,nginx负载均衡,定时任务

=====================nginx 负载均衡======================= 实现nginx负载均衡的效果,并运用nfs服务共享目录,使所有nginx服务拥有共同的http目录 nginx安装:http://www.cnblogs.com/alwaysInMe/p/6924859.html nfs安装:NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定. ===>  环境配置及软件安装 注:本次安装用的是cent

nginx提供web服务和实现负载均衡

##############nginx直接作为web服务站点###########背景:一台服务器建立两个web服务站点1)mkdir  /web1  /web2  ##建立二根个目录cd /web1vim index.htmlwww.web1.org    ##随便写东西 cd /web2vim index.html  www.web2.org    ##随便写东西和第一个不一样就行2)vim  /usr/local/nginx/conf/nginx.conf  ##添加以下参数 server

[系统集成] 用 Kubernetes Nginx Ingress 实现 HTTP 服务发布与负载均衡

用户在 Kubernetes 上部署的服务一般运行于私有网络,Pod和Service 提供了 hostPort,NodePort等参数用于暴露这些服务端口到K8S节点上,供使用者访问.这样的方法有明显缺点: 1)容易占用过多的主机端口: 2)服务端口暴露到多台主机会增加防火墙和安全配置的难度 3)默认的hostPort,NodePort方式没有负载均衡的作用 K8S的 Ingress 资源提供了另一种服务暴露的方法,它可以获取各个服务的状态,传递给nginx等工具进行配置修改.重新加载等工作,实

Spring Cloud ---- 服务消费与负载均衡(feign)

feign是一个声明式的伪客户端,只需要创建一个接口并且注解,它具有可插拔的特性.feign集合了Ribbon,再与Eurake结合实现服务的注册发现与负载均衡.结合Hystrix,具有熔断功能. 1.使用步骤首先引入feign,eureka, hystrix的jar包 2.启动两次服务提供者 3.配置文件声明注册中心地址,声明端口号,服务名 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ spring