【7】JMicro微服务-服务路由,负载均衡
如非授权,禁止用于商业用途,转载请注明出处
作者: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微服务-服务路由,负载均衡的更多相关文章
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡
本文源码:GitHub·点这里 || GitEE·点这里 一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TC ...
- 服务发现与负载均衡 dubbo zk原理
服务发现与负载均衡 拓展阅读 : dubbo 原理概念图 2016-03-03 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 内容整理自文章“实施 ...
- 从零开始入门 | Kubernetes 中的服务发现与负载均衡
作者 | 阿里巴巴技术专家 溪恒 一.需求来源 为什么需要服务发现 在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机 ...
- 快速理解高性能HTTP服务端的负载均衡技术原理(转)
1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...
- Kubernetes 中的服务发现与负载均衡
原文:https://www.infoq.cn/article/rEzx9X598W60svbli9aK (本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative)) 一.需求来源 为 ...
- 学习一下 SpringCloud (三)-- 服务调用、负载均衡 Ribbon、OpenFeign
(1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...
- grpc服务发现与负载均衡
前言 在后台服务开发中,高可用性是构建中核心且重要的一环.服务发现(Service discovery)和负载均衡(Load Balance)一直都是我关注的话题.今天来谈一下我在实际中是如何理解及落 ...
- kubernetes云平台管理实战: 服务发现和负载均衡(五)
一.rc控制器常用命令 1.rc控制器信息查看 [root@k8s-master ~]# kubectl get replicationcontroller NAME DESIRED CURRENT ...
- Consul + fabio 实现自动服务发现、负载均衡 - DockOne.io
Consul + fabio 实现自动服务发现.负载均衡 - DockOne.io http://dockone.io/article/1567
随机推荐
- android的 Base64
byte[] key=Base64.decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4".getBytes(), Base64.DEFAULT); ...
- 【JS】判断浏览器类型
判断原理 JavaScript是前端开发的主要语言,我们可以通过 编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性 ...
- tty linux 打开和设置范例
http://bbs.csdn.net/topics/340184140 /************************************************************** ...
- 2018.07.10NOIP模拟 Draw(容斥原理)
Draw 题目背景 SOURCE:NOIP2016-RZZ-4 T3 题目描述 给定笛卡尔坐标系上 n 个不重复的点. 定义一个 L 形为: 一个形如 (x,y),(x+1,y)-(x+a,y),(x ...
- POJ 1458 Common Subsequence (DP+LCS,最长公共子序列)
题意:给定两个字符串,让你找出它们之间最长公共子序列(LCS)的长度. 析:很明显是个DP,就是LCS,一点都没变.设两个序列分别为,A1,A2,...和B1,B2..,d(i, j)表示两个字符串L ...
- 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)
题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7个已死鱼人.如果死掉的不足7个,那么召唤的数量就会不足7. 鱼人有很多,下面的4个是: 寒光智者 ...
- where /group by/ having/ order by/
1.order by 是 按字段 进行排序.. 字段后面可跟 desc 降序..asc 升序..默认为升序2.group by 是进行分组 查询3.having 和 where 都属于 条件过滤 区别 ...
- python 爬虫括号的用法
首先是文档说明: >>> import re >>> help(re.findall) Help on function findall in module re: ...
- hdu 5019
http://acm.hdu.edu.cn/showproblem.php?pid=5019 给出X 和Y,求出第K 大的 X 和Y 的公约数. 暴力求出所有公约数 #include <cstd ...
- springmvc 开涛 数据验证
两种方式:编程和声明. 编程需要:验证器,控制器,servlet.xml,错误码设置 声明需要:加jar包,控制器,跟孔浩讲得类似 错误消息设置的两种方式:硬编码:从资源文件中读取(默认,自定义).