技术演变

  • 程序最早运行在在JVM里面,处于单一系统架构。
  • 服务做拆分,运行在多个JVM内
    • 之间通信技术
      • JMS规范
        • ActiveMQ
      • 远程RPC通信框架
        • RMI
      • WebService
      • Hessian
      • Kafka+Zookeeper
    • 集群
      • F5负载均衡
      • 软负载均衡
        • Nginx
  • 对节点集群
    • 硬负载均衡
      • F5
    • 软负载均衡
      • Nginx+LVS
      • Nginx+keepalived
      • Apache
  • 数据存储
    • 关系型数据库
      • SQL Server
      • Oracle
      • MySQL
      • MariDB
    • 非关系型数据库
      • MongoDB
      • Redis
      • DB2
  • 扩容
    • Master-Slave模型
      • Master写
      • Slave读
  • 服务治理
    • Dubbo+Zookeeper
      • URL维护困难
      • 监控服务依赖关系及响应时间
  • 单进程优化性能
    • 多线程

作用

  • 各个节点中的URL管理维护很困难、依赖关系很模糊
    • 注册中心
  • 每个应用节点的性能、访问量、响应时间无法评估
    • 监控中心

使用入门

​ 示例代码网上都有

相关问题

dubbo如何加载Spring

  • com.alibaba.dubbo.container.Main
    • ExtensionLoader<Container> loader
      • dubbo中的扩展机制。实现机制类似于SPI。
    • container.start();启动Spring
      • Main.main(args)中的args会有一个参数叫spring
        • spring来自于com.alibaba.dubbo.container的配置文件里dubbo/internal中的spring=com.alibaba.dubbo.container.spring.SpringContainer
      • com.alibaba.dubbo.container.spring.SpringContainer#start中读取Spring配置:public static final String DEFAULT_SPRING_CONFIG = "classpath*:META-INF/spring/*.xml";
      • com.alibaba.dubbo.container.spring.SpringContainer中加载Springcontext = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+"));然后context.start();

如何让进程不终止

  • com.alibaba.dubbo.container.Main 中利用await()等待

日志如何集成

  • com.alibaba.dubbo.common.logger.LoggerFactory
    • log4j
    • slf4j
    • jcl
    • jdk
  • 如不指定,优先级为log4j>slf4j>jcl>jdk

admin控制台的安装

  • 源码中dubbo-admin模块打成war
  • 修改dubbo-admin-src-main-webapp-WEB-INF-dubbo.propertiesdubbo.registry.address为zk的集群地址
  • 浏览器访问地址
    • Run/Debug Configration中的地址
  • 输入用户名及密码
    • dubbo.properties中的密码
    • 用户名:root 密码:root
  • 可以进行服务治理
    • 权重
    • 路由
  • 没有监控功能,有另外的监控中心

simple监控中心

  • provider项目的xml中添加配置
    • <duboo:monitor protocol="registry"/>
  • 下载dubbo-monitor-simple
  • 修改配置
    • conf/dubbo.propertties
      • Dubbo.registry.address=zk集群地址
      • dubbo.protocol.port
        • monitor也是一个dubbo服务,也有端口和url
    • 或修改服务提供者的xml(xxx-provider.xml)
      • 建议使用xml
  • 运行
    • 执行bin文件夹下的start脚本
  • 浏览器访问地址
    • localhost:port
      • port为dubbo.properttiesdubbo.jetty.port
  • 带图表和监控
  • 监控服务的监控
    • 调用次数
    • 调用关系
    • 响应时间
  • 默认五分钟生成一次

telnet命令

  • 2.0.5后提供
  • telnet localhost 20880
  • telnet调用接口是不受监控的
  • 常用命令
    • ls
    • cd
    • pwd
    • clear
    • invoke