一、Spring Cloud简介:
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。
主要成员有:
1.Spring Cloud Config、
2.Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius…)、
3.Spring Cloud Bus、
4.Spring Cloud for Cloud Foundry、
5.Spring Cloud Cluster、
6.Spring Cloud Consul、
7.Spring Cloud Security、
8.Spring Cloud Sleuth、
9.Spring Cloud Data Flow、
10.Spring Cloud Stream、
11.Spring Cloud Task、
12.Spring Cloud Zookeeper、
13.Spring Cloud Connectors、
14.Spring Cloud Starters、
15.Spring Cloud CLI
二、先使用最简单的组件搭建一个为服务Demo
实现功能:注册中心(服务发现)、注册服务提供者、服务消费者
1.搭建注册中心:
(1)使用 Interllij IDEA 创建项目
通过Spring Initializr创建项目这里只需要选择Eureka Server即可
其中自己选择项目名路径,然后一路完成。
(2)修改配置文件
将application.properties改成application.yml文件(个人习惯,不改也可以)
(3)配置信息:
server:
## 注册中心端口
port: 8761
spring:
application:
## 注册中心应用名
name: eureka
eureka:
client:
serviceUrl:
## 注册中心的地址,这里的端口与上面 【 注册中心端口】保持一致。
defaultZone: http://localhost:8761/eureka/
(4)修改启动的Application,添加注解:
/**
* @EnableEurekaServer 开启Eureka Server
*/
@EnableEurekaServer
@SpringBootApplication
public class SpringCloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaApplication.class, args);
}
}
(5)Run:
启动项目(6)访问项目地址:
进到这个页面表示注册注册中心就成功了Instances currently registered with Eureka 为服务的注册信息,因为目前只启动了一个注册中心所以还没有任何服务注册,如果在上面的配置中将register-with-eureka设置为ture则会有一条将自己注册的记录。
2.搭建服务提供者:
提供者(1)配置信息:
server:
## 消费者端口,自定义
port: 9000
spring:
application:
## 消费者应用名,自定义
name: producer
eureka:
client:
serviceUrl:
## 注册中心的地址
defaultZone: http://localhost:8761/eureka/
(2)修改启动的Application,添加注解:
/**
* @EnableEurekaClient 启动EnableEureka客户端
*/
@EnableEurekaClient
@SpringBootApplication
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
(3)创建一个提供的服务Hello World:
@RestController
public class HelloController {
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String index(){
return "Hello Worle";
}
}
(4)通过Application启动该项目:
注册中心信息访问服务注册中心地址 ,因为该了注册中心的配置,将注册中心也注册上了。Instances currently registered with Eureka 中显示有注册信息就表示服务提供者的功能完成了。
3.搭建服务消费者:
消费者(1)配置信息:
server:
## 消费者端口,自定义
port: 8001
spring:
application:
## 消费者应用名,自定义
name: consumer
eureka:
client:
serviceUrl:
## 注册中心的地址
defaultZone: http://localhost:8761/eureka/
(2)修改启动的Application,添加注解:
@EnableDiscoveryClient //启动EnableEureka客户端
@SpringBootApplication
public class ConsumerApplication {
@Bean
@LoadBalanced // 开启客户端负载均衡
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
(3)创建HelloControllerz获取上面服务提供者提供的服务资源:
/**
* Spring4之后新加入的注解,原来返回json需要@ResponseBody和
* @Controller配合。
* 即@RestController是@ResponseBody和@Controller的组合注解。
*
*/
@RestController
public class HelloController {
@Autowired
RestTemplate restTemplate;
@RequestMapping(value = "/consumer-index",method = RequestMethod.GET)
public String index(){
// 服务提供的应用名+提供的服务暴露的@RequestMapping路径。
String producer = "PRODUCER/hello";
return restTemplate.getForEntity(producer,String.class).getBody();
}
}
网友评论