1.parent的pom配置
备注:有一个common-user的模块,写了domain和service方法,自己写即可
<packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!--2.0.6对应的cloud版本是Finchley.SR2--> <spring-cloud.version>Finchley.SR2</spring-cloud.version> <springboot.version>2.0.6.RELEASE</springboot.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2.注册中心
2.1主方法:
@SpringBootApplication
@EnableEurekaServer //表示是eureka的注册中心服务端
public class UserProviderApplication_1000 {
public static void main(String[] args) {
SpringApplication.run(UserProviderApplication_1000.class,args);
}
}
2.2配置:
#C:\Windows\System32\drivers\etc\hosts hosts这个文件没有后缀,加一个 # 在里面加上 127.0.0.1 peer1001 127.0.0.1 peer1000 server: port: 1000 eureka: instance: hostname: peer1000 client: registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka fetchRegistry: false #表示是否从Eureka Server获取注册信息 serviceUrl: defaultZone: http://peer1001:1001/eureka/ #集群配置 #另一个集群的配置里面写的是http://peer1000:1000/eureka/ # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 单机配置
2.3pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <!--eureka-server包涵了eureka-client的包--> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
3.服务端(发送端)
搭建集群的话,拷贝改端口即可,但是名字必须一样,也就是下面配置里的比如sending.
3.1主方法
@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
public class UserProviderApplication_3333 {
public static void main(String[] args) {
SpringApplication.run(UserProviderApplication_3333.class, args);
}
}
3.2controller类
@RestController
public class UserController {
@Autowired
private IEmployeeService employeeService;
//可以获取到配置里面的端口号
@Value("${server.port}")
private String port;
@RequestMapping("/employee/{id}")
//将{id}的值转换成传入的参数
public Employee employee(@PathVariable("id") Long id) {
System.out.println(port);
return employeeService.selectById(id);
}
}
3.3配置
server:
port: 3333
eureka:
client:
# registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka
#fetchRegistry: false #表示是否从Eureka Server获取注册信息
serviceUrl:
defaultZone: http://peer1000:1000/eureka/,http://peer1001:1001/eureka/
# instance:
# prefer-ip-address: true #使用ip注册,没有的话是名字注册
spring:
application:
name: sending
3.4 pom
<dependency> <!--自己写一个domain和service即可--> <groupId>cn.itsource</groupId> <artifactId>common-user</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
3.客户端(接收端)用feign,相对简单
Feign是基于Ribbon封装的。
3.1主方法
@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
@EnableFeignClients //开启Fiegn
public class UserProviderApplication_4444 {
public static void main(String[] args) {
SpringApplication.run(UserProviderApplication_4444.class, args);
}
}
3.2feign接口
/**
* @FeignClient("SENDING") 代表这个接口是一个feign的客户端
* SENDING 是这个接口要调用的远程服务的名字(sending),上传注册中心时,会改成大写
*/
@FeignClient("SENDING")
public interface FeignClientEmployee {
//方法名和参数最好要跟发送端的一致,最好复制过来
@RequestMapping("/employee/{id}")
//将{id}的值转换成传入的参数
public Employee employee(@PathVariable("id") Long id);
}
3.3controller
@RestController
public class EmployeeeController {
@Autowired
private FeignClientEmployee feignClientEmployee;
@RequestMapping("/employee/{id}")
//将{id}的值转换成传入的参数
public Employee hello(@PathVariable("id") Long id){
return feignClientEmployee.employee(id);
}
}
3.4配置
server: port: 4444 eureka: client: # registerWithEureka: false #作为一个注册中心不需要注册自己是否要注册到eureka #fetchRegistry: false #表示是否从Eureka Server获取注册信息 serviceUrl: defaultZone: http://peer1000:1000/eureka/,http://peer1001:1001/eureka/ spring: application: name: getting
3.5pom
<dependency> <groupId>cn.itsource</groupId> <artifactId>common-user</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
4.客户端(接收端)Ribbon方式,相对复杂
4.1主方法
@SpringBootApplication
@EnableEurekaClient //可加可不加,加了默认是euraka
//@RibbonClients//ribbon的客户端
public class UserProviderApplication_2222 {
@Bean
@LoadBalanced//负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
//随机加载集群
@Bean
public IRule rule(){
return new RandomRule();
}
public static void main(String[] args) {
SpringApplication.run(UserProviderApplication_2222.class, args);
}
}
4.2controller
@RestController
public class GetEmployeeController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/employee/{id}")
//将{id}的值转换成传入的参数
public Employee hello(@PathVariable("id") Long id) {
//需要写上发送端在注册中心名字
String url = "http://SENDING/employee/"+id;
return restTemplate.getForObject(url,Employee.class);
}
}
4.3配置
server: port: 2222 eureka: client: serviceUrl: defaultZone: http://peer1000:1000/eureka/,http://peer1001:1001/eureka/ spring: application: name: getting
4.4pom
<dependency> <groupId>cn.itsource</groupId> <artifactId>common-user</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
本文详细介绍了如何使用Spring Cloud构建微服务架构,包括Eureka注册中心的搭建、服务提供者与消费者的实现,以及通过Feign和Ribbon进行服务间通信的方法。
909

被折叠的 条评论
为什么被折叠?



