zoukankan      html  css  js  c++  java
  • Dubbo

    1. 什么是Dubbo:

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

      Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

    2. 背景:

      随着Internet的快速发展,Web应用程序的规模不断扩大,最后我们发现传统的垂直体系结构(整体式)已无法解决。分布式服务体系结构和流计算体系结构势在必行,迫切需要一个治理系统来确保体系结构的有序发展。

    整体架构

    当流量非常低时,只有一个应用程序,所有功能都一​​起部署以减少部署节点和成本。在这一点上,数据访问框架(ORM)是简化CRUD工作量的关键。

    垂直架构

    当流量增加时,添加单片应用程序实例不能很好地加速访问,提高效率的一种方法是将单片应用程序拆分为离散的应用程序。在这一点上,用于加速前端页面开发的Web框架(MVC)是关键。

    分布式服务架构

    当垂直应用程序越来越多时,应用程序之间的交互是不可避免的,一些核心业务被提取并作为独立的服务提供服务,逐渐形成一个稳定的服务中心,这样前端应用程序就可以更好地响应变化多端的市场需求。很快。此时,用于业务重用和集成的分布式服务框架(RPC)是关键。

    流计算架构

    当服务越来越多时,容量评估变得困难,而且小规模的服务也经常造成资源浪费。为了解决这些问题,应添加调度中心,以根据流量管理集群容量并提高集群利用率。目前,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

    3. 架构图:

    节点角色简介:

    • Provider:暴露服务的服务提供者
    • Consumer:调用服务的服务消费者
    • Registry:服务注册中心,负责服务发现和配置
    • Monitor:服务监控中心,统计服务调用的数量和耗时
    • Container:服务运行容器,管理服务的生命周期

    服务关系:

    • Container负责启动,加载和运行服务Provider。
    • ProviderRegister在启动时向其注册服务。
    • Consumer从Register启动时开始订阅所需的服务。
    • Register将Providers列表返回Consumer,当它更改时,Register将Consumer通过长连接将更改的数据推送到。
    • Consumer和Provider根据软负载平衡算法选择s 之一并执行调用,如果失败,它将选择另一个Provider。
    • 两者Consumer和Provider都会计算内存中调用服务的次数和耗时,并将统计信息发送到Monitor每分钟。

    4. 特点

    连接性

    • Register负责注册和搜索服务地址(例如目录服务),Provider并且Consumer仅在启动期间与注册表交互,并且注册表不转发请求,因此压力较小
    • “监视器”负责计算服务调用的数量和耗时,统计信息将首先在Provider和Consumer的内存中汇总,然后发送到Monitor
    • “提供商”将服务注册到“注册”,并将耗时的统计信息(不包括网络开销)报告给“监控器”“消费者”从中获取服务提供商的地址列表,Registry根据LB算法直接致电提供商,向上报耗时的统计信息Monitor,其中包括网络开销
    • 之间的连接Register,Provider并且Consumer是长连接,Moniter是一个例外
    • Register,Provider通过长连接意识到存在,当断开连接时Provider,Register会将事件推送到Consumer
    • 它不影响已经运行的实例Provider和Consumer甚至所有Register和Monitor趴下,因为Consumer得到的缓存Provider上榜
    • Register并且Monitor是可选的,Consumer可以Provider直接连接

    坚固性

    • Monitor的停机时间不会影响使用情况,只会丢失一些采样数据
    • 当数据库服务器出现故障时,Register可以通过检查其缓存将服务Provider列表返回到Consumer其中,但是新服务器Provider无法注册任何服务
    • Register 是一个对等集群,当任何实例出现故障时,它将自动切换到另一个集群
    • 即使所有Register实例都发生故障,Provider并且Consumer仍然可以通过检查其本地缓存来进行通信
    • 服务Provider是无状态的,一个实例的停机时间不会影响使用情况
    • Provider一个服务的所有s故障后,Consumer无法使用该服务,并无限地重新连接以等待服务Provider恢复

    可扩展性

    • Register 是一个可以动态增加其实例的对等群集,所有客户端将自动发现新实例。
    • Provider是无状态的,它可以动态地增加部署实例,并且注册表会将新的服务提供者信息推送到Consumer。

    可升级性

      当服务集群进一步扩展并且IT治理结构进一步升级时,需要动态部署,并且当前的分布式服务体系结构不会带来阻力。这是未来可能的架构:

    5. 使用

    provider.xml:

    <!--暴露服务-->
    <dubbo:service interface="com.xxx.XxxService" ref="xxxService"/>
    
    <!--服务实现-->
    <bean id="xxxService" class="com.xxx.XxxServiceImpl"/>

    consumer.xml:

    <!--引用远程服务-->
    <dubbo:reference id="xxxService" interface="com.xxxXxxService"/>

    参考Dubbo官网:http://dubbo.apache.org/

  • 相关阅读:
    C#Redis哈希Hashes
    C#Redis集合set
    C#Redis列表List
    C#Redis字符串
    入门redis
    C#/Net代码精简优化技巧
    单点登录在asp.net中的简单实现
    sql注入
    数据库sql优化
    常常忘记但是很重要的sql语句
  • 原文地址:https://www.cnblogs.com/s-star/p/12464996.html
Copyright © 2011-2022 走看看