Motan

Motan源码阅读--工程概述

﹥>﹥吖頭↗ 提交于 2019-12-04 05:47:04
工程概述 Motan框架采用模块化设计,使用按需加载,模块有: motan-core:motan核心框架 motan-transport-netty:基于Netty协议的长链接传输协议 motan-registry-consul:consul服务发现组件 motan-registry-zookeeper:zk服务发现组件 motan-springsupport:spring标签解析相关组件 默认配置 protocol协议默认为motan,基于hessian2实现。 负载均衡默认为activeWeight,低并发度优先,refer的某个时刻call的数量越小优先级越高。 容错策略默认为failover,失败自动切换,当出现失败,重试其他服务器。 Failfast快速失败,只发起一次调用,失败立即报错。 配置服务端工作线程数。 配置客户端为每个服务建立的连接数。 注册中心motan:registry 包含以下属性: Name:标识配置名称; regProtocol:标识注册中心协议 Address:标识注册中心地址 服务提供方motan:service 常用属性: Interface:标识服务的接口类名 Ref:标识服务的实现类,引用具体的spring业务实现对象 Export:标识服务的暴露方式,格式为“protocolId:port”,其中protocolId:应对motan

Motan源码阅读--初识Motan

无人久伴 提交于 2019-12-03 02:49:11
Motan Motan是一套高性能,易于使用的RPC框架。提供了服务治理,包括服务节点自动发现,摘除,高可用和负载均衡。Motan具有良好扩展性,主要模块都提供了不同实现,例如多种注册中心,多种rpc协议等。 功能 支持通过spring配置方式集成,无需额外编写代码即可以为服务提供分布式调用能力。 支持集成consul,zk等配置服务组件,提供集群环境服务发现及治理能力。 支持动态自定义负载均衡,跨机房流量调整等高级服务调度能力。 基于高并发,高负载场景进行优化,保障生产环境下RPC服务高可用。 模块 Motan框架中主要有register,transport,serialize,protocol几个功能,各个模块都支持通过SPI进行扩展。 registry 用来和注册中心交互,包括服务注册,服务订阅,服务变更通知,服务心跳发送等。server端会在系统初始化时通过registry模块注册服务,client端在系统初始化时通过registry模块订阅到服务提供者列表,当server列表变更时由registry模块通知client。 protocol 用来进行RPC服务端描述和RPC服务端配置管理,可以添加不同filter来统计并发限制等功能。 serialize 将RPC请求中的参数,结果等对象进行序列化和反序列化,进行对象与字节流互相转换,默认使用对java友好的hessian2

分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较

匿名 (未验证) 提交于 2019-12-03 00:30:01
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见 http://www.oschina.net/news/55059/druid-1-0-9 Motan是新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。 rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。 gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。 thrift是Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用。 后续还会增加更多的 RPC 框架的比较,敬请收藏本文网址 以下是它们的功能比较: 对于RPC的考察,

史上最详细的使用Zookeeper注册中心搭建Motan Rpc 的完整Demo

匿名 (未验证) 提交于 2019-12-03 00:26:01
Zookeeper Motan Rpc Demo zookeeper 1.1 (1)zookeeper /usr/local/zookeeper zookeeper Linux JDK (2)zookeeper zookeeper tar -xzvf (3)conf zoo_sample.cfg zoo.cfg zoo.cfg TickTime zk 1*tickTime zk 2*tickTime TickTime 2000 TickTime CPU clientPort zk TCP 2181 dataDir dataLogDir (4)Zookeeper bin sh zkServer.sh start sh zkServer.sh status , 1.2 1 Linux rpm -qa|grep iptables service iptables status (2)ping ping Linux vi /etc/sysconfig/network-scripts/ifcfg-eth0 FooService.java FooServiceImpl.java Server.java 2.5 调用端代码 FooService.java Client.java 2.6 pom.xml pom.xml添加如下依赖: < dependency > < groupId > com

webservice技术之巅峰对决(httpclient远程调用通用技术详解)

我怕爱的太早我们不能终老 提交于 2019-12-01 14:12:20
在工作中,经常会遇到不同公司系统之间的远程服务调用。远程调用技术非常多,如rmi、netty、mina、hessian、dubbo、Motan、springcloud、webservice等等。虽然在互联网的今天,可能大多数公司使用的都是些高大上的分布式rpc调用技术,在多数程序员眼里都觉得webservice技术非常的low,但博主不得不说它是公司与公司之间进行系统对接的最佳推荐技术。 推荐原因: 1.webservice技术是建立在http+xml基础之上的,非常的轻量级。 2.webservice技术可通过wsdl来定义调用关系,双方系统可根据wsdl快速的进行开发对接。 3.webservice是一种标准,有各种语言对它的实现,支持异构系统之间的对接。 4.必要情况下,还可以使用httpclient作为客户端进行调用,以降低依赖。 一、webservice原理: 客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>通过http调用发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)——>处理SOAP请求——> 调用WebService接口——>生成SOAP应答 ——> Web服务器通过http的方式返回客户端 二、webservice通用调用技术httpclient(JAVA版) 工具类: package com

分布式、微服务服务架构剖析

為{幸葍}努か 提交于 2019-11-29 23:38:54
一、RPC RPC(Remote Process Call),即远程服务调用,被广泛地应用在很多企业应用中,是早期主要的服务治理方案,其流程较为简单,客户端consumer携带参数发送RPC请求到服务提供方provider,provider根据参数路由到具体函数,方法,并将执行获得的结果返回,至此一次RPC调用完成。   随着业务的发展,大数据时代的到来,服务提供方的压力也日益增大,单机应用的处理能力无论在软件,硬件上都受到限制,provider也不可能一直无限扩容,即使扩容,也存在着很多问题,即服务的路由,和Consumer的负载均衡问题。因此,分布式服务架构应运而生,RPC发展到一定阶段思考的变革,成为了分布式服务,云计算的计算机基础。 二、SOA 由于简单的RPC调用已经不能随着时代发展满足需求,因此复杂的业务逻辑对于分布式应用架构体系的需求愈发强烈,业务希望自己的服务是分布式部署的,请求是分流的,对数据的操作是能读写分离的,同时能屏蔽许多复杂需要自己编写的底层服务,借助已有的公共服务,去快速的构建自己的应用,降低人力开发维护的成本和提高应用交付的效率,基因此,基于分布式服务思想的SOA(Service-Oriented Architecture)成了新的受追捧的架构。常见的SOA服务调用流程图如下:  三、业界服务治理方案 业界的互联网巨头公司,都有属于自己的分布式服务框架