SpringCloud
前言-分布式基础
Dubbo+Zookeeper
多个服务远程从注册中心调用
- zookeeper开启
- 提供者提供服务
- 导入依赖
- 配置注册中心的地址,服务发现名。还有要扫描的包
- 在要被注册的服务上面加注解
Service
(必须是dubbo下的Servic注解)
- 消费者如何消费
- 导入依赖
- 配置注册中心地址,还有服务名
- 从远程注入服务 —
@Reference
调用远程接口名必须与本地接口名相同
- CAP原则:三选二
- Consistency 一致性
- Availability 可用性
- Partition tolerance 分区容忍性(在一部分服务不可用时依然可以提供服务)
springcloud
- 添加依赖
- 修改配置
- 开启服务
cloud-Netflix-五巨头
- Eureka:注册中心,和zookeeper功能相同,AP原则
- Ribbon:负载均衡,轮循算法
- feign:接口调用服务,社区规范
- HyStrix:服务熔断,服务降级 – Dashboard流监控
- Zuul:路由网关
无注册
@Reference
远程调取服务变为使用RestTemplate类来实现
RestTemplate:提供多种便捷访问远程http服务的方法,一种简单的Restful服务
消费者不需要引入service,也不需要接口名与提供服务接口相同,只需要知道url即可
建立maven父项目:
pom.xml:
1 |
|
数据层-API
数据层比较简单,只需要做和数据库的数据类即可,需要注意的一点是实体类必须通过继承 Serializable
接口来实现序列化。
Eureka 服务注册与发现
两个组件:
- Eureka服务端:服务注册中心,支持集群部署
- Eureka客户端:处理服务注册与发现
客户端:
1 |
服务端:
Eureka Server config: application.yml
1 | server: |
注意要在主程序中用注解开启Eureka Server服务
负载均衡工具 Ribbon
在ConfigBean中返回RestTemplate实例方法上加 @LoadBalanced
注解就实现负载均衡
使用接口的方式实现负载均衡 Feign
服务熔断 Hystrix
在controller的实现类上添加 @HystrixCommand
注解,
(待完善。