Springcloud: 开源的分布式框架. 提供了几乎所有需要的分布式组件:
1. 注册中心: eureka, zookeeper, ...
2. 客户端: eureka-client
3. 数据交互: feign
1) 在consumer项目中的pom, 添加feign组件的依赖
2) 在consumer项目中的启动类上, 添加@EnableFeignClients , @EnableDiscoveryClient, @SpringBootApplication
3) 在consumer项目中的创建与provider项目对应的接口,
接口中的方法声明(含注解部分)必须与对应的
provider项目的controller中的方法声明一致
4) 在consumer项目中的provider接口上,
添加@Service, 添加@FeignClient(value = "provider项目名")
5) 在consumer项目中的controller中, 声明provider接口对象并注入实例
6) 在provider项目中的启动类上添加注解:
@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.dsed.dao") 注:括号中为dao包
4. 负载均衡: ribbon
1) 无需额外添加任何依赖. 通常也不需要添加任何新的配置
2) 负载均衡策略: 默认轮循RoundRobinRule
注1: ribbon组件会默认生效.
注2: ribbon组件生效的场合:
[1] consumer调用provider时, 如果指定名称的provider注册了多个ip则生效
[2] 网关调用consumer时, 如果指定名称的consumer注册了多个ip则生效
5. 熔断: hystrix
6. 网关: zuul, gateway
分布式项目的拆分基本思路:
1. 每个模块独立成一个项目
2. 将项目从service层一分为二
consumer项目: 负责与界面的功能交互
provider项目: 负责数据处理部分
Springcloud的版本: 以伦敦地铁站的名字命名
A版
B版
...
H版