分布式应用
- 在分布式系统中, 罕用 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.service 4. 在实现类上标注 @Service 注解(com.alibaba.dubbo.config.annotation), 将服务公布进来. 并且将类增加到容器中 @Component Consumer: 1. 引入 dubbo-spring-boot-starter 依赖 2. 引入 zookeeper 的客户端工具 zkclient 依赖 3. 配置 application.properties 中 duboo 的相干属性: dubbo.application.name=provider-ticket dubbo.regestry.address=zookeeper://localhost:2181 4. 创立和 Provider 完全相同的接口目录构造:com.web.ticket.service.TicketService 5. 创立 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 Server 2. 配置文件: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 Discovery 2. 创立 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) 服务注册到注册核心 Consumer 1. 创立消费者 CloudDiscovery-Eureka Discovery 2. 创立 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 注解启用负载平衡机制