加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Netty 拭魅战:怎样编写一个麻小俱全的 Web 框架

发布时间:2019-02-20 12:51:18 所属栏目:建站 来源:逅弈
导读:进修 Netty 也有一段时刻了,为了更好的把握 Netty,我手动造了个轮子,一个基于 Netty 的 web 框架:redant,中文叫红火蚁。建设这个项目标目标首要是进修行使 Netty,俗话说不要等闲的造轮子,可是通过造轮子我们可以学到许多优越开源框架的计划思绪,编

今朝拦截器还没有实现指定次序执行的成果,着实也很简朴,可以界说一个 @InterceptorOrder 的注解应用在全部的拦截器的实现类上,扫描到拦截器的功效之后,按照该注解举办排序,然后把拍完序之后的功效添加到 pipeline 中即可。

集群模式

到今朝为止,我描写的都是单节点模式,假如哪一天单节点的机能无法满意了,那就必要行使集群了,以是我也实现了集群模式。

集群模式是由一个主节点和多少个从节点组成的。主节点吸取到哀求后,将哀求转发给从节点来处理赏罚,从节点把处理赏罚好的功效返回给主节点,由主节点把功效相应给哀求。

要想实现集群模式必要有一个处事注册和发明的成果,今朝是借助于 Zk 来做的处事注册与发明。

筹备一个 Zk 处事端

由于主节点必要把哀求转发给从节点,以是主节点必要知道今朝有哪些从节点,我通过 ZooKeeper 来实现处事注册与发明。

假如你没有可用的 Zk 处事端的话,那你可以通过运行下面的 Main 要领来启动一个 ZooKeeper 处事端:

  1. public final class ZkBootstrap { 
  2.     private static final Logger LOGGER = LoggerFactory.getLogger(ZkBootstrap.class); 
  3.  
  4.     public static void main(String[] args) { 
  5.         try { 
  6.             ZkServer zkServer = new ZkServer(); 
  7.             zkServer.startStandalone(ZkConfig.DEFAULT); 
  8.         }catch (Exception e){ 
  9.             LOGGER.error("ZkBootstrap start failed,cause:",e); 
  10.             System.exit(1); 
  11.         } 
  12.     } 

这样你就可以在后头启动主从节点的时辰行使这个 Zk 了。可是这并不是必需的,假如你已经有一个正在运行的 Zk 的处事端,那么你可以在启动主从节点的时辰直接行使它,通过在 main 要领的参数中指定 Zk 的地点即可。

启动主节点

只必要运行下面的代码,就可以启动一个主节点了:

  1. public class MasterServerBootstrap { 
  2.     public static void main(String[] args) { 
  3.         String zkAddress = ZkServer.getZkAddressArgs(args,ZkConfig.DEFAULT); 
  4.  
  5.         // 启动MasterServer 
  6.         Server masterServer = new MasterServer(zkAddress); 
  7.         masterServer.preStart(); 
  8.         masterServer.start(); 
  9.     } 

假如在 main 要领的参数中指定了 Zk 的地点,就通过该地点去举办处事发明,不然会行使默认的 Zk 地点。

启动从节点

只必要运行下面的代码,就可以启动一个从节点了:

  1. public class SlaveServerBootstrap { 
  2.  
  3.     public static void main(String[] args) { 
  4.         String zkAddress = ZkServer.getZkAddressArgs(args,ZkConfig.DEFAULT); 
  5.         Node node = Node.getNodeWithArgs(args); 
  6.  
  7.         // 启动SlaveServer 
  8.         Server slaveServer = new SlaveServer(zkAddress,node); 
  9.         slaveServer.preStart(); 
  10.         slaveServer.start(); 
  11.     } 
  12.  

假如在 main 要领的参数中指定了 Zk 的地点,就通过该地点去举办处事注册,不然会行使默认的 Zk 地点。

现实上多节点模式详细的处理赏罚逻辑照旧复用了单节点模式的焦点成果,只拭浇榄本一台实例扩展到多台实例罢了。

总结

本文通过先容一个基于 Netty 的 web 容器,让我们相识了一个 http 处事端的或许的组成,虽然实现中也许有越发好的要领。可是首要的照旧要相识内涵的头脑,包罗 Netty 的一些根基的行使要领。

我会继承优化该项目,插手更多的特征,譬喻处事发明与注册当前是通过 Zk 来实现的,将来也许会引入其他的组件去实现处事注册与发明。

除此之外,Session 的打点还未完全实现,后续也必要对这一块举办完美。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读