分布式应用

  • 在分布式系统中,罕用zookeeper+dubbo组合
  • SpringBoot举荐应用全栈的Spring,SpringBoot+SpringCloud

    Zookeeper+Dubbo

    Zookeeper

  • Zookeeper:(注册核心)

    • 是一个分布式,开源的分布式应用程序协调服务
    • 为分布式应用提供一致性服务的软件:

      • 配置保护
      • 域名服务
      • 分布式同步
      • 组服务

        Dubbo

  • Dubbo是Alibaba开源分布式框架

    • 最大的特点是依照分层的形式架构,应用这种形式使各层之间解耦合(最大限度地松耦合)
    • 从服务模型角度看,Dubbo采纳简略的模型:要么是提供方提供服务,要么是生产方生产服务
    • 形象出提供方(Provider) 和服务生产方(Consumer) 两个角色

      Dubbo的应用:Provider:1.引入dubbo-spring-boot-starter依赖2.引入zookeeper的客户端工具zkclient依赖3.配置application.properties中duboo的相干属性:                        dubbo.application.name=provider-ticket                        dubbo.regestry.address=zookeeper://localhost:2181                        dubbo.scan.base-packages=com.web.ticket.service4.在实现类上标注@Service注解(com.alibaba.dubbo.config.annotation),将服务公布进来.并且将类增加到容器中@ComponentConsumer:1.引入dubbo-spring-boot-starter依赖2.引入zookeeper的客户端工具zkclient依赖3.配置application.properties中duboo的相干属性:                        dubbo.application.name=provider-ticket                        dubbo.regestry.address=zookeeper://localhost:21814.创立和Provider完全相同的接口目录构造:com.web.ticket.service.TicketService5.创立service类,在service类中通过标注@Reference注解引入TicketService

      SpringBoot+SpringCloud

      SpringCloud

  • SpringCloud:

    • SpringCloud是分布式的整体解决框架
    • SpringCloud提供了在分布式系统中疾速构建的工具:

      • 配置管理
      • 服务发现
      • 熔断
      • 路由
      • 微代理
      • 管制总线
      • 一次性token
      • 全局锁
      • leader选举
      • 分布式session
      • 集群状态
    • SpringCloud能够疾速的启动服务或构建利用,同时可能疾速和云平台资源进行对接
  • SpringCloud分布式开发组件:

    • 服务发现: Eureka
    • 客户端负载平衡: Ribbon
    • 断路器: Hystrix
    • 服务网关: Zuul
    • 分布式配置: SpringCloud Config

      Eureka-Server:1.创立Eureka注册核心Cloud Discovery-Eureka Server2.配置文件:server.port=8761    eureka.instance.hostname=eureka-server    eureka.client.registry-with-eureka=false(不将本人注册到Eureka上)    eureka.client.fetch-registry=false(不从Eureka上获取服务的注册信息)    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/3.在注册核心主类上标注@EnableEurekaServer注解启动Eureka注册服务Provider(同一个利用能够在注册核心注册多个)1.创立提供者CloudDiscovery-Eureka Discovery2.创立service办法,创立controller层通过Http服务申请进行通信(SpringCloud整合微服务是通过轻量级Http进行服务通信)3.配置文件:server.port=8001    spring.application.name=provide-ticket    eureka.instance.prefer-ip-address=true(注册服务的时候应用服务的IP地址)    eureka.instance.eureka.client.service-url.defaultZone=http://localhost:8761/eureka/4.在主类上标注@EnableEurekaClient注解将服务提供者(Provider)服务注册到注册核心Consumer1.创立消费者CloudDiscovery-Eureka Discovery2.创立controller层通过Http服务申请进行通信3.配置文件:spring.application.name=consumer-user    server-port=8200    eureka.instance.prefer-ip-address=true(注册服务的时候应用服务的IP地址)    eureka.instance.eureka.client.service-url.defaultZone=http://localhost:8761/eureka/4.在主类上标注@EnableEurekaClient(@EnableDiscoveryClient)注解开启发现服务性能5.创立RestTemplate并标注@Bean增加办法创立Http服务进行通信,标注@LoadBalanced注解启用负载平衡机制