目标: 建立多个微服务,并实现微服务之间的调用。
技术点
- 微服务间调用 Feign
- 微服务注册/配置中心 Nacos
步骤
1.1 引入feign
@FeignClient(name = "orm-demo")public interface ProjectClient {/*** 测试远程调用**/@GetMapping("/project/")PageInfo<Object> getProjectList();}
feign:client:config:default:connectTimeout: 5000readTimeout: 5000loggerLevel: basic
然后client 就可以直接使用了。封装的比较好。
1.2 引入nacos
在Spring Cloud里面无缝对接。
bootstrap.properties里面定义
##### nacos(注册中心和配置中心)地址spring.cloud.nacos.server-addr=localhost:8848#spring.cloud.nacos.username=nacos#spring.cloud.nacos.password=nacosspring.cloud.nacos.config.file-extension=ymlspring.cloud.nacos.config.shared-dataids=common.ymlspring.cloud.nacos.config.refreshable-dataids=common.yml
使用@EnableDiscoveryClient注解
/*** @author zlt*/@EnableDiscoveryClient@SpringBootApplicationpublic class CodeGeneratorApp {public static void main(String[] args) {SpringApplication.run(CodeGeneratorApp.class, args);}}
加入@LoadBalanced 实现负载均衡。
@EnableDiscoveryClientpublic class NacosConsumerApplication {@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}@RestControllerpublic class TestController {private final RestTemplate restTemplate;@Autowiredpublic TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)public String echo(@PathVariable String str) {return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);}}}
问题
- 如何实现负载均衡,如何做SpringCloud的性能优化和配置优化,据说要结合Ribben, 具体怎么做后续 研究。
