【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
随机推荐
- kubernetes pod、service文件yaml模版格式
apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 . kind: Pod #必选,Pod metadata: #必选,元数据 ...
- 使用WebUploader客户端批量上传图片,后台使用springMVC接收实例
使用WebUploader客户端批量上传图片,后台使用springMVC接收实例 我是搞Java后台的,因为最近主管让用webUploader写客户端,但是在网上找了很多,能够复制就能用的并没有几个, ...
- C#操作Excel(创建、打开、读写、保存)几种方法的总结
在.NET开发中,不管是web程序还是桌面软件(尤其是涉及数据库操作的MIS系统等),常常需操作Excel,如导出数据到Excel,读取Excel中数据到程序中等.总结起来,其操作不外乎创建.打开.读 ...
- Center Alignment
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93359#problem/B(456321) http://codeforces.com/ ...
- (最小生成树) Jungle Roads -- POJ -- 1251
链接: http://poj.org/problem?id=1251 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2177 ...
- 20155302 2016-2017-2 《Java程序设计》第六周学习总结
20155302 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入 ...
- Perf -- Linux下的系统性能调优工具,第 1 部分
Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...
- EBS-DBA 维护
--查询表空间使用率: SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...
- Android ListView setOnItemClickListener/setOnItemSelectedListener,无效
在Android 开发中,有时候我们在设置,LIstview,GridView,这些View的时候,再给他们设置:setOnItemClickListener/setOnItemSelectedLis ...
- [Ubuntu]管理开机启动项的软件
sudo apt-get install sysv-rc-conf