目标: 建立多个微服务,并实现微服务之间的调用。

技术点

- 微服务间调用 Feign

- 微服务注册/配置中心 Nacos

步骤

1.1 引入feign

  1. @FeignClient(name = "orm-demo")
  2. public interface ProjectClient {
  3. /**
  4. * 测试远程调用
  5. *
  6. */
  7. @GetMapping("/project/")
  8. PageInfo<Object> getProjectList();
  9. }
  1. feign:
  2. client:
  3. config:
  4. default:
  5. connectTimeout: 5000
  6. readTimeout: 5000
  7. loggerLevel: basic

然后client 就可以直接使用了。封装的比较好。

1.2 引入nacos

在Spring Cloud里面无缝对接。

bootstrap.properties里面定义

  1. ##### nacos(注册中心和配置中心)地址
  2. spring.cloud.nacos.server-addr=localhost:8848
  3. #spring.cloud.nacos.username=nacos
  4. #spring.cloud.nacos.password=nacos
  5. spring.cloud.nacos.config.file-extension=yml
  6. spring.cloud.nacos.config.shared-dataids=common.yml
  7. spring.cloud.nacos.config.refreshable-dataids=common.yml

使用@EnableDiscoveryClient注解

  1. /**
  2. * @author zlt
  3. */
  4. @EnableDiscoveryClient
  5. @SpringBootApplication
  6. public class CodeGeneratorApp {
  7. public static void main(String[] args) {
  8. SpringApplication.run(CodeGeneratorApp.class, args);
  9. }
  10. }

加入@LoadBalanced 实现负载均衡。

  1. @EnableDiscoveryClient
  2. public class NacosConsumerApplication {
  3. @LoadBalanced
  4. @Bean
  5. public RestTemplate restTemplate() {
  6. return new RestTemplate();
  7. }
  8. public static void main(String[] args) {
  9. SpringApplication.run(NacosConsumerApplication.class, args);
  10. }
  11. @RestController
  12. public class TestController {
  13. private final RestTemplate restTemplate;
  14. @Autowired
  15. public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
  16. @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
  17. public String echo(@PathVariable String str) {
  18. return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
  19. }
  20. }
  21. }

问题

  1. 如何实现负载均衡,如何做SpringCloud的性能优化和配置优化,据说要结合Ribben, 具体怎么做后续 研究。