[置顶] 【笔记】 springCloud--Alibaba--服务注册和服务发现

源代码地址: https://gitee.com/yangbuyi/bky_yby


接着上一次的nacos初步讲解和安装


任意门:https://www.cnblogs.com/Yangbuyi/p/13479767.html


如果启动失败的话 上一篇也是讲解过的.



本文章开始服务注册和发现


工程准备


创建一个父模块将里面的src删除即可留下.idea和pox.xml文件



    <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.3.RELEASE</version>
</parent>

<!-- 全局版本控制 -->
<properties>
<springCloud.version>Hoxton.SR7</springCloud.version>
<springCloud-alibaba.version>2.1.1.RELEASE</springCloud-alibaba.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- springCloud 版本控制 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${springCloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<!-- 阿里 版本库 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${springCloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>

</dependencyManagement>

创建consumer工程模块和provide工程模块(调用者、服务者)



1.在consumer模块当中添加依赖


        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 服务发现 nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. 手写启动类



/**
* @description: 杨不易网站:www.yangbuyi.top
* @program: springcloudalibabaparent
* @ClassName: AppConsumer
* @create: 2020-08-16 20:57
* @author: yangbuyi
* @since: JDK1.8
* @AppConsumer:
**/
@SpringBootApplication
@Slf4j
// nacos 服务发现 客户端
@EnableDiscoveryClient

public class AppConsumer {

public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(AppConsumer.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty('server.port');
String path = env.getProperty('server.servlet.context-path');
String hj = env.getProperty('spring.profiles.active');
log.info('\n---------------------------------------------------------- ' +
'Application yangbuyiCloud is running! Access URLs: ' +
'Local: http://localhost:' + port + path + '/ ' +
'当前配置环境: 当前环境为:' + hj + '/ ' +
'----------------------------------------------------------');
}

/**
* @Description: 杨不易个人网址:http://yangbuyi.top
* 功能描述: @LoadBalanced 让rest 拥有负载均衡的能力
* @Param: @RestTemplate http请求服务
* @return:
* @Author: TeouBle
* @Date: 2020/8/16 20:58
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}


}


3.在启动类上添加注解


nacos 服务发现 客户端 @EnableDiscoveryClient


4.在配置文件添加添加配置


server:
port: 5000
servlet:
context-path: /cloud-user
spring:
application:
name: consumer-user
cloud:
nacos:
discovery:
#nacos服务的地址 不要加http
# 可以写一个地址 集群会自动获取服务 但是为了安全起见还是全部写上
# server-addr: 127.0.0.1:8849,127.0.0.1:8850,127.0.0.1:8851
# 使用nginx反向代理
server-addr: 192.168.43.204:80
register-enabled: true
# server-addr: localhost:8850


name: 默认环境


上面看不懂的话也可直接写这样子的


server:
port: 5000
servlet:
context-path: /cloud-user
spring:
application:
name: user-client
# 将当前工程注册到nacos上面
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos服务的地址 不要加http

5.启动工程后, 在nacos当中查询服务列表



nacos服务没有下载的去观看上一章节的nacos服务安装和错误解决


https://www.cnblogs.com/Yangbuyi/p/13479767.html


6.使用相同方式 把provide服务注册到nacos上


创建启动类


package top.yangbuyi;

/**
* @description: 杨不易网站:www.yangbuyi.top
* @program: springcloudalibabaparent
* @ClassName: top.yangbuyi.AppConsumer
* @create: 2020-08-16 20:57
* @author: yangbuyi
* @since: JDK1.8
* @AppConsumer:
**/
@SpringBootApplication
@Slf4j
// nacos 服务发现 客户端
@EnableDiscoveryClient

public class AppProvide {

public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(AppProvide.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty('server.port');
String path = env.getProperty('server.servlet.context-path');
String hj = env.getProperty('spring.profiles.active');
log.info('\n---------------------------------------------------------- ' +
'Application yangbuyiCloud is running! Access URLs: ' +
'Local: http://localhost:' + port + path + '/ ' +
'当前配置环境: 当前环境为:' + hj + '/ ' +
'----------------------------------------------------------');
}

/**
* @Description: 杨不易个人网址:http://yangbuyi.top
* 功能描述: @LoadBalanced 让rest 拥有负载均衡的能力
* @Param: @RestTemplate http请求服务
* @return:
* @Author: TeouBle
* @Date: 2020/8/16 20:58
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}


}




创建yml配置


server:
port: 7000
servlet:
context-path: /cloud-yby
spring:
application:
name: provide-goods # 服务名称 服务ID
cloud:
nacos:
discovery:
server-addr: localhost:8085 # nacos服务地址 单个服务

name: 默认环境


7. 启动两个服务 consumer和 provide 去nacos查看是否有



8. 在consumer工程中通过服务发现调用provide 工程


自己对着图片的打一遍 别偷懒




到此即可通过 consumer访问provide工程当中的方法啦


9.测试



nacos有问题请评论区联系我


完结 下一章节 nacos集群


posted @ 2020-08-18 14:12  yangzhuxian  阅读(257)  评论(0编辑  收藏  举报