1. Eureka服务注册
1.1. 搭建eureka-server
1.1.1. 创建项目
创建一个简单的maven管理的java项目,用来运行eureka服务
1.1.2. 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.1.3. 编写启动类
在启动类上添加一个@EnableEurekaServer注解
,开启eureka的注册中心功能:
package 包名;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class 启动类名 {
public static void main(String[] args) {
SpringApplication.run(启动类名.class, args);
}
}
1.1.4. 编写配置文件
编写一个application.yml文件,内容如下:
server:
port: 10086 #eureka的端口,可以自定义
spring:
application:
name: eureka-server #服务名,可以自定义
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
1.1.5. 启动服务
启动微服务,然后在浏览器访问:http://实际IP:实际端口/eureka
看到详情页面就是启动成功了。
1.2. 服务注册
1.2.1. 引入依赖
在user-service的pom文件中,引入下面的eureka-client依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.2.2. 配置文件
修改application.yml文件,添加服务名称、eureka地址:
spring:
application:
name: 注册的服务名
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka #此处填写eureka-server的ip和端口
1.3. 消费端配置负载均衡
消费端使用服务名访问,必须配置负载均衡才能访问。
在服务的消费者端
,在任意一个配置类
中,注入一个名为RestTemplate
的Bean。(可以直接写在启动类中)
@Bean
@LoadBalanced // 启用负载均衡,如果使用的话,需要根据情况额外引入依赖
public RestTemplate restTemplate(){
return new RestTemplate();
}
在需要调用其他服务的地方,自动注入RestTemplate对象,调用该对象的方法访问。
下面是一个案例
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2.获取用户id
Long userId = order.getUserId();
// 3.调用userservice模块接口查询user数据
User user = restTemplate.getForObject("http://userservice/user/" + userId, User.class);
// 4.数据组装
order.setUser(user);
// 4.返回
return order;
}
}
2. Nacos注册中心
2.1. 部署Nacos服务
2.1.1. 下载软件
访问Nacos的官网,查看Git地址和手册 Nacos
也可以直接访问Git仓库的发行地址下载软件 Releases · alibaba/nacos (github.com)
2.1.2. 修改配置文件
在软件的conf/application.properties
文件中,可以修改nacos服务的端口号
2.1.3. 启动
在windows平台,进入nacos/bin目录下,使用如下命令进行单机启动
startup.cmd -m standalone
nacos的集群启动需要额外对配置文件进行修改,然后双击startup.cmd即可运行。具体的配置方法看后面的笔记。
在启动界面可以看到管理后台的地址,一般来说,默认地址是http://127.0.0.1:8848/nacos/index.html
2.2. 服务注册
Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。
主要差异在于:
- 依赖不同
- 服务地址不同
2.2.1. 引入依赖
在父工程的pom文件中的<dependencyManagement>
中引入SpringCloudAlibaba的依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.2.2. 配置nacos地址
在user-service和order-service的application.yml中添加nacos地址:
spring:
application:
name: 注册的服务名
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos
cluster-name: sh #选填,集群名称
namespace: dev #选填,命名空间
2.3. 使用案例
同1.3.使用案例。
3.3. 消费端配置负载均衡
同1.3
Comments NOTHING