前言
上篇咱们讲到如何应用k8s搭建nacos,这篇就来讲讲微服务如何通过搭建好的nacos服务注册和配置。
操作
A服务、B服务,A应用Feign调用B服务外面办法。
A、B服务引入相干依赖包,
- springcloud版本:2020.0.0
- springboot版本:2.4.2
alibaba版本:2021.1
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.2</version></parent><properties> <java.version>1.8</java.version> <spring-boot.version>2.4.2</spring-boot.version> <spring-cloud.version>2020.0.0</spring-cloud.version> <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version></properties><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- spring cloud 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- spring cloud alibaba 依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement><dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency></dependencies>
A、B服务注册和配置到Nacos服务的bootstrap.yml文件:
spring:application: name: a-service # b-serviceprofiles: active: testcloud: nacos: #注册A、B服务到Nacos discovery: server-addr: http://nacos-headless.default.svc.cluster.local:8848 namespace: xxx-xxx-xxx-xxx service: a-service # b-service #配置A、B服务到Nacos config: server-addr: http://nacos-headless.default.svc.cluster.local:8848 file-extension: yaml prefix: a-service # b-service namespace: xxx-xxx-xxx-xxxserver:port: a-port # b-port
能够间接在Nacos下面创立A、B服务的配置文件:
B服务办法:
@SpringBootApplication@EnableDiscoveryClient@RestController@RefreshScopepublic class BServiceApplication { public static void main(String[] args) { SpringApplication.run(BServiceApplication.class, args); } @Value("${server.port}") String port; @GetMapping("/hi") public String hi(@RequestParam(value = "name", defaultValue = "forezp",required = false) String name) { return "hello " + name + ", i'm provider ,my port:" + port; }}
A服务想要调用B服务办法,首先创立BFeignClient类:
@FeignClient("b-service")public interface BFeignClient { @GetMapping("/hi") String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);}
接着,创立调用的办法:
@SpringBootApplication@RestController@EnableDiscoveryClient@EnableFeignClients@RefreshScopepublic class AServiceApplication { public static void main(String[] args) { SpringApplication.run(AServiceApplication.class, args); } @Autowired BFeignClient bFeignClient; @GetMapping("/hi-feign") public String hiFeign(){ return bFeignClient.hi("feign"); }}
运行起来,看看两个服务是否在Nacos注册胜利,如图所示:
注册胜利之后,咱们就能够测试A服务调用B服务是否胜利:
总结
1、因为咱们应用的是service headless,所以咱们要应用dns查找nacos,默认是你的service name 加上固定写法:default.svc.cluster.local,我的nacos service name是nacos-headless,即:nacos-headless.default.svc.cluster.local
2、因为nacos应用的是最新版本,所以discovery要加service属性,否则报错
discovery: server-addr: http://nacos-headless.default.svc.cluster.local:8848 namespace: xxx-xxx-xxx-xxx service: a-service # b-service
3、因为应用的是springcloud:2020.0版本,所以pom引入bootstrap包,否则bootstrap.yml不起作用
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>
援用
SpringCloud 2020版本教程1:应用nacos作为注册核心和配置核心
k8s集群外部怎么通过dns域名使得业务零碎注册到nacos集群阐明-方法论,其余通过域名拜访服务一样的
k8s部署nacos 3各节点....N各节点均可 集群
Kubernetes Nacos