博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Dubbo框架构建分布式服务(二)
阅读量:7092 次
发布时间:2019-06-28

本文共 5643 字,大约阅读时间需要 18 分钟。

classpath*:jedis.properties

上面配置中,使用dubbo协议,集群容错模式为failover,服务级别负载均衡策略为random,方法级别负载均衡策略为roundrobin(它覆盖了服务级别的配置内容),其他一些配置内容可以参考Dubbo文档。我们这里是从Redis读取数据,所以使用了Redis连接池。启动服务示例代码如下所示:

package org.shirdrn.dubbo.provider;import org.shirdrn.dubbo.provider.common.DubboServer;public class ChatRoomClusterServer {     public static void main(String[] args) throws Exception {          DubboServer.startServer("classpath:provider-cluster.xml");     }}

上面调用了DubboServer类的静态方法startServer,如下所示:

public static void startServer(String config) {          ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(config);          try {               context.start();               System.in.read();          } catch (IOException e) {               e.printStackTrace();          } finally {               context.close();          }     }

方法中主要是初始化Spring IoC容器,全部对象都交由容器来管理。 

  • ●服务消费方

服务消费方就容易了,只需要知道注册中心地址,并引用服务提供方提供的接口,消费方调用服务实现如下所示:

package org.shirdrn.dubbo.consumer;import java.util.Arrays;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.shirdrn.dubbo.api.ChatRoomOnlineUserCounterService;import org.springframework.context.support.AbstractXmlApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ChatRoomDubboConsumer {     private static final Log LOG = LogFactory.getLog(ChatRoomDubboConsumer.class);         public static void main(String[] args) throws Exception {          AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:consumer.xml");          try {               context.start();               ChatRoomOnlineUserCounterService chatRoomOnlineUserCounterService = (ChatRoomOnlineUserCounterService)  context.getBean("chatRoomOnlineUserCounterService");                        getMaxOnlineUserCount(chatRoomOnlineUserCounterService);                             getRealtimeOnlineUserCount(chatRoomOnlineUserCounterService);                             System.in.read();          } finally {               context.close();          }              }     private static void getMaxOnlineUserCount(ChatRoomOnlineUserCounterService liveRoomOnlineUserCountService) {          List
maxUserCounts = liveRoomOnlineUserCountService.getMaxOnlineUserCount( Arrays.asList(new String[] {"1482178010" , "1408492761", "1430546839", "1412517075", "1435861734"}), "20150327", "yyyyMMdd"); LOG.info("After getMaxOnlineUserCount invoked: maxUserCounts= " + maxUserCounts); } private static void getRealtimeOnlineUserCount(ChatRoomOnlineUserCounterService liveRoomOnlineUserCountService) throws InterruptedException { String rooms = "1482178010,1408492761,1430546839,1412517075,1435861734"; String onlineUserCounts = liveRoomOnlineUserCountService.queryRoomUserCount(rooms); LOG.info("After queryRoomUserCount invoked: onlineUserCounts= " + onlineUserCounts); }}

 

对应的配置文件为consumer.xml,内容如下所示:

 

也可以根据需要配置dubbo:reference相关的属性值,也可以配置dubbo:method指定调用的方法的配置信息,详细配置属性可以参考Dubbo官方文档。

  • ●部署与验证

开发完成提供方服务后,在本地开发调试的时候可以怎么简单怎么做,如果是要部署到生产环境,则需要打包后进行部署,可以参考下面的Maven POM配置:

   
org.apache.maven.plugins
maven-shade-plugin
1.4
true
package
shade
org.shirdrn.dubbo.provider.ChatRoomClusterServer

这里也给出Maven POM依赖的简单配置:

org.shirdrn.dubbo
dubbo-api
0.0.1-SNAPSHOT

我们开发的服务应该是分布式的,首先是通过配置内容来决定,例如设置集群模式、设置负载均衡模式等,然后在部署的时候,可以在多个节点上同一个服务,这样多个服务都会注册到Dubbo注册中心,如果某个节点上的服务不可用了,可以根据我们配置的策略来选择其他节点上的可用服务,后面通过Dubbo服务管理中心和监控中心就能更加清楚明了。 

Dubbo服务管理与监控

我们需要在安装好管理中心和监控中心以后,再将上面的开发的提供方服务部署到物理节点上,然后就能够通过管理中心和监控中心来查看对应的详细情况。

  • ●Dubbo服务管理中心

安装Dubbo服务管理中心,需要选择一个Web容器,我们使用Tomcat服务器。首先下载Dubbo管理中心安装文件dubbo-admin-2.5.3.war,或者直接从源码构建得到该WAR文件。这里,我们已经构建好对应的WAR文件,然后进行安装,执行如下命令:

cd apache-tomcat-6.0.35rm -rf webapps/ROOTunzip ~/dubbo-admin-2.5.3.war -d webapps/ROOT
修改配置文件~/apache-tomcat-6.0.35/webapps/ROOT/WEB-INF/dubbo.properties,指定我们的注册中心地址以及登录密码,内容如下所示:
dubbo.registry.address=zookeeper://zk1:2181?backup=zk2:2181,zk3:2181dubbo.admin.root.password=rootdubbo.admin.guest.password=guest

然后,根据需要修改~/apache-tomcat-6.0.35/conf/server.xml配置文件,主要是Tomcat HTTP 端口号(我这里使用8083端口),完成后可以直接启动Tomcat服务器:

cd ~/apache-tomcat-6.0.35/bin/catalina.sh start

然后访问地址 http://10.10.4.130:8083/ 即可,根据配置文件指定的root用户密码,就可以登录Dubbo管理控制台。

转载地址:http://suiql.baihongyu.com/

你可能感兴趣的文章
Python-类属性与对象属性之间的关系
查看>>
JavaScript 函数参数传递到底是值传递还是引用传递
查看>>
LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium...
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
转 用 Chrome 运行Android应用
查看>>
编程心得--不积跬步无以至千里
查看>>
thinkphp学习笔记8—命名空间
查看>>
在项目中几个需要学习的知识
查看>>
验证码安全问题汇总
查看>>
LINK : fatal error LNK1104
查看>>
WPF动态加载3D 放大-旋转-平移
查看>>
大型企业的渗透思路
查看>>
strace命令(收集整理,常看常新)
查看>>
Eclipse Console 加大显示的行数和禁止错误弹出
查看>>
$(document).height()与$(window).height()区别
查看>>
oracle字符集与客户端
查看>>
java线:辛格尔顿隐藏ThreadLocal实现线程数据共享
查看>>
MassTransit RabbitMQ 参考文档
查看>>
android 49 广播接收者中启动其他组件
查看>>
MySQL索引原理及慢查询优化
查看>>