dubbox微服务实例及引发的“血案”
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
主要核心部件:
Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
Dubbo工作原理:

本文将通过实例进行讲解,包括入门以及和springMVC mybatis整合还有管理端的演示
部分大图直接观看不太清晰,请在图片上点击右键,选择新窗口打开

本文中有一个接口是实现了dao,和mybatis整合后进行与数据库的交互,另一个接口如上图演示的是主要想展示的多个服务提供者之间的负载均衡,均雷同,后面会提供具体的下载地址
步骤1: 定义共通接口,接口应该定义在一个单独的maven项目中(jar),这样服务提供者和消费者才能引入

和普通的jar接口一样,不解释
步骤2:实现服务提供者

服务提供者也很简单,就是实现了第一步里面定义的接口,这里很简单,就是打出一句话,以便后面区分消费者到底调用到了哪个服务提供者了。
另外,需要将服务暴露出去,所以配置文件里面的dubbox.xml就很重要了

这里需要注意的是,由于dubbox的服务注册要基于zookeeper,所以需要先启动一个,具体操作可以参考我博客的其他文章或者自行搜索。
为了区分消费者到底调用了哪个服务提供者,所以服务提供者我们至少要部署两套,所以,需要修改上面的端口,另外,实现类里面打印的文字,还是要区分下
步骤3:实现消费者

接口的调用方就很简单了,和标准的springMVC一样,这里我们是整合好了的,直接注入就可以了

这里因为要测试到底调用到了哪个服务提供者,所以我们循环调用1000次,根据打印的文字来进行区分,所以上面红色字体需要修改的地方一定要改
步骤4:启动dubbox-admin, 管理端可以查看到发布的服务以及服务的提供者有那些。(我通过源码编译获取的,稍后我会提供我打好包的下载地址)
a 将duboox-admin.war修改为ROOT.war并放在tomcat webAPp目录下,先删除掉ROOT文件夹, 然后启动

同时,启动后确认下zookeeper地址是否正确,若不正确,停止server,按下图修改好了再启动

步骤5:启动服务提供者1

看见我们的提供的接口了,因为现在还没有启动消费者这边,所以暂时没有消费者,点击任意接口进去看可以看到服务提供者的信息

注意到这里的端口,就是之前dubbo.xml里面配置的
步骤六,启动服务提供者2,如果在启动2的时候报端口被占用,那就是xml中端口没改,仔细检查下
启动后服务列表还是一样的,因为我们两个服务提供者提供的服务接口都一样,就不截图了
但是现在我们每个接口都有两个提供者了,理论上点进任意接口后有两个实现,并且端口还不一样 是不是?

如上图,和我们预期是一样的。
步骤7:启动消费者
启动消费者后我们在admin服务首页看,注意看重点,不要看这里的文字 红色圈起来的

最开始是没有消费者,现在变为了正常了
步骤8:启动消费者,进行测试,看看打印的log吧, 如果不是两个server信息,那就再仔细检查吧

另外可以在admin里面配置负载均衡机制再试试,

说说由此引发的"血案":
之前的web项目,为了提高并行处理能力,除了代码优化外,一般都是部署了多套,前端通过nginx等负载均衡机制进行分发。
接触dubbox自己经过思考认为:
提供给web端的Controller层业务逻辑相对简单,占用的处理时间及资源相对较少,主要的处理逻辑在service层以及dao数据交互层
如果将controller层单独分离出来供用户直接访问, service和Dao一同作为服务部署多套,如果处理服务层的机器已经很吃力,则可以动态的增加服务节点来进行分担。
这样 controller层代码就可以减少很多部署资源,主要的在后端service和dao了。
然后“血案”就来了, 我正尝试着将现有项目进行拆分,通过压力测试来验证我的设想。。。。。。
dubbox微服务实例及引发的“血案”的更多相关文章
- consul客户端配置微服务实例名称和ID
consul客户端必须配置微服务实例名称和ID,微服务启动的时候需要将名称和ID注册到注册中心,后续微服务之间调用也需要用到. 名称可以通过以下两种方式配置,优先级从高到低.两个都不配置则默认服务名称 ...
- 微服务实战(二):使用API Gateway--转
原文地址:http://dockone.io/article/482 [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选 ...
- 微服务实战(二):使用API Gateway
微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...
- 【SpringCloud微服务实战学习系列】服务治理Spring Cloud Eureka
Spring Cloud Eureka是Spring Cloud Netflix微服务中的一部分,它基于NetFlix Sureka做了二次封装,主要负责完成微服务架构中的服务治理功能. 一.服务治理 ...
- 微服务实战-使用API Gateway
当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互.在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点.在微服务架构中,每一个微服务暴露一组细粒度的服务提供点.在本篇文章中,我 ...
- SpringCloud微服务实战——第三章服务治理
Spring Cloud Eureka 服务治理 是微服务架构中最核心最基本的模块.用于实现各个微服务实例的自动化注册与发现. 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中 ...
- 微服务实战(二):使用API Gateway - DockOne.io
原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ...
- 一个无锁消息队列引发的血案(六)——RingQueue(中) 休眠的艺术 [续]
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
随机推荐
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- PowerShell实现批量重命名文件
[string]$FileName="E:\test11" #-------------------------------------- Clear-Host foreach($ ...
- 深入理解BFC
定义 在解释BFC之前,先说一下文档流.我们常说的文档流其实分为定位流.浮动流和普通流三种.而普通流其实就是指BFC中的FC.FC是formatting context的首字母缩写,直译过来是格式化上 ...
- lua 学习笔记(1)
一.lua函数赋值与函数调用 在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...
- C#多线程之线程同步篇1
在多线程(线程同步)中,我们将学习多线程中操作共享资源的技术,学习到的知识点如下所示: 执行基本的原子操作 使用Mutex构造 使用SemaphoreSlim构造 使用AutoResetEvent构造 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- H5程序员如何利用cordova开发跨平台应用
什么是Cordova? Cordova以前也叫PhoneGap,它提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还 ...
- 阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
(原创出处为本博客,http://www.cnblogs.com/linguanh/) 目录: 一,下载 二,解压 三,配置与启动 四,测试 Redis 五,配置 phpRedis 扩展 六,综合测试 ...
- 设计模式之创建类模式大PK
创建类模式大PK 创建类模式包括工厂方法模式.建造者模式.抽象工厂模式.单例模式和原型模式,他们能够提供对象的创建和管理职责.其 ...
- CSS 3学习——文本效果和@font-face
文本效果 关于文本效果,这里仅仅记录得到大多数浏览器支持的几个属性,分别是: text-overflow text-shadow word-break word-wrap text-overflow ...