网站建设定制开发前面学习了,网站建设定制开发只是大概知道分布式的网站建设定制开发项目是什么搭建的。
分布式项目只是简单的将一个系统根据功能切割吗?
如果单个功能的服务器宕机了,那是不是只能等这个功能的服务重新启动?
如果我单个功能的服务器有多个,那不就可以在对应服务宕机的时候还能用吗?而且平时还可以分摊用户。
就好比你去银行柜台办理业务,有几个柜台能办理一样的业务,这个柜台人多,那就去其他的柜台
目录
一、ribbon的作用
- 实现负载均衡
- 通过服务名称,消费者就能使用服务
二、设计
2.1 注册中心
这个只需要按照创建即可
2.2 服务提供者
这里为了体现负载均衡,我创建了两个服务提供者:
- 使用一样的服务名称
- 提供一样的接口去请求同一数据库数据
2.3 服务消费者
- 将RestTemplate交给Spring容器管理,同时通过注解整合Ribbon使RestTemplate具备负载均衡
@SpringBootApplication@EnableDiscoveryClientpublic class DemoApplication { @Bean @LoadBalanced//添加LoadBalanced注解来整合Ribbon使其具有负载均衡的能力 public RestTemplate restTemplate(){ return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- RestTemplate通过服务名称去调用对应的服务
@RestController@RequestMapping("/user")public class UserController { @Autowired private RestTemplate restTemplate;//使用restTemplate请求User服务 private static final String REST_URL_PREFIX ="http://SERVICE-PROVIDER-USER"; @RequestMapping("/findAll") @ResponseBody public List<UserBean> queryAll() { String url = REST_URL_PREFIX+"/user/findAll"; UserBean[] userBeans = restTemplate.getForObject(url,UserBean[].class); return Arrays.asList(userBeans); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
三、测试
将服务提供者(UserService-Provider1、UserService-Provider2)、服务消费者(UserService-Customer)注册到注册中心
通过服务消费者发起请求,系统调用了UserService-Provider1的接口
再次发起请求,系统调用了UserService-Provider2的接口