前两篇文章已经对spring rmi方式的远程接口调用进行了说明,在本文中,我主要对spring的集群进行总结和实践,主要使用的组件为cluster4spring
集群的目的主要是为了实现负载均衡和单点故障.
实际的例子如下:
1.从cluster4spring官方网站上下载其二进制softamis-cluster4spring-0.85.jar包文件,目前的版本为0.85,其下载网址为http://www.soft-amis.com或者http://sourceforge.net/projects/pscs/
2.从spring官方网站上下载其所需要的二进制jar包文件.
3.新建2个java项目,一个为server端, 一个为client端, 如spring 远程接口访问及集群方案(二)中的服务端和客户端代码一样.
4.新建一个客户端的配置文件client-cluster.xml,内容如下:
<?xml verson="1.0" encoding = "uft-8"?>
<!DCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name = "_RmiEndpointFactory" class="org.softamis.cluster4spring.rmi.support.RmiEndpointFactory"/>
<bean name="REMOTE_SERVICE_CLIENT" class="org.softamis.cluster4spring.rmi.RmiUrlListProxyFactoryBean"
abstract="true">
<property name="refreshEndpointsOnConnectFailure" value="true"/>
<property name="refreshEndpointsOnStartup" value="true"/>
<property name="registerTraceInterceptor" value="true"/> <property name="switchEndpointOnFailure" value="true"/>
<property name="endpointFactory" ref="_RmiEndpointFactory"/>
<property name="endpointSelectionPolicy">
<bean class="org.softamis.cluster4spring.support.invocation.DefaultEndpointSelectionPolicy"/>
</property>
</bean>
<bean name="helloWorldServiceProxy" parent="REMOTE_SERVICE_CLIENT"> <property name="serviceInterface" value="demo.rmi.server.IHelloWorld"/>
<property name="serviceURLs">
<list>
<value>rmi://server1:1099/helloWorldService</value>
<value>rmi://server2:1099/helloWorldService</value>
<value>rmi://server3:1099/helloWorldService</value>
</list>
</property>
</bean>
使用此配置文件来运行客户端,一般情况下会提示错误信息,如:RMI lookup for bean [contextService] with interface [my.own.Interface] failed ; nested exception is java.lang.ClassCastException: java.lang.String
如果出现此错误信息,则应修改上述文件中的serviceURLs属性的配置为:
<property name=”serviceURLs”>
<list>
<bean class=”org.softamis.cluster4spring.support.ServiceMoniker”>
<constructor-arg><value>rmi://localhost:1009/helloWorldService</value></constructor-arg>
</bean>
<bean class=”org.softamis.cluster4spring.support.ServiceMoniker”><constructor-arg><value>rmi://localhost: 1009/ helloWorldService </value></constructor-arg>
</bean>
<bean class=”org.softamis.cluster4spring.support.ServiceMoniker”>
<constructor-arg><value>rmi://localhost: 1009/ helloWorldService </value></constructor-arg>
</bean>
</list>
</property>
如果有任何问题可以留言与我交流,我也好学习学习。
注意:上面的项目中如果有错误信息,请检查所引用的包有没有问题,是不是少了spring.jar, aopalliance.jar,commons-logging.jar,log4j.jar等等
分享到:
相关推荐
【基于某SpringCloud微服务系统设计方案】 微服务架构是一种分布式系统设计模式,它提倡将单一应用程序分解为一组小的服务,每个服务都在独立的进程中运行,使用轻量级通信机制(如HTTP RESTful API)。这种架构...
Hystrix是一个延迟和容错库,旨在隔离访问远程系统、服务和第三方库,停止级联失败,并提供后备选项。它提供了熔断、线程隔离、信号量隔离、超时机制、并发数限制、请求缓存、请求合并等容错功能。Hystrix通过仪表板...
【基于SpringCloud的微服务系统设计方案】 微服务架构是一种现代软件开发的方法,它提倡将单一应用程序分解为一组小的服务,每个服务都运行在独立的进程中,通过轻量级的通信机制,如HTTP RESTful API进行交互。...
《基于SpringCloud的微服务系统设计方案》 微服务架构,作为一种新型的软件开发模式,它强调将单一应用程序拆分为一组小的服务,每个服务都运行在独立的进程中,并且使用轻量级通信机制,如HTTP RESTful API。这种...
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和恢复机制、以及服务自动注册和发现。 #### 2.2 比较分析 - **服务治理**:Dubbo提供了更完善的服务治理...
- **传播安全上下文或使用Spring范围**:解释了如何确保在调用远程服务时正确传播安全上下文。 - **Hystrix指标流**:介绍了如何利用Hystrix提供的指标流功能来监控服务调用的性能。 - **Hystrix仪表板**:描述了...
【基于SpringCloud的微服务系统设计方案】 微服务架构是一种分布式系统设计风格,它提倡将单一应用程序分解为一组小的服务,每个服务独立运行在自己的进程中,通过轻量级通信机制(如HTTP API)相互通信。这种架构...
在项目中,我们可以通过Quartz来调度Dubbo接口,使得定时任务能够调用远程服务。HTTP Job则是通过HTTP请求来执行任务,这种方式更加灵活,可以调用任何暴露HTTP接口的服务。 要实现动态配置,我们需要一个用户界面...
配置中心组件中,SpringCloud Config分为Server和Client两部分,Server负责配置文件的存储及以接口形式提供配置内容,而Client则通过接口获取配置信息。Apollo则是一个功能强大的配置中心,它支持统一界面管理不同...
Hystrix是一个延迟和容错库,旨在通过添加延迟容忍和容错逻辑来隔离远程系统、服务和第三方库的访问点,从而阻止级联故障并提供回退选项。 5. **Zuul**:API网关。Zuul提供了动态路由、监控、弹性和安全性的核心特性...
- **方法**:Hystrix 是一个延迟和容错库,旨在隔离远程系统、服务和第三方库的访问点,当这些点发生故障时停止雪崩。通过在代码中创建 HystrixCommand 或 HystrixObservableCommand 实例,可以定义断路器的行为,...
- Hystrix 是一个延迟和容错库,旨在隔离远程系统、服务和第三方库的访问点,当这些点出现故障时停止它们级联失败。 - 它通过快速失败、资源隔离、超时和重试等策略来提高系统的稳定性和响应性。 - 断路器模式...
Spring Cloud Config 为微服务架构中的微服务提供了一种中心化的外部配置支持,允许将配置放到远程服务器,集中化管理集群配置。分为服务端和客户端两部分,服务端也称为分布式配置中心,它是一个独立的微服务应用,...
- 特征:所有业务逻辑、数据访问及用户交互都在同一个应用程序内实现。 - 适用场景:适用于小型项目或初期开发阶段。 - 优缺点:易于管理和调试,但难以扩展,不适用于大规模团队协作。 2. **传统项目架构**: ...
Spring Boot 实现的云应用开发工具集,它为开发人员提供了在分布式系统(如配置管理、服务发现、断路器、负载均衡、熔断机制、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话以及集群状态等...
Spring Cloud 是一套用于构建分布式系统的微服务开发工具包,它提供了微服务架构下的服务注册与发现、配置管理、API网关、智能路由、负载均衡、断路器、数据监控等一整套解决方案。Spring Cloud 的出现使得开发者...
SpringCloud是基于SpringBoot实现的一套微服务解决方案,它包含了众多子项目,用于解决在微服务架构中常见的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、...
9. **Spring Integration**:为Spring应用程序提供企业级集成功能,如消息传递、文件处理和远程调用等。 10. **Spring Cloud**:一套微服务开发工具集,为分布式系统提供服务发现、配置中心、断路器、智能路由、...
对于天气项目而言,前端展示服务可能会通过Zuul网关来访问天气数据采集服务和天气数据分析服务提供的接口,从而为用户提供完整的天气预报信息。 #### 断路器模式 在微服务架构中,一个服务通常依赖于多个下游服务,...