• 六:Dubbo与Zookeeper、SpringMvc整合和使用


    DUBBO与ZOOKEEPER、SPRINGMVC整合和使用

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。

    第一:介绍Dubbo背景

    Dubbo是一个分布式服务框架,解决了上面的所面对的问题,Dubbo的架构如图所示:

    主要核心部件:

    Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.

    RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能

    Registry: 服务目录框架用于服务的注册和服务事件发布和订阅

    Dubbo工作原理

    Provider

    暴露服务方称之为“服务提供者”。

    Consumer

    调用远程服务方称之为“服务消费者”。

    Registry

    服务注册与发现的中心目录服务称之为“服务注册中心”。

    Monitor

    统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”。

    (1) 连通性:

    注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小

    监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示

    服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销

    服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销

    注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外

    注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者

    注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表

    注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

    (2) 健状性:

    监控中心宕掉不影响使用,只是丢失部分采样数据

    数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务

    注册中心对等集群,任意一台宕掉后,将自动切换到另一台

    注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯

    服务提供者无状态,任意一台宕掉后,不影响使用

    服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

    (3) 伸缩性:

    注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心

    服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者

    节点角色说明:

    Provider: 暴露服务的服务提供方。

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

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

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

    Container: 服务运行容器。

    调用关系说明:

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

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

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

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

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

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

    内置功能(只列了一部分功能)

    1.用户管理:用户是系统操作者,该功能主要完成系统用户配置。

    2.机构管理:配置系统组织机构(公司、部门、小组),树结构展现,可随意调整上下级。

    3.区域管理:系统城市区域模型,如:国家、省市、地市、区县的维护。

    4.菜单管理:配置系统菜单,操作权限,按钮权限标识等。

    5.角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

    6.字典管理:对系统中经常使用的一些较为固定的数据进行维护,如:是否、男女、类别、级别等。

    7.操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

    8.连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

    9.工作流引擎:实现业务工单流转、在线流程设计器。

    开发工具

    1.Eclipse IDE:采用Maven项目管理,模块化。

    2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表、一对多、树结构。生成后的代码如果不需要注意美观程度,生成后即可用。

    技术选型(只列了一部分技术)

    1、后端

    服务框架:Dubbo、zookeeper、Rest服务

    缓存:Redis、ehcache

    消息中间件:ActiveMQ

    负载均衡:Nginx

    分布式文件:FastDFS

    数据库连接池:Alibaba Druid 1.0

    核心框架:Spring framework

    安全框架:Apache Shiro 1.2

    视图框架:Spring MVC 4.0

    服务端验证:Hibernate Validator 5.1

    布局框架:SiteMesh 2.4

    工作流引擎:Activiti 5.15

    任务调度:quartz 1.8.5

    持久层框架:MyBatis 3.2

    日志管理:SLF4J 1.7、Log4j

    工具类:Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI

    2、前端

    JS框架:JQuery 1.9。

    CSS框架: Bootstrap 4 metronic

    客户端验证:JQuery Validation Plugin。

    富文本:CKEcitor

    文件管理:CKFinder

    动态页签:Jerichotab

    数据表格:jqGrid

    对话框:jQuery jBox

    树结构控件:jQuery zTree

    其他组件:Bootstrap 4 metronic

    3、支持

    服务器中间件:Tomcat 6、7、Jboss 7、WebLogic 10、WebSphere 8

    数据库支持:目前仅提供mysql数据库的支持,但不限于数据库,下个版本升级多数据源切换和数据库读写分离: 如:Oracle、SqlServer、H2等

    支持开发环境:Eclipse、MyEclipse、Ras、Idea等

    经典介绍:

    源码结构

  • 相关阅读:
    [国家集训队]整数的lqp拆分
    来一波全套向量运算(C++)
    天哪又要搬家啦qvq
    利用输入输出流复制文件
    系统会随机给你两个日期(yyyy-MM-dd),求出两个日期的具体相差天数
    mysql中的连接操作
    java面试题集锦
    Java关于Math类的三个取整方法
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    MySql5.5安装详细说明
  • 原文地址:https://www.cnblogs.com/NiceCui/p/7815138.html
Copyright © 2020-2023  润新知