ITKeyword,专注技术干货聚合推荐

注册 | 登录

JFinal 中使用 Dubbo —— 3 集群

maguanghui_2012 分享于 2016-02-14

推荐:集群环境中使用EhCache缓存

简介: EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。本文充分的介绍了 EhCache 缓存系统对集群环境

 很多人认为,既然有了JFinal,为什么还要Spring。殊不知一些基于Spring的很牛X的东东集成到JFinal中能够事半功倍。比如Dubbo这个高性能优秀的服务框架,它基于Spring,于是JFinal提供的Spring插件就能更方便地将Dubbo集成进咱们的程序中,成为高大上的程序…

目录[-]

  • 1. 集群
  • 1.1. 部署结构
  • 1.2. 部署Dubbo管理控制台
  • 1.3. 启动Cunsumer和多个Provider
  • 1.4. 问题及解决方案
  • 1.4.1. 多网卡问题
  • 1. 集群

    1.1. 部署结构

    下面是一个简单的Cunsumer端服务器和Provider端服务器分别集群的部署图:

    在个人开发机上,实现Cunsumer端服务器集群难以实现,所以此Demo中只实现Provider端服务器集群,Cunsumer端服务器集群请读者在有条件的情况下自行实践。

    1.2. 部署Dubbo管理控制台

    Dubbo管理控制台的部署相当简单,由于开发机是Windows 7系统,所以此处也只介绍Windows环境下的部署过程。

    具体步骤如下:

    • 独立出一个Tomcat环境,将“dubbo-admin-2.5.3.war”(文件放在JFinalDubboDemoApi项目)中所有的文件解压到新Tomcat的“webapps\ROOT”下(原ROOT文件夹下的所有文件都要删除)。

    • 编辑“webapps\ROOT\WEB-INF\dubbo.properties”文件。

    dubbo.registry.address=multicast://224.5.6.7:2181

    dubbo.admin.root.password=root

    dubbo.admin.guest.password=guest

    修改第一个配置项就好,设置的值要与consumer.xml和provider.xml中“dubbo:registry”标签的“address”值相同。后面两行分别是root用户和guest用户的密码。

    提示,可以是Redis、Dubbo、MultiCat、ZooKeeper之间的一种。

    • 启动控制台

      执行Tomcat.bat。

    1.3. 启动Cunsumer和多个Provider

    • 首先按前面非集群的方式分别启动Cunsumer和Provider端的Tomcat。

    注意:加上Dubbo管理控制台就是3个Tomcat实例被启动,不要让端口冲突。

    • 用一般Java应用方式启动多个Provider。

    到了这里,Provider中创建启动类的作用就显现出来了。修改provider.xml中“dubbo:protocol”的“port”属性为“20881”(一定要确保修改后立即保存),右键点击“DemoProviderApp.java”,以“Run As – Java Application”方式启动Provider。

     

    重复上面,再次修改“port”属性为“20882”(再加1),启动Provider。

    打开Java控制台,可以看到,2个Tomcat应用和2个一般Java应用在运行:

     

    再修改,再启动。。。。。。随读者意,只要电脑能承受即可。

    • 访问Dubbo管理控制台

    浏览器中打开“http://192.168.1.100:8080/”,输入用户名和密码均为“root”后,进入主页面:

     

    • 查看提供者、消费者

    点击主页中的菜单:

     

    进入提供者信息页:

    可以看到3个提供者,它们的端口与启动配置相同。读者自行点击消费者页面,这里就不再浪费篇幅了。

    • Provider的集群配置

    点击“负载均衡 - 新增”:

    在打开的页面中如下配置:

     

    完成后可看到一条负载均衡配置:

     

    细心的读者可能就已经发现了,负载均衡配置居然是细到每个接口上的。没错,Dubbo是不亚于Spring一类的存在,它有太多强大的东东没有在此文中出现,等待各位去发掘。

    我们回头再来看看Dubbo存在的背景,瞬间再次觉得高大上啊~~~:

    随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

    ·单一应用架构

    · 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

    · 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

    · 垂直应用架构

    · 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

    · 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

    · 分布式服务架构

    · 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

    · 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

    · 流动计算架构

    · 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

    · 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

    Ø 验证负载均衡

    验证就简单了,在JFinal Demo的Blog List页面中,频繁刷新。可以看到,每个Provider服务都在刷新3次时出现操作Sql,说明轮询方式的负载均衡策略已经起作用了。读者可切换不同的负载均衡策略再试试看效果,条件好的还可用测试工具测试下性能,那感觉,一定爽。

     

    在provider中通过配置方法也可以实现集群,而不用在Dubbo管理控制台中手动设置,此问题就留给读者自己摸索。笔者就不再教了,授人以鱼不如授人以渔,瞬间觉得自己好高大。。。。。。

    1.4. 问题及解决方案

    1.4.1. 多网卡问题

    笔者的开发机多网卡时上遇到了问题,因为装了VMWare,所以有了虚拟网卡,在使用集群时,被IP不正确的问题搞得灰头土脸。

    不打算在这里说明如何解决,因为不要期待他人帮你解决所有问题,很多问题得靠自己。。。。。。(好吧,笔者承认真实原因是不想打字了)

    源码地址:

    JFinalDubboDemoApi.zip

    JFinalDubboDemoConsumer.zip

    JFinalDubboDemoProvider.zip

    

    推荐:Java for Web学习笔记(二十):Session(4)在集群中使用Session

    在集群中使用session Sticky Sessions 在集群的情况下,可以采用保证同一个seesion都到同一个web container中处理的方式,即sticky sessions,有不同方式,例如l

    很多人认为,既然有了JFinal,为什么还要Spring。殊不知一些基于Spring的很牛X的东东集成到JFinal中能够事半功倍。比如Dubbo这个高性能优秀的服务框架,它基于Spring,于是JFinal提供的Spri

    相关阅读排行


    用户评论

    游客

    相关内容推荐

    最新文章

    ×

    ×

    请激活账号

    为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

    您的注册邮箱: 修改

    重新发送激活邮件 进入我的邮箱

    如果您没有收到激活邮件,请注意检查垃圾箱。