`

norbert 高并发分布式服务例子 examples (一)

 
阅读更多

Norbert简介
      norbert是一个提供分布式集群服务的开发框架,具备集群管理功能,是一个开发简单的通信架构,易扩展能承受高吞吐量的框架。
     norbert 应该是用scala来实现,对Netty, Protocol Buffers and Zookeeper的一个封装。 其中集群管理的功能利用了zookeeper来进行node状态的感知,通讯采用了nio的netty server,序列化采用的是Protocol Buffers。虽然是用scala来写的,但是对java有良好的兼容性。linkedin在他们的架构里面都用到了这个框架。

    norbert的最早版本应该在 https://github.com/rhavyn/norbert, 这个工程是可以用maven编译的,但是好久没有人维护了;最新的应该在https://github.com/jhartman/norbert 或者https://github.com/linkedin/norbert下,用scala的sbt编译的。

   

    norbert的体系结构:

   

 

 linkedin发布的分布式搜索senseidb使用的就是norbert,因此想要了解senseidb,最好还是先了解一下norbert的example。senseidb的体系结构:



 

    我参考norbert examples目录下的例子做了个工程,来说一下norbert 分布式搭建:

   目标:建立两个server节点(Node),算个加法,可以在不同的Node上实现;norbert 自带的examples Ping也可以实现,主要的程序名称:

  

 

 

1. 下载zookeeper,安装

2. Git下载norbert  或者直接下载程序包

    我下载的是norbert_2.8.1  version:0.6.12

3. 建立maven工程,pom文件内容

    

		<dependency>
			<groupId>com.linkedin</groupId>
			<artifactId>norbert_2.8.1</artifactId>
			<version>0.6.12</version>
		</dependency>
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-library</artifactId>
			<version>2.8.1</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.netty</groupId>
			<artifactId>netty</artifactId>
			<version>3.2.3.Final</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>2.4.0a</version> <!--  2.3.0 2.4.0a -->
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.3.3</version>
			<scope>compile</scope>
		</dependency>

 

   4.定义客户端和服务器端的消息

   可以采用examples下的Ping.

   自己添加了Request和Response消息类型。

   Request下有public int num;

   Response下有public int sum; 存放Request消息中计算加和。

 

   Request和Response转换为google protocol buf消息

   编写request.proto文件: 

  

package norbert.exam.protobuf;

option java_package = "norbert.exam.model";
option java_outer_classname = "RequestBPO";

option optimize_for = SPEED;

message RequestMsg{
  required bytes val = 1;
}

 

 

  执行 protoc.exe --java_out=..\src\main\java\ request.proto  自动生成RequestBPO.java (protoc.exe程序去protocol buf里下载,我用的版本是2.4.1 )

  同理生成ReponseBPO.java

 

  定义消息完后,需要实现import com.linkedin.norbert.network.Serializer;

    

  不过在本例中没有怎么使用protocol buf中的序列化来转换消息。  对里面的Serializer<Request,Reponse> 没有深入理解,看不懂scala呀  :(

 

  前面部分参考http://tech.optify.net/building-a-server-cluster-with-linkedins-norbert/

  后面的部分参考examples.

 

  未完,待续......

 

 

 

 

  • 大小: 92 KB
  • 大小: 39 KB
  • 大小: 14.6 KB
分享到:
评论

相关推荐

    norbert 高并发分布式服务例子 examples (二)

    在这个例子中,它定义了norbert框架及其依赖库,如protobuf(协议缓冲区)和其他支持高并发服务的组件。通过阅读和理解这个文件,开发者可以知道如何将norbert集成到自己的项目中,并管理相关的依赖关系。 接下来,...

    norbert, Zookeeper是一个集群管理器和网络层.zip

    norbert, Zookeeper是一个集群管理器和网络层 什么是 NorbertNorbert是一个提供易于集群管理和集群感知客户机/服务器网络api的库。 在 Scala 中实现了 to,to并使用了协议缓冲区来使传输更容易构建集群知识应用程序...

    Norbert Dentressangle公司深冷自动化物流系统.rar

    Norbert Dentressangle公司作为全球领先的物流服务提供商,以其在深冷环境下的物流解决方案而闻名。 【描述】: Norbert Dentressangle公司的深冷自动化物流系统展示了如何结合先进的自动化技术与严格的低温管理,...

    Norbert Dentressangle公司深冷自动化物流系统.pdf

    Norbert Dentressangle公司深冷自动化物流系统.pdf

    Kodilla_Project_Norbert_Lizun:Kodilla Project Norbert Lizun

    【Kodilla_Project_Norbert_Lizun:Kodilla Project Norbert Lizun】是一个以Java编程语言为基础的项目,由Norbert Lizun创建或参与。这个项目可能是一个教学资源或者是一个实际应用的实例,旨在帮助学习者或者...

    Cybernetics,HumanuseofhumanbeingsNorbertWiener1989

    诺伯特·维纳的《人类的人类使用》是20世纪最具影响力的著作之一,该书首次出版于1950年,它奠定了控制论这一科学领域的基础。控制论是一门研究动物和机器中控制和通信过程的通用科学,这一学科的提出,标志着信息和...

    Ficner_Norbert_repo_obiektowe

    诺伯特·菲克纳(Norbert Ficner)是一位专注于对象导向编程的开发者,他的"Ficner_Norbert_repo_obiektowe"项目显然与Java编程语言紧密相关。在这个项目中,我们可以推测诺伯特分享了他的代码库,用于教育、示范或...

    Ambient.Networks.Jun.2007 英文版,超清晰,非扫描

    这本书《Ambient Networks: Cooperative Mobile Networking for the Wireless World》是由Norbert Niebert、Andreas Schieder、Jens Zander和Robert Hancock四位编辑共同完成的一部作品。这些编辑分别来自Ericsson ...

    Norbert Dentressangle仓库采用得逻辑(Psion Teklogix)RFID方案

    Norbert Dentressangle仓库采用了由Psion Teklogix提供的RFID(无线频率识别)方案,以提高其运输和物流服务的效率。这个创新方案旨在解决仓库管理中的自动化定位问题,尤其是在处理散装库存时。传统的仓库操作中,...

    CS模式的集群的JAVAAPInorbert.zip

    norbert是一个方便做CS模式的集群的JAVA API,norbert封装了zookeeper和netty,使用了协议栈缓存,基于SCALA开发 示例代码: public class NorbertClient { public static void main(String[] args) { Cluster...

    信息安全_数据安全_spo2-t08-the_future_of_trust_in_.pdf

    Norbert Pohlmann以及Adam Ross等业界专家,他们共同讨论了信任服务的全球化市场趋势,以及在身份验证、加密和工业互联网等领域的应用。 首先,安全分析是确保信息安全的关键环节。通过对网络行为的监测和分析,...

    Executing SOA (执行SOA)2008

    《Executing SOA: A Practical Guide for the Service-Oriented Architect》是Norbert Bieberstein、Robert G. Laird、Dr. Keith Jones与Tilak Mitra四位资深SOA实践者共同编著的一本深入探讨服务导向架构(SOA)...

    ADwienerfilt_wienerfilter_时变滤波器_时变滤波_

    维纳滤波器,以数学家Norbert Wiener命名,是一种基于最小均方误差准则的滤波方法。在经典滤波理论中,维纳滤波器被广泛用于恢复被噪声污染的信号,尤其是在知道噪声统计特性和期望信号的情况下。它通过逆滤波和加权...

    诺伯特

    诺伯特,这个名字在IT行业中可能是指一个人工智能或机器学习的项目,因为"Norbert"经常被用作此类项目的代号或者名字。不过,由于提供的标签为空,我们无法直接得知这里的“诺伯特”具体指代的是哪个技术或应用。...

    信息科学与知识管理.pptx

    Shannon在1948年提出了信息论,将信息定义为消息的不确定性,而Norbert Wiener在1950年的控制论中则将信息视为人们适应环境并使这种适应被感知的过程。进入21世纪,哲学家们更是将信息视为与物质并列的概念,纳入...

    人工智能英文版课件:06 Adversarial Search.ppt

    例如,国际象棋就是这种类型的一个典型例子,一方赢则另一方输。 Chapter 6 "Adversarial Search"的课件详细介绍了这一主题。首先,游戏在AI中的研究历史悠久,早在1950年代初,随着计算机编程的发展,就已经有...

    History of Banach Spaces and Linear Operators

    - **1.7 Norbert Wiener**:Wiener是一位多产的数学家,他对Banach空间的发展也有所贡献。特别是他在泛函分析领域的工作为Banach空间理论提供了重要的理论基础。 - **1.8 Eduard Helly 和 Hans Hahn**:这两位奥地利...

    Algebraic Number Theory Jurgen Neukirch.pdf

    Algebraic Number Theory 是一本关于数论的经典教材,由 Jurgen Neukirch 撰写,Norbert Schappacher 翻译。该书的德语版本于 1992 年出版,后被翻译成英语版本。 数论是数学的一个分支,研究整数和有理数的性质和...

    1人工智能发展史.doc

    Norbert Wiener是最早研究反馈理论的美国人之一.最熟悉的反馈控制的例子是自动调温器.它将 收集到的房间温度与希望的温度比较,并做出反应将加热器开大或关小,从而控制环境温 度.这项对反馈 回路的研究重要性在于: ...

Global site tag (gtag.js) - Google Analytics