前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nacos 的服务注册与发现

nacos 的服务注册与发现

作者头像
_淡定_
发布2019-09-06 10:27:12
7890
发布2019-09-06 10:27:12
举报
文章被收录于专栏:dotnet & javadotnet & java

nacos的服务注册于发现。

这个要求服务统一注册到注册中心,然后调用的时候就不需要通过ip来调用,直接通过服务名即可。

服务提供者
  1. pom.xml配置,需要spring-cloud-starter-alibaba-nacos-discovery 依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
  2. 指定一下EnableDiscoveryClient 注解 @SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class,args); } }
  3. application.yaml配置如下,这里需要指定spring.application.name spring: application: name: lou-nacos-service-provider cloud: nacos: discovery: server-addr: 127.0.0.1:8848 server: port: 8080
  4. 写个controller,用于测试 @RestController public class TestController { @GetMapping("hello/{name}") public String sayHello(@PathVariable(value = "name") String name) { return "hello " + name; } }
  5. 启动application,可以在nacos后台的服务列表里面看到注册的服务。
pic
pic
服务消费者---基于RestTemplate
  1. pom.xml配置和provider一样。 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
  2. 指定一下@EnableDiscoveryClient注解 @SpringBootApplication @EnableDiscoveryClient public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class,args); } }
  3. application.yaml配置和provider的基本一样,除了spring.application.name spring: application: name: lou-nacos-service-consumer cloud: nacos: discovery: server-addr: 127.0.0.1:8848 server: port: 8070
  4. consumer去调用provider,这里用基于HttpClient的RestTemplate,所以需要先定义个RestTemplate Bean。需要指定@LoadBalanced。 @Configuration public class ConsumerConfiguration { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
  5. 写controller。方法没有写具体ip,而是用了服务名lou-nacos-service-provider来访问。 @RestController public class TestController { private final RestTemplate restTemplate; @Autowired public TestController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @GetMapping("hello/{name}") public String hello(@PathVariable("name") String name) { return restTemplate.getForObject("http://lou-nacos-service-provider/hello/" + name, String.class); } }
  6. 启动,同理,可以在服务列表看到注册进去的服务。
  7. 测试。通过调用consumer的rest api接口就能获取到数据。
pic
pic
服务消费者---基于OpenFeign
  1. pom里面添加spring-cloud-starter-openfeign依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
  2. 添加注解EnableFeignClients @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients//启用 public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class,args); } }
  3. 定义接口UserService @FeignClient(name = "lou-nacos-service-provider")//服务名。 public interface UserService { @GetMapping("/hello/{name}")//这里表示请求lou-nacos-service-provider的/hello/{name}地址 String hello(@PathVariable(value = "name") String name); } 不需要实现。
  4. 通过定义的UserService接口调用服务,还是原先的TestController @RestController public class TestController { @Autowired//启用了FeignClient,所以可以Autowired private UserService userService; @GetMapping("hello2/{name}") public String hello2(@PathVariable("name") String name) { return userService.hello(name);//直接调用了方法。 } }
  5. 测试一下。访问hello2/feign,成功。
pic
pic
服务提供者的负责均衡

nacos为服务提供了自动的负载均衡,默认使用轮询的策略。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nacos的服务注册于发现。
    • 服务提供者
      • 服务消费者---基于RestTemplate
        • 服务消费者---基于OpenFeign
          • 服务提供者的负责均衡
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档