如非授权,禁止用于商业用途,转载请注明出处
作者:mynewworldyyl

 

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

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

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

    1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

  2. SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡

    本文源码:GitHub·点这里 || GitEE·点这里 一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TC ...

  3. 服务发现与负载均衡 dubbo zk原理

    服务发现与负载均衡 拓展阅读 : dubbo 原理概念图 2016-03-03 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 内容整理自文章“实施 ...

  4. 从零开始入门 | Kubernetes 中的服务发现与负载均衡

    作者 | 阿里巴巴技术专家  溪恒 一.需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机 ...

  5. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  6. Kubernetes 中的服务发现与负载均衡

    原文:https://www.infoq.cn/article/rEzx9X598W60svbli9aK (本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)) 一.需求来源 为 ...

  7. 学习一下 SpringCloud (三)-- 服务调用、负载均衡 Ribbon、OpenFeign

    (1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...

  8. grpc服务发现与负载均衡

    前言 在后台服务开发中,高可用性是构建中核心且重要的一环.服务发现(Service discovery)和负载均衡(Load Balance)一直都是我关注的话题.今天来谈一下我在实际中是如何理解及落 ...

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

    一.rc控制器常用命令 1.rc控制器信息查看 [root@k8s-master ~]# kubectl get replicationcontroller NAME DESIRED CURRENT ...

  10. Consul + fabio 实现自动服务发现、负载均衡 - DockOne.io

    Consul + fabio 实现自动服务发现.负载均衡 - DockOne.io   http://dockone.io/article/1567

随机推荐

  1. kubernetes pod、service文件yaml模版格式

    apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 . kind: Pod #必选,Pod metadata: #必选,元数据 ...

  2. 使用WebUploader客户端批量上传图片,后台使用springMVC接收实例

    使用WebUploader客户端批量上传图片,后台使用springMVC接收实例 我是搞Java后台的,因为最近主管让用webUploader写客户端,但是在网上找了很多,能够复制就能用的并没有几个, ...

  3. C#操作Excel(创建、打开、读写、保存)几种方法的总结

    在.NET开发中,不管是web程序还是桌面软件(尤其是涉及数据库操作的MIS系统等),常常需操作Excel,如导出数据到Excel,读取Excel中数据到程序中等.总结起来,其操作不外乎创建.打开.读 ...

  4. Center Alignment

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93359#problem/B(456321) http://codeforces.com/ ...

  5. (最小生成树) Jungle Roads -- POJ -- 1251

    链接: http://poj.org/problem?id=1251 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2177 ...

  6. 20155302 2016-2017-2 《Java程序设计》第六周学习总结

    20155302 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入 ...

  7. Perf -- Linux下的系统性能调优工具,第 1 部分

    Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...

  8. EBS-DBA 维护

    --查询表空间使用率: SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...

  9. Android ListView setOnItemClickListener/setOnItemSelectedListener,无效

    在Android 开发中,有时候我们在设置,LIstview,GridView,这些View的时候,再给他们设置:setOnItemClickListener/setOnItemSelectedLis ...

  10. [Ubuntu]管理开机启动项的软件

    sudo apt-get install sysv-rc-conf