首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SpringBoot和Spring Cloud

SpringBoot和Spring Cloud

作者头像
OY
发布2022-03-17 17:13:04
发布2022-03-17 17:13:04
2710
举报
文章被收录于专栏:OY_学习记录OY_学习记录

一、Spring Cloud

​ Spring Cloud 是一个分布式的整体解决方案。 Spring Cloud 为开发者提供了在分布式系统(配 置管理,服务发现,熔断,路由,微代理,控制总线,一次性 token,全局琐, leader 选举,分 布式 session,集群状态)中快速构建的工具,使用 Spring Cloud 的开发者可以快速的启动服务 或构建应用、同时能够快速和云平台资源进行对接。

SpringCloud 分布式开发五大常用组件

  • 服务发现——Netflix Eureka
  • 客服端负载均衡——Netflix Ribbon
  • 断路器——Netflix Hystrix
  • 服务网关——Netflix Zuul
  • 分布式配置——Spring Cloud Config

二、微服务

Martin Fowler 微服务原文 https://martinfowler.com/articles/microservices.html

三、Spring Cloud 入门

项目结构:

先创建一个空项目来存放

① 编写 EurekaServer 注册中心

1. 项目结构
2.配置 Eureka 信息
代码语言:javascript
复制
server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server # eureka实例的主机名
  client:
    register-with-eureka: false #不把自己注册到eureka上
    fetch-registry: false # 不从eureka上获取服务器的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/
3.@EnableEurekaServer
代码语言:javascript
复制
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}

}
4.启动

② 编写服务提供者

1.项目结构
2.编写 service 层 和 controller 层
代码语言:javascript
复制
@Service
public class TicketService {

    public String getTicket(){
        System.out.println("8001");
        return "《姜子牙》";
    }
}
代码语言:javascript
复制
@RestController
public class TicketController {
    @Autowired
    TicketService ticketService;

    @GetMapping(value = "/ticket")
    public String getTicket() {
        return ticketService.getTicket();
    }
}
3.配置信息
代码语言:javascript
复制
server:
  port: 8001
spring:
  application:
    name: provider-ticket

eureka:
  instance:
    prefer-ip-address: true # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
4.启动

去 Eureka 注册中心查看

5.负载均衡

为了显示效果,使用 Maven 仓库的打包,我复制一份提供者,改一下启动端口吗,防止冲突。

  • 把包复制出来存放在文件夹里,并启动

8002 一样的方法启动即可

  • 注册中心显示,都成功注入

③ 编写服务消费者

1.项目结构
2.编写 controller 和 RestTemplate 模板
代码语言:javascript
复制
@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String buyTicket(String name){
        String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket",String.class);
        return name + "购买了" + s;
    }
}

@EnableDiscoveryClient

代码语言:javascript
复制
@EnableDiscoveryClient // 开启发现服务功能
@SpringBootApplication
public class ConsumerUserApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConsumerUserApplication.class, args);
	}

	@LoadBalanced // 使用负载均衡机制
	@Bean
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}
}
3.配置信息
代码语言:javascript
复制
spring:
  application:
    name: consumer-user
server:
  port: 8200

eureka:
  instance:
    prefer-ip-address: true # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
4.启动
  • 负载均衡生效

整合完成!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Spring Cloud
  • 二、微服务
  • 三、Spring Cloud 入门
    • ① 编写 EurekaServer 注册中心
      • 1. 项目结构
      • 2.配置 Eureka 信息
      • 3.@EnableEurekaServer
      • 4.启动
    • ② 编写服务提供者
      • 1.项目结构
      • 2.编写 service 层 和 controller 层
      • 3.配置信息
      • 4.启动
      • 5.负载均衡
    • ③ 编写服务消费者
      • 1.项目结构
      • 2.编写 controller 和 RestTemplate 模板
      • 3.配置信息
      • 4.启动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档