iteye编辑器在IE8下太不好用了,写了保存到草稿里结果再编辑格式就都没了,晕
接上面的 http://rabbit9898.iteye.com/blog/1508968
,继续
5. 写服务器端代码
servernode1.java
package norbert.exam.server;
import norbert.exam.util.ServerUtil;
import com.linkedin.norbert.javacompat.cluster.ClusterClient;
public class ServerNode1 {
public static void main(String[] args)
{
//创建clusterClient
ClusterClient cc = ServerUtil.configCluster(ServerUtil.clusterName, ServerUtil.zkConnectStr);
//添加node1,端口绑定5001
cc.removeNode(1);
cc.addNode(1, "localhost:5001");
//启动node1
ServerUtil.startServer(ServerUtil.clusterName, 1, ServerUtil.zkConnectStr);
}
}
其中在ServerUtil.startServer中有:
public static void startServer(String serviceName, int nodeId, String zkConnectStr)
{
NetworkServerConfig config = new NetworkServerConfig();
config.setServiceName(serviceName);
...
NetworkServer ns = new NettyNetworkServer(config);
//server中绑定需要处理的消息类型和功能
ns.registerHandler(new NodePingRequestHandler(), new PingSerializer());
ns.registerHandler(new NodeSumRequestHandler(), new ReqProtoSerializer());
ns.bind(nodeId);
}
NodeSumRequestHandler.java 代码,实现加和:
public class NodeSumRequestHandler implements RequestHandler<Request,Reponse>{
@Override
public Reponse handleRequest(Request request) throws Exception {
Reponse r= new Reponse();
if(request!=null){
r.setSum(request.num + request.num);
}
System.out.println("receive request=" + request.num +" sum="+ r.getSum());
return r;
}
}
同样创建servernode2.java
6. 写客户端测试调用代码
ClientSum.java
public class ClientSum {
public static void main(String[] args)
{
NetworkClientConfig config = new NetworkClientConfig();
config.setServiceName(ServerUtil.clusterName);
config.setZooKeeperConnectString(ServerUtil.zkConnectStr);
//....
//采用roundrobin策略 随机调用node上的功能
NetworkClient nc = new NettyNetworkClient(config, new RoundRobinLoadBalancerFactory());
int num =3;
final Request request = new Request(num);
Future<Reponse> responseFuture = nc.sendRequest(request, new ReqProtoSerializer());
try
{
final Reponse sumResp = responseFuture.get();
System.out.println("num=" + num +" ; got sum resp: " + sumResp.getSum());
}
catch( InterruptedException e )
{... }
}
7. 客户端测试Server调用
启动servernode1和servernode2,可以看到:
servernode1的控制台输出
connected to cluster: []
nodes changed,current node size= 0
nodes changed,current node size= 0
nodes changed,current node size= 0
nodes changed,current node size= 0
nodes changed,current node size= 1 node: JavaNode(1,localhost:5001,true,[]);
nodes changed,current node size= 1 node: JavaNode(1,localhost:5001,true,[]);
nodes changed,current node size= 1 node: JavaNode(1,localhost:5001,true,[]);
nodes changed,current node size= 2 node: JavaNode(2,localhost:5002,true,[]); node: JavaNode(1,localhost:5001,true,[]);
启动ClientSum.java 控制台输出:
num=3 ; got sum resp: 6
在servernode1 或者servernode2下可以看到多了一行输出:
receive request=3 sum=6
多启动几次ClientSum.java ,可以看到会分发到不同的node上。
转载请标明出处。上程序附件。
==================完=====================
分享到:
相关推荐
Norbert Dentressangle公司作为全球领先的物流服务提供商,以其在深冷环境下的物流解决方案而闻名。 【描述】: Norbert Dentressangle公司的深冷自动化物流系统展示了如何结合先进的自动化技术与严格的低温管理,...
Norbert Dentressangle公司深冷自动化物流系统.pdf
norbert, Zookeeper是一个集群管理器和网络层 什么是 NorbertNorbert是一个提供易于集群管理和集群感知客户机/服务器网络api的库。 在 Scala 中实现了 to,to并使用了协议缓冲区来使传输更容易构建集群知识应用程序...
【Kodilla_Project_Norbert_Lizun:Kodilla Project Norbert Lizun】是一个以Java编程语言为基础的项目,由Norbert Lizun创建或参与。这个项目可能是一个教学资源或者是一个实际应用的实例,旨在帮助学习者或者...
出版信息显示,该书在1989年由Free Association Books在伦敦出版,首次出版是在1950年和1954年,由Houghton Mifflin出版,版权信息为1950年和1954年的Norbert Wiener。 从这些介绍中可以提炼出以下知识点: 1. ...
诺伯特·菲克纳(Norbert Ficner)是一位专注于对象导向编程的开发者,他的"Ficner_Norbert_repo_obiektowe"项目显然与Java编程语言紧密相关。在这个项目中,我们可以推测诺伯特分享了他的代码库,用于教育、示范或...
Norbert Dentressangle仓库采用了由Psion Teklogix提供的RFID(无线频率识别)方案,以提高其运输和物流服务的效率。这个创新方案旨在解决仓库管理中的自动化定位问题,尤其是在处理散装库存时。传统的仓库操作中,...
norbert是一个方便做CS模式的集群的JAVA API,norbert封装了zookeeper和netty,使用了协议栈缓存,基于SCALA开发 示例代码: public class NorbertClient { public static void main(String[] args) { Cluster...
Norbert Pohlmann以及Adam Ross等业界专家,他们共同讨论了信任服务的全球化市场趋势,以及在身份验证、加密和工业互联网等领域的应用。 首先,安全分析是确保信息安全的关键环节。通过对网络行为的监测和分析,...
Shannon在1948年提出了信息论,将信息定义为消息的不确定性,而Norbert Wiener在1950年的控制论中则将信息视为人们适应环境并使这种适应被感知的过程。进入21世纪,哲学家们更是将信息视为与物质并列的概念,纳入...
此外,Ambient Networks还探索了如何利用分布式计算和人工智能技术来优化网络性能。 **4. 编辑背景介绍** - **Norbert Niebert**:Ericsson GmbH的研究员,专注于无线通信系统的创新研究。 - **Andreas Schieder**...
Norbert Kuhn*、Ahmed Abu-Rayyan 和 Markus Ströbele Tübingen,Institut für Anorganische Chemie der Universität 于 2002 年 7 月 29 日收到。献给 Dieter Fenske 教授的生日抽象的。 2-Chloro-1,3-...
Norbert Kuhn *、Ahmed Abu-Rayyan、Martin Göhner 和 Manfred Steimann Tübingen,大学无机化学研究所 2002 年 3 月 15 日收到。 Wolfgang Haubold zum 教授2,3-二氢-1,3-二异丙基-4,5-二甲基咪唑-2-亚基的二氯...
《Executing SOA: A Practical Guide for the Service-Oriented Architect》是Norbert Bieberstein、Robert G. Laird、Dr. Keith Jones与Tilak Mitra四位资深SOA实践者共同编著的一本深入探讨服务导向架构(SOA)...
标题中的"计算机专业日语二.pdf"表明了这是一个关于计算机专业的日语文档,而描述中的内容没有提供额外信息。从标签"技术"我们可以推断,本文档涉及的是计算机技术相关的日语术语或概念。 文档部分内容涉及到计算机...
Norbert Wiener是最早研究反馈理论的美国人之一.最熟悉的反馈控制的例子是自动调温器.它将 收集到的房间温度与希望的温度比较,并做出反应将加热器开大或关小,从而控制环境温 度.这项对反馈 回路的研究重要性在于: ...
Norbert Wiener是最早研究反馈理论的美国人之一.最熟悉的反馈控制的例子是自动调温器.它将 收集到的房间温度与希望的温度比较,并做出反应将加热器开大或关小,从而控制环境温 度.这项对反馈 回路的研究重要性在于: ...
8. 部署与服务化:诺伯特可能已经实现了将模型部署为API服务,以便其他应用程序或系统可以调用,这可能涉及到Flask、Django、FastAPI等Web框架。 9. 持续集成/持续部署(CI/CD):为了确保代码质量,项目可能采用了...