Motan】的更多相关文章

Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用.Motan 基于微博的高并发和高负载场景优化,成为一套简单.易用.高可用的 RPC 服务框架. Motan 功能特点:简单.易用.高可用 无侵入集成.简单易用,通过 Spring 配置方式,无需额外代码即可集成分布式调用能力. 集成服务发现和服务治理能力,灵活支持多种配置管理组件,如 Consul.ZooKeeper 等. 支持自定义动态负载均衡.跨机房流量调整等…
Motan 是一套高性能.易于使用的分布式远程服务调用(RPC)框架. 功能 支持通过spring配置方式集成,无需额外编写代码即可为服务提供分布式调用能力. 支持集成consul.zookeeper等配置服务组件,提供集群环境的服务发现及治理能力. 支持动态自定义负载均衡.跨机房流量调整等高级服务调度能力. 基于高并发.高负载场景进行优化,保障生产环境下RPC服务高可用. 微博的Motan RPC服务,底层通讯引擎采用了Netty网络框架,序列化协议支持Hessian和Java序列化,通讯协议…
从14年开始就陆续看到新浪微博RPC框架Motan的介绍,时隔两年后,微博团队终于宣布开源轻量级RPC框架Motan,项目地址: https://github.com/weibocom/motan/ 项目文档介绍比较详细,搭建开发环境非常简单,如果只是使用而不需要源码的话,只配置maven依赖项目即可,按照示例几分钟就可以搭建起一个Hello world.当然这也是官方介绍中的优点之一. 我们来扩展一下官方的示例,并测试一下集群式部署.首先创建一个maven项目 1 公共部分 pom.xml <…
Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination. --官网 从官网可以看出,zookeeper是一个分布式一致性服务的软件.认识它源于hadoop中的habse.在后来的使用过程,可以看出它本省就是一个分布式的内存数据库,它由多个节点组成,每个节点的中存储的内容的都是一样的.,看到这里…
代码位置: motan-core的目录下       motan中使用spring管理配置对象.motan利用Spring的spi机制创建了自定义标签和相应的标签处理代码.具体使用方法见这篇.本文以motan为例,探讨如何扩展spring的schema. 1.首先,如果要自定义标签,不得不加上响应的xsd文件,这个文件可以对xml的格式进行约束.可以看到以下的自定义标签应该遵循的格式.对于新增的xsd文件,还要建立一个spring.schemas文件,加上这个xsd文件. <?xml versi…
服务器端编程都离不开底层的通信框架,在我们刚学习java的时候,主要接触都是Socket和ServerSocket 的阻塞编程,后来开始了解NIO,这种非阻塞的编程模式,它可以一个线程管理很多的SocketChannel,节省了线程资源和线程切换所需资源.netty就是一个成熟的nio框架,现在主流版本是3和4,3和4的api发生了重大变化.而dubbo和netty都是3的版本,作为初学者学的是4的语法,看起来更爽一点,所以有个“好事者”给motan加上了netty 4的支持,大家可以看到在gi…
motan是由maven管理的,在最外层的pom.xml中可以看出这个项目有多个模块组成. <modules> <module>motan-core</module> //核心项目 <module>motan-manager</module> //管理motan的web项目 <module>motan-springsupport</module> //spring对标签的解析 <module>motan-tra…
你已经走到这里了,后面只要耐心的走下去就行了.   --佚名 入职新公司以后,公司使用dubbo框架,简单的照葫芦画瓢之后,也算是入手了,但是其中内部的实现的机制一概不懂.我单纯的有种好奇心,觉得每个框架都是结构精密的仪器,研究了一个月后总结一下,学到的东西.之所以题目叫motan而不是dubbo,一来看motan代码总共2万行,测试代码1万多行,觉得够简单.二是已经在微博平台大量实用.三来:写本文的时候近期还更新.最起码让我觉得他还活着.相比而言: dubbo更复杂,更老.  哈哈哈哈哈哈哈哈…
本章将描述motan部分的特性并对源码进行分析. 1.requestid的维护,使用了当前时间左移20位,再和一个自增变量组合 public class RequestIdGenerator { ); ; << BITS; /** * 获取 requestId * * @return */ public static long getRequestId() { long currentTime = System.currentTimeMillis(); long count = offset.…
motan提供了流量切换的功能,可以实现把一个group的流量切换到另一个group(一个或多个服务都可以).大家可以使用tomcat部署motan的管理工具,并设置几个组,例如可以参考demo代码:motan_demo_server_commandRegistry.xml.分析源码时可以发现,流量切换是在客户端完成的,与服务端没什么关系,在实际的工作中,可以解决很多问题,例如:某个集群出了问题,可以马上将流量切换到其它集群:在系统升级的过程中,将带升级集群的流量切换到其它集群,实现了24小时随…