`
dick1305
  • 浏览: 17738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微服务学习(2)-微服务框架实现-Dubbo简介

阅读更多
一、微服务实现框架
   当前随着微服务的应用,越来越多的商用公司和开源团体开发微服务的实现框架。主要有:

1)Dubbo
   Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

      由于该框架由于资料文档较多,并且经过阿里内部系统、其他公司大量验证,对于国内开发人员来说是学习和实现微服务首选框架。

2)Spring Cloud
     Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    该框架中最为出名的便是Spring Cloud Netflix 微服务框架。从项目的背景来看,Dubbo 国内用的公司挺多,国内影响力大,Spring Cloud 自然在国外影响力较大,所以这个来看不分伯仲了,毕竟都有大公司在使用。

3)Dubbox
Dubbox是当当网扩展了Dubbo,

dubbx是当当网对原阿里dubbo2.x的升级,并且兼容原有的dubbox。其中升级了zookeeper和spring版本,并且支持restfull风格的远程调用。

dubbox git地址:https://github.com/dangdangdotcom/dubbox

dubbox 关于restfull的介绍:http://dangdangdotcom.github.io/dubbox/rest.html

--------------------------------------------------------------------------------------------------------------------------------------------

dubbox的新特性介绍:

支持REST风格远程调用(HTTP + JSON/XML):基于非常成熟的JBossRestEasy框 架,在dubbo中实现了REST风格(HTTP + JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的Open API、无线API甚至AJAX服务端等等的开发。事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST调用也达到了比较高的性能,在基准测试下,HTTP + JSON与Dubbo 2.x默认的RPC协议(即TCP + Hessian2二进制序列化)之间只有1.5倍左右的差距,详见文档中的基准测试报告。

支持基于Kryo和FST的Java高效序列化实现:基于当今比较知名的Kryo和FST高性能序列化库,为Dubbo默认的RPC协议添加新的序列化实现,并优化调整了其序列化体系,比较显著的提高了Dubbo RPC的性能,详见文档中的基准测试报告。

支持基于Jackson的JSON序列化:基于业界应用最广泛的Jackson序列化库,为Dubbo默认的RPC协议添加新的JSON序列化实现。

支持基于嵌入式Tomcat的HTTP remoting体系:基于嵌入式tomcat实现dubbo 的HTTP remoting体系(即dubbo-remoting-http),用以逐步取代Dubbo中旧版本的嵌入式Jetty,可以显著的提高REST等的远 程调用性能,并将Servlet API的支持从2.5升级到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等协议都基于这个HTTP remoting体系)。

升级Spring:将dubbo中Spring由2.x升级到目前最常用的3.x版本,减少版本冲突带来的麻烦。

升级ZooKeeper客户端:将dubbo中的zookeeper客户端升级到最新的版本,以修正老版本中包含的bug。

支持完全基于Java代码的Dubbo配置:基于Spring的Java Config,实现完全无XML的纯Java代码方式来配置dubbo

调整Demo应用:暂时将dubbo的demo应用调整并改写以主要演示REST功能、Dubbo协议的新序列化方式、基于Java代码的Spring配置等等。

修正了dubbo的bug包括配置、序列化、管理界面等等的bug。

注:dubbox和dubbo 2.x是兼容的,没有改变dubbo的任何已有的功能和配置方式(除了升级了spring之类的版本)

4)ServiceComb框架


     该框架是华为的HWCloud在6月发布开源的一款微服务框架,基于Go/YAML进行配置,部署特别快,源码量也小,可以轻松地在一台机子上分析与断点。详细参考http://www.jianshu.com/p/ba432eae0a8f

二.Dubbo简介
1)Dubbo的框架




上面从Dubbo官网直接拿来,看一下基于RPC层,服务提供方和服务消费方之间的调用关系。
Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次数和调用时间的监控中心。

调用流程
0.服务容器负责启动,加载,运行服务提供者。

1.服务提供者在启动时,向注册中心注册自己提供的服务。

2.服务消费者在启动时,向注册中心订阅自己所需的服务。

3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

2)Dubbo的注册中心
     注册中心需要服务的提供者和消费者在启动和停止时自动注册,消费者在选择提供者也先通过在注册中心根据集群的选择策略来确定服务者。Dubbo的注册中心支持Zookeeper注册中心、Multicast注册中心、Redis注册中心等。其中,Zookeeper使用较为普遍。

3)Dubbo项目
Dubbo项目可以在  http://dubbo.io/  下载,目前版本是2.5.8。目录结构如下图:




可以通过Dubbo的代码(使用Maven管理)组织,与上面的模块进行比较。简单说明各个包的情况:

dubbo-common 公共逻辑模块,包括Util类和通用模型。

dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。

dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。

dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡、容错、路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。

dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。

dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。

dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。

dubbo-container 容器模块,是一个Standalone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。

参考地址:http://blog.csdn.net/noaman_wgs/article/details/70214612

http://dubbo.io/

http://www.jianshu.com/p/ba432eae0a8f

http://shiyanjun.cn/archives/325.html
  • 大小: 33.7 KB
  • 大小: 34.9 KB
分享到:
评论

相关推荐

    基于SpringCloud的微服务实战案例-基于Dubbo的微服务开发基础框架

    Dubbo是一款高性能、轻量级的微服务框架,专注于服务治理和RPC远程调用,特别适合构建大型分布式系统。 **2.1 Dubbo简介** Dubbo采用了服务提供者/消费者模型,提供了一套完整的微服务解决方案,包括服务注册与...

    基于SpringBoot+Dubbo的微服务框架-SpringBoot-Dubbo-Docker-Jenkins.zip

    【标题】: "基于SpringBoot+Dubbo的微服务框架-SpringBoot-Dubbo-Docker-Jenkins.zip" 提供了一个综合的微服务开发解决方案,结合了SpringBoot、Dubbo、Docker和Jenkins四个核心组件。这四个技术在现代IT行业中扮演...

    incubator-dubbo-dubbo-2.5.8

    【标题】"incubator-dubbo-dubbo-2.5.8" 是一个基于Java的开源服务框架,由Apache孵化器项目提供。这个版本是Dubbo的2.5.8稳定版,它包含了Dubbo的核心服务治理功能以及一个专门的管理平台——dubbo-admin。 【描述...

    incubator-dubbo-dubbo-2.6.1

    【标题】"incubator-dubbo-dubbo-2.6.1" 是一个Apache Incubator项目Dubbo的特定版本,这里的2.6.1表示该版本是Dubbo的稳定分支之一。 【描述】提到的"incubator-dubbo-dubbo-2.6.1"表明这是Apache孵化器中的Dubbo...

    incubator-dubbo-ops-master.rar

    - **微服务治理**:在微服务架构中,Dubbo-OPS Master可以帮助管理员有效地管理和监控各个服务,确保服务的稳定性和性能。 - **故障排查**:当系统出现问题时,通过Dubbo-Monitor-Simple的监控数据,可以迅速定位...

    毕业设计&课设_整合微服务框架SpringBoot-Dubbo-Docker-Jenkins.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    dubbo-admin-2.5.4.war

    2. **服务治理**:Dubbo-admin 提供的服务治理功能包括服务注册与发现、服务配置管理、服务元数据展示、服务调用链路追踪、健康检查、性能监控等,这些都是微服务架构中不可或缺的部分。 3. **服务提供者(Provider...

    dubbo-dubbo-2.7.8.zip

    5. **微服务生态整合**:与Spring Cloud、 Istio等微服务框架的集成更加紧密,提供了更多的选择。 四、实战应用 在实际项目中,我们可以利用Dubbo构建微服务架构,实现服务拆分,提高系统的可维护性和扩展性。例如...

    alibaba-dubbo-dubbo-2.5.7-0-ge2d63ad.tar.gz

    总之,通过深入研究"alibaba-dubbo-dubbo-2.5.7-0-ge2d63ad.tar.gz"这个压缩包,开发者可以掌握Dubbo的核心技术,提升分布式服务架构的设计和实现能力,对于构建高可用、高性能的企业级微服务系统具有重要价值。

    dubbo-admin包

    【标题】"dubbo-admin包"是Dubbo框架的一个重要组成部分,主要用作服务治理的管理界面。这个压缩包包含了运行Dubbo管理控制台所需的所有文件,使得开发者和运维人员可以方便地监控、管理和配置Dubbo服务。 【描述】...

    tomcat-dubbo里包含dubbo-admin

    2. **Dubbo-Admin**:Dubbo-Admin是一个可视化的服务管理工具,用于展示和管理Dubbo服务。它可以帮助开发者监控服务的元数据、服务调用、服务健康状况等,提供了如查看服务提供者列表、调用链路追踪、服务状态监控、...

    springboot2.0.x+dubbo-spring-boot-starter

    标题 "springboot2.0.x+dubbo-spring-boot-starter" 涉及的是将流行的微服务框架 Dubbo 集成到 Spring Boot 2.0.x 的项目实践中。这个集成使得开发者能够利用 Spring Boot 的便利性和 Dubbo 的高性能远程服务调用...

    dubbo-dubbo-2.5.10.zip

    在这个老版本中,学习和研究 Dubbo-2.5.10 可以帮助我们理解早期分布式服务治理的理念和技术实现,比如: - **服务提供者(Provider)**:定义服务,暴露服务,让其他服务消费者可以调用。 - **服务消费者...

    微服务 spring dubbo项目:dubbo rpc;druid数-spring-dubbo-service.zip

    druid数-spring-dubbo-service.zip" 这个标题表明我们正在处理一个基于Spring和Dubbo框架的微服务项目,其中涉及到Dubbo的远程过程调用(RPC)机制。此外,提到了“druid数”,这通常指的是Druid数据源,它是一个...

    dubbo-demo2

    【标题】"dubbo-demo2" 是一个基于Apache Dubbo框架构建的服务提供者示例,它的主要作用是对外提供dubbo-user-provider服务。这个服务在分布式系统中扮演着核心角色,允许外部应用或者系统通过Dubbo接口进行调用,...

    dubbo-admin

    【标题】"dubbo-admin" 是一款基于 Dubbo 框架开发的管理控制台,主要用于监控和服务治理。...用户自行编译并成功运行 dubbo-admin 的过程,体现了对微服务运维的理解和实践,也展示了对 Dubbo 框架的深入学习和掌握。

    dubbo-admin-2.6.0下载

    2. **Dubbo-admin作用**:dubbo-admin是一个基于Web的UI工具,可以查看服务提供者和服务消费者的详细信息,如服务列表、服务接口、调用统计、消费者列表等,便于运维人员监控服务状态,及时发现问题。 3. **Apache ...

    dubbo-admin 2.5.3源码编译,alibaba-dubbo-dependency和opensesame类库

    通过以上步骤,你可以成功编译 `dubbo-admin 2.5.3` 并将它与阿里巴巴的 Dubbo 依赖库和 `OpenSesame` 安全框架集成。在实际开发过程中,理解这些组件的工作原理和配置方法对于优化分布式系统的性能和安全性至关重要...

    dubbo微服务实战-博客系统源码

    在本项目中,"dubbo微服务实战-博客系统源码"是一个涵盖了多个技术栈的实战项目,旨在帮助开发者理解并掌握如何构建基于Dubbo和Zookeeper的微服务架构,并结合Spring与Redis Sentinel来实现高可用的缓存系统。...

    dubbo资源 dubbo-admin dubbo demo

    2. **Dubbo-admin**: 这是Dubbo的服务治理控制台,它可以帮助开发者监控服务的运行状态,查看服务提供者和消费者的信息,进行服务的启停操作,以及配置动态调整。此外,还可以通过Dubbo-admin进行故障排查,查看调用...

Global site tag (gtag.js) - Google Analytics