自己还是一个新手,就是想将学习到的东西记录下来,如果写错了还望见谅与纠正。
webservice
先说说webservice,在开发中,对于同一个war包中的对象方法我们可以直接调用,但是很多情况下需要在不同项目或者不同服务器进行相互调用。webservice技术就是实现不同服务器项目直接的调用和交换数据,即使语言,协议,部署环境不同也可以实现。
webservice实现远程调用的步骤分三部(三次握手)
1.请求获取服务对象
2.返回服务对象
3.调用服务对象方法
webservice缺点
传统的webservice实现远程调用的方法耦合性较高,web层与服务层直接请求,在请求服务层获取服务对象的过程中,如果服务层因多种原因如网络延迟、请求过多出现迟迟没有返回对象,就会造成请求延迟。解决方案就是使用第三方也就是dubbo服务治理中间件实现解耦和。
dubbo+zookeper
dubbo服务治理中间件是在soa分布式面向服务项目中用来作为服务远程调用的中间件,它加上zookeper注册中心实现整个分布式项目服务的发布注册和调用功能,核心思想就是实现解耦和。
dubbo的主要功能
1.RPC远程调用,类似webservice,底层原理是hessian
2.使用NIO 也就是newIO,底层实现原理为netty
IO与NIO的区别
1.IO为直接进行数据连接,占用资源较大
2.NIO指的是异步通讯,通过缓存进行数据交互,也实现了解耦
zookeper的作用
1.作为注册中心注册服务对象
2.注册后的对象以URL的形式存储在zookeper中
在分布式项目中使用dubbo+zookeper实现远程调用的大概步骤如下
1.项目启动(先启动服务层),服务容器如toncat容器、spring容器启动会自动将服务注册到zookeper中,
2.web层消费(订阅)服务,
3.dubbo返回给消费者服务对象
4.消费者消费调用服务对象方法
在dubbo中提供了一个monitor监控中心用于统计服务的调用和调用时间。它是阿里提供的一个已经开发好的项目war包,只需要部署到toncat中运行就能自动监控zookeper的服务调用。
扩展
考虑到互联网项目的实际要求,提高项目的高可用和容错性,可以对zookeper进行集群部署,同时,因为zookeper保持服务对象的形式为URL字符串,可以在dubbo和zookeper之间加入redis缓存URL,进一步提高容错性。