一 部署Motan运行环境
1 升级spring到4.2.4 Release
2 引入相关Motan的jar包
<!-- Motan start --> <dependency> <groupId>com.weibo</groupId> <artifactId>motan-core</artifactId> <version>${motan.version}</version> </dependency> <dependency> <groupId>com.weibo</groupId> <artifactId>motan-registry-zookeeper</artifactId> <version>${motan.version}</version> </dependency> <dependency> <groupId>com.weibo</groupId> <artifactId>motan-registry-consul</artifactId> <version>${motan.version}</version> </dependency> <dependency> <groupId>com.weibo</groupId> <artifactId>serialization-extension</artifactId> <version>${motan.version}</version> </dependency> <dependency> <groupId>com.weibo</groupId> <artifactId>motan-springsupport</artifactId> <version>${motan.version}</version> </dependency> <dependency> <groupId>com.weibo</groupId> <artifactId>motan-transport-netty</artifactId> <version>${motan.version}</version> </dependency> <!-- <dependency> <groupId>com.weibo</groupId> <artifactId>motan-protocol-yar</artifactId> <version>${motan.version}</version> </dependency> --> <dependency> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> <version>3.2.5.Final</version> </dependency> <!-- zookeeper start--> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>${zkclient.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <!-- zookeeper end--> <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.38</version> </dependency> <dependency> <groupId>com.codahale.metrics</groupId> <artifactId>metrics-core</artifactId> <version>3.0.2</version> </dependency> <!-- consul start--> <dependency> <groupId>com.ecwid.consul</groupId> <artifactId>consul-api</artifactId> <version>1.1.4</version> </dependency> <!-- consul end--> <!-- Motan end -->
二 单机版HelloWorld
创建motan_server.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:motan="http://api.weibo.com/schema/motan"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd">
<!-- service implemention bean -->
<bean id="helloServiceImpl" class="com.csair.csmbp.service.impl.DemoServiceImpl" />
<!-- 单机exporting service by Motan -->
<motan:service interface="com.csair.csmbp.service.DemoService" ref="helloServiceImpl" export="8002" />
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:motan="http://api.weibo.com/schema/motan"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd">
<!-- service implemention bean -->
<bean id="helloServiceImpl" class="com.csair.csmbp.service.impl.DemoServiceImpl" />
<!-- 单机exporting service by Motan -->
<motan:service interface="com.csair.csmbp.service.DemoService" ref="helloServiceImpl" export="8002" />
</beans>
Server启动类:
package com.csair.csmbp.microServer; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.weibo.api.motan.common.MotanConstants; import com.weibo.api.motan.util.MotanSwitcherUtil; public class Server { public static void main(String[] args) throws InterruptedException { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:motan_server.xml"); System.out.println("server start..."); MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true); System.out.println("service registry..."); } }
创建motan_client:
写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:motan="http://api.weibo.com/schema/motan"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd">
<!-- 单机reference to the remote service -->
<motan:referer id="remoteService" interface="com.csair.csmbp.service.DemoService" directUrl="localhost:8002"/>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:motan="http://api.weibo.com/schema/motan"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd">
<!-- 单机reference to the remote service -->
<motan:referer id="remoteService" interface="com.csair.csmbp.service.DemoService" directUrl="localhost:8002"/>
</beans>
创建client调用类
package com.csair.csmbp.service.impl; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.csair.csmbp.service.DemoService; /** * Class description goes here. * * @author deanPhipray * @since 2015-3-2 */ @Transactional @Service(value="rpcDemoService") public class RpcDemoServiceImpl { public static void main(String[] args) throws InterruptedException { ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:motan_client.xml"); DemoService service = (DemoService) ctx.getBean("remoteService"); System.out.println(service.rpcHelloWorld("motan")); } }
服务端和客户端都需要用户接口类
package com.csair.csmbp.service; import com.csair.csmbp.dao.DemoDao; import com.csair.csmbp.model.Demo; import com.csair.csmbp.service.base.BaseServcie; /** * 用户service * * @author DeanPhipray * */ public interface DemoService extends BaseServcie<Demo,DemoDao> { /** * * @param userId * @return */ public String rpcHelloWorld(String name); }
三 集群版HelloWorld
motan_server.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:motan="http://api.weibo.com/schema/motan" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd"> <!-- service implemention bean --> <bean id="helloServiceImpl" class="com.csair.csmbp.service.impl.DemoServiceImpl" /> <!-- 集群exporting service by Motan --> <motan:registry regProtocol="zookeeper" name="my_zookeeper" address="10.108.68.140:2181,10.108.68.140:2182,10.108.68.140:2183"/> <motan:service interface="com.csair.csmbp.service.DemoService" ref="helloServiceImpl" registry="my_zookeeper" export="8002" /> </beans>
motan_client.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:motan="http://api.weibo.com/schema/motan" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd"> <!-- 集群reference to the remote service --> <motan:registry regProtocol="zookeeper" name="my_zookeeper" address="10.108.68.140:2181,10.108.68.140:2182,10.108.68.140:2183"/> <motan:referer id="remoteService" interface="com.csair.csmbp.service.DemoService" registry="my_zookeeper" requestTimeout="5000"/> </beans>
相关推荐
Java和Motan是分布式服务框架中的重要组成部分,而ZooKeeper则是它们之间的关键连接器。在Java开发中,为了实现大规模、高并发的系统架构,往往需要借助于分布式服务框架来处理复杂的网络通信和负载均衡问题。Motan...
【Motan 源码详解】 Motan 是一个由微博开发并广泛应用的高性能、易用的分布式远程服务调用框架。它旨在简化分布式系统中的服务间通信问题,提高系统的可伸缩性和灵活性。在深入理解 Motan 源码之前,我们先来了解...
motan.xsd文件,解决motan框架和spring整合快捷键的烦恼
motan.xsd 相关配置使用参考 https://blog.csdn.net/linuu/article/details/53115290
motan.xsd文件,解决motan框架和spring整合快捷键的烦恼
**Motan 框架详解** Motan 是一个由阿里巴巴开源的高性能、轻量级的分布式服务框架,专为互联网微服务设计。它的主要目的是为了简化分布式系统中的远程调用,提供一种简单易用的方式来构建跨网络通信的服务。在...
莫坦的例子 Motan使用有关交叉语言调用的示例。 每种语言的服务定义 ... HelloWorldService //用于...例如motan-go-example为Golang, motan-java-example的Java, motan-openresty-example用于openResty-Lua中, motan-se
Motan Overview Motan is a cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services. Motan-go is golang implementation. Motan-...
Sprint Boot莫坦项目介绍基于spring boot motan整合的demo(支持初始化和同步初始化),motan配置信息放置在application.yml中,详细配置请参考官网此demo基于zookeeper注册中心,如果要直接启动,需要安装zookeeper...
标题 "基于motan红豆live后台开发经验分析" 暗示了这篇内容主要涉及的是使用Motan框架在红豆Live后台开发中的实践经验。Motan是一款由阿里巴巴开源的分布式服务框架,适用于构建大型分布式系统,旨在简化服务调用的...
本指南旨在帮助开发者深入理解motan服务治理框架,该框架由Java编写,并附带相关资源。项目源码包含632个文件,其中Java文件占375个,JavaScript、XML、CSS、HTML、properties、Shell脚本等文件各有几十个,同时还...
该项目是一款基于Java的高性能分布式服务远程调用框架——motan的设计源码,涵盖744个文件,包括475个Java源文件、54个XML配置文件、51个JavaScript文件、28个CSS文件、22个PNG图像文件、15个HTML文件、14个Markdown...
本教程将深入探讨三个主流的Java RPC框架:Dubbo、Dubbox和Motan,以及gRPC,一个由Google推出的高性能、通用的开源RPC框架。以下是关于这些框架的详细讲解。 1. **Dubbo** Dubbo是由阿里巴巴开源的Java RPC框架,...
本项目为Java编写的motan跨语言RPC框架设计源码,总计包含722个文件,涵盖455个Java源文件、53个XML配置文件、51个JavaScript文件、28个CSS文件、22个PNG图像文件、15个HTML文件、14个Markdown文件、9个属性文件、8...
基于SpringBoot 2.0,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis缓存,Shiro权限管理,redis管理Session,Quartz分布式集群调度,Restful服务;系统管理:包括用户管理、权限管理、数据字典、系统...
LCN分布式事务框架,兼容dubbo、springcloud、motan框架,支持各种关系型数据库
**MOTAN:快速C++ Servlet容器** MOTAN 是一个高效的C++实现的Servlet容器,它借鉴了Java Servlet API 2.3的设计思想,旨在为C++开发者提供类似Java Web应用的开发体验。Servlet容器是Web服务器的核心部分,负责...
该项目是一款基于Java的跨语言RPC框架设计源码,旨在高效开发高性能分布式服务。源码包含749个文件,涵盖480个Java源文件、54个XML配置、51个...此框架支持Java、JavaScript等多种语言,适用于构建分布式系统。
《基于OpenResty的Motan-OpenResty:构建高性能跨语言RPC框架》 在现代互联网服务架构中,分布式服务已成为提升系统性能和可扩展性的关键。Motan-OpenResty是一个优秀的开源项目,它利用OpenResty作为基础,提供了...
Go-rpcx 是一个高度可扩展的、功能丰富的分布式RPC(远程过程调用)服务框架,它的设计灵感来源于阿里巴巴的Dubbo和微博的Motan。这个框架是用Golang语言构建的,利用了Golang的net/rpc库,为开发者提供了高效、稳定...