当前位置: 首页 > news >正文

前端做网站wordpress模板游戏推广

前端做网站,wordpress模板游戏推广,手机端制作游戏的app,江苏市场监督管理局appapache camel在此示例中#xff0c;我们将向您展示如何使用Apache Camel作为系统的负载平衡器。 在计算机世界中#xff0c;负载平衡器是一种充当反向代理并在许多服务器之间分配网络或应用程序流量的设备。 负载平衡器用于增加容量#xff08;并发用户#xff09;和应用程… apache camel 在此示例中我们将向您展示如何使用Apache Camel作为系统的负载平衡器。 在计算机世界中负载平衡器是一种充当反向代理并在许多服务器之间分配网络或应用程序流量的设备。 负载平衡器用于增加容量并发用户和应用程序的可靠性。 借助Camel我们可以立即制作自己的软件负载平衡器。 享受骑行 负载平衡不是《企业集成模式》一书中的单独模式就像克劳斯·易卜生所说的那样如果本书有第二版的话但是骆驼把它当作另一个EIP对待。 尽管Camel语法使负载平衡看起来非常容易但这仍然是一个复杂的话题您应该花一些时间在设计阶段规划合适的策略。 Camel带有许多内置的负载平衡策略。 在此示例中我们介绍了其中一些更常用的方法。 本文的代码使用Maven 3.3.9Eclipse Mars 4.5.0和Apache Camel 2.17.1。 请注意自2.15版本以来负载平衡器API有所更改如果您要使用Camel的早期版本请查阅文档。 此示例源代码中的所有类都使用Test带注释的方法因此您必须将它们作为JUnit测试运行并希望看到绿色的条。 1.创建基础项目 在继续编写实际代码之前首先要在Eclipse中创建一个Maven项目。 首先选择File- New…- new project。 键入maven并选择Maven项目。 创建一个新的Maven项目 在下一个窗口中检查创建简单项目选项然后单击下一步 创建一个简单的Maven项目 最后添加以下配置然后单击完成 配置Maven项目 现在编辑pom.xml文件如下所示 pom.xml project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.javacodegeeks/groupId artifactIdcamelLoadBalancer/artifactId version1.0.0-SNAPSHOT/versiondependenciesdependencygroupIdorg.apache.camel/groupIdartifactIdcamel-core/artifactIdversion2.17.1/version/dependencydependencygroupIdorg.apache.camel/groupIdartifactIdcamel-test/artifactIdversion2.17.1/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency/dependencies /project2.负载均衡 我们提到了骆驼支持的不同政策但是什么是政策 策略定义工作负载如何在不同的接收方处理器消费者服务…之间分配。 在本文中我们播出了随机轮循及其加权对应项和主题策略的示例。 最后我们向您展示如何制定自己的政策。 随机 负载平衡策略的最简单形式是随机的。 顾名思义您只需定义应处理负载的端点然后Camel即可随机决定使用哪个端点。 这是实现随机策略的代码。 m1m2和m3是处理消息的端点。 终结点始终会收到该消息但是每次运行该类时都会使用上述终结点之一。 这种选择是完全随机的您可以通过添加自己的断言来检查这种随机性。 RandomLoadBalance.java package com.jcg;import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test;public class RandomLoadBalance extends CamelTestSupport{EndpointInject(urimock:m1)MockEndpoint m1;EndpointInject(urimock:m2)MockEndpoint m2;EndpointInject(urimock:m3)MockEndpoint m3;EndpointInject(urimock:end)MockEndpoint end;Overrideprotected RouteBuilder createRouteBuilder() throws Exception{return new RouteBuilder(){Overridepublic void configure() throws Exception {from(direct:start).loadBalance().random().to(m1,m2,m3).end().to(end);}};}Testpublic void testSending() throws Exception{end.expectedMessageCount(1);template.sendBody(direct:start, );end.assertIsSatisfied();} }轮循 轮询是负载平衡的另一种简单类型。 在此策略中依次依次使用端点。 在示例代码中您会看到消息通过m1m2m3并再次通过m1。 RoundRobinLoadBalance.java package com.jcg;import javax.naming.Context; import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.dataset.SimpleDataSet; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test;public class RoundRobinLoadBalance extends CamelTestSupport{EndpointInject(urimock:m1)MockEndpoint m1;EndpointInject(urimock:m2)MockEndpoint m2;EndpointInject(urimock:m3)MockEndpoint m3;EndpointInject(urimock:end)MockEndpoint end;Overrideprotected RouteBuilder createRouteBuilder() throws Exception{return new RouteBuilder(){Overridepublic void configure() throws Exception {from(dataset:start).loadBalance().roundRobin().to(m1,m2,m3).end().to(end);}};}Overrideprotected Context createJndiContext() throws Exception{SimpleDataSet sds new SimpleDataSet();sds.setSize(4);Context context super.createJndiContext();context.bind(start, sds);return context;}Testpublic void testSending() throws Exception{ m1.expectedMessageCount(2);m2.expectedMessageCount(1);m3.expectedMessageCount(1);end.expectedMessageCount(4);template.sendBody(dataset:start, );m1.assertIsSatisfied();m2.assertIsSatisfied();m3.assertIsSatisfied();end.assertIsSatisfied();} }加权轮循 在现实世界中很少有相同的计算机可以满足您的请求。 因此拥有一台可能更强大的机器比其他机器做更多的工作有意义。 加权循环和加权随机分别是循环策略和随机策略的更复杂对应物。 使用加权轮询或随机轮询您可以细粒度地控制负载平衡。 这里我们举一个加权轮循的例子。 加权随机是相同的。 weight方法有两个参数。 首先是一个布尔值它定义策略是循环true还是随机false。 第二个参数是一个字符串它定义相应端点的分配比率。 这里的“ 2,1”表示m1接收到的流量是m2接收到的流量的两倍。 在早期版本的Camel中您必须使用整数列表。 WeightedRoundRobinLoadBalance.java package com.jcg;import javax.naming.Context; import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.dataset.SimpleDataSet; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test;public class WeightedRoundRobinLoadBalance extends CamelTestSupport{EndpointInject(urimock:m1)MockEndpoint m1;EndpointInject(urimock:m2)MockEndpoint m2;EndpointInject(urimock:end)MockEndpoint end;Overrideprotected RouteBuilder createRouteBuilder() throws Exception{return new RouteBuilder(){Overridepublic void configure() throws Exception {// first argument of weighted method is a boolean defines if the policy is// Round robin (true) or Random (false)from(dataset:start).loadBalance().weighted(true,2,1).to(m1,m2).end().to(end);}};}Overrideprotected Context createJndiContext() throws Exception{SimpleDataSet sds new SimpleDataSet();sds.setSize(6);Context context super.createJndiContext();context.bind(start, sds);return context;}Testpublic void testSending() throws Exception{m1.expectedMessageCount(4);m2.expectedMessageCount(2);end.expectedMessageCount(6);template.sendBody(dataset:start, );m1.assertIsSatisfied();m2.assertIsSatisfied();end.assertIsSatisfied();} }话题 主题从根本上不同于其他策略因为所有端点都接收到该消息。 在我们的示例代码m1m2和m3中全部处理5条消息并且端点也接收5条消息。 主题对于防止端点故障很有用。 TopicLoadBalance.java package com.jcg;import javax.naming.Context; import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.dataset.SimpleDataSet; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test;public class TopicLoadBalance extends CamelTestSupport{EndpointInject(urimock:m1)MockEndpoint m1;EndpointInject(urimock:m2)MockEndpoint m2;EndpointInject(urimock:m3)MockEndpoint m3;EndpointInject(urimock:end)MockEndpoint end;Overrideprotected RouteBuilder createRouteBuilder() throws Exception{return new RouteBuilder(){Overridepublic void configure() throws Exception {from(dataset:start).loadBalance().topic().to(m1,m2,m3).end().to(end);}};}Overrideprotected Context createJndiContext() throws Exception{SimpleDataSet sds new SimpleDataSet();sds.setSize(5);Context context super.createJndiContext();context.bind(start, sds);return context;}Testpublic void testSending() throws Exception{ m1.expectedMessageCount(5);m2.expectedMessageCount(5);m3.expectedMessageCount(5);end.expectedMessageCount(5);template.sendBody(dataset:start, );m1.assertIsSatisfied();m2.assertIsSatisfied();m3.assertIsSatisfied();end.assertIsSatisfied();} }自定义负载均衡器 骆驼提供了许多有用的策略但是总有一些策略无法满足您的需求。 在这种情况下您必须定义自己的负载平衡策略但Camel不会让您感到孤独。 自定义负载平衡器使您可以轻松定义自己的策略。 在示例代码中我们定义了一个负载均衡器用于检查消息头“ sessionID”字段。 如果是偶数则将其发送到m1如果是m2则将其发送给m1。 当然这是一个不现实的示例但是我们故意简化了能够专注于负载平衡实现而又没有业务逻辑混乱的情况。 首先我们创建一个扩展LoadBalancerSupport类并覆盖处理方法的类。 然后我们将此类的实例传递给loadBalance方法。 SessionChecker.java package com.jcg;import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.processor.loadbalancer.LoadBalancerSupport;public class SessionChecker extends LoadBalancerSupport{Overridepublic boolean process(Exchange exchange, AsyncCallback callback) {int id exchange.getIn().getHeader(sessionID, Integer.class);try{if(id%2 0){getProcessors().get(0).process(exchange);} else{getProcessors().get(1).process(exchange);}}catch(Exception e){e.printStackTrace();}callback.done(true);return true;} } CustomLoadBalance.java package com.jcg;import java.util.HashMap; import java.util.Map; import javax.naming.Context; import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.dataset.SimpleDataSet; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test;public class CustomLoadBalance extends CamelTestSupport{EndpointInject(urimock:m1)MockEndpoint m1;EndpointInject(urimock:m2)MockEndpoint m2;EndpointInject(urimock:end)MockEndpoint end;Overrideprotected RouteBuilder createRouteBuilder() throws Exception{return new RouteBuilder(){Overridepublic void configure() throws Exception {from(dataset:start).loadBalance(new SessionChecker()).to(m1,m2).end().to(end);}};}Overrideprotected Context createJndiContext() throws Exception{SimpleDataSet sds new SimpleDataSet();MapString, Object headers new HashMap();headers.put(sessionID, 1);sds.setDefaultHeaders(headers);sds.setSize(2);Context context super.createJndiContext();context.bind(start, sds);return context;}Testpublic void testSending() throws Exception{ m1.expectedMessageCount(0);m2.expectedMessageCount(2);end.expectedMessageCount(2);template.sendBody(dataset:start, );m1.assertIsSatisfied();m2.assertIsSatisfied();end.assertIsSatisfied();} }3.结论 骆驼负载平衡还有更多。 我们没有涵盖诸如故障转移粘性和断路器之类的策略。 实际上骆驼不仅限于此。 您可以在更多情况下使用负载平衡例如客户端和服务器之间的HTTP代理。 4.下载Eclipse项目 这是不同的Camel负载平衡策略的示例。 下载 您可以在此处下载此示例的完整源代码 Camel负载均衡器 翻译自: https://www.javacodegeeks.com/2016/06/load-balancing-apache-camel.htmlapache camel
http://www.huolong8.cn/news/484591/

相关文章:

  • 设计素材网站蜂wordpress怎么改成中文版
  • 监控网站模板下载如何建立官网
  • 舞台灯光网站建设公司企业做电商网站有哪些内容
  • 网站建设网站维护的具体内容是什么网站建设流程有几个阶段
  • 中冶建设网站做网站销售的话术
  • 珠海网站制作哪家便宜免费网站免费领地
  • 提出网络营销思想的网站改版计划延安商城网站开发设计
  • 域名没备案如何建设网站三打哈网络推广平台
  • 上海网站排名企业网站源码生成
  • 建设p2p网站wordpress模板放在哪里
  • 陇南市响应式网站建设系统搭建
  • 网站开发公司 网站空间vps如何wordpress
  • 外贸自建站平台怎么找做网站用不用thinkphp
  • 具有品牌的做网站服装网站策划设计
  • 淘宝上做淘宝客的网站惠州手工外发加工网
  • 网站开发文档模板 开源网站开发小图标
  • 危险网站怎么做腾讯云认证iis搭建网站时 属于默认文档的是
  • 一建 建设网站首页wordpress导航调用分类
  • 网站一体化建设树苗网站源码
  • 无锡网站关键词优化软件咨询电商平台开发项目
  • 邮箱域名和网站域名嘉定企业网站制作
  • 美辰网站建设专业外贸网站建设_诚信_青岛
  • 5个常见的电子商务网站有没有做网站兼职
  • 湖北省建设工程造价管理站网站和城乡建设部网站
  • 网站建设中的思想和算法分类目录网站大全
  • 网站制作商处理营销型网站建设策划的几个误区
  • 国外免费推广网站百度数据库
  • wordpress创建分站点sp怎么做视频网站
  • 网站开发移动端多少钱wordpress h1 h2 h3
  • 好网站求推荐视频拍摄方案