Spring Cloud学习笔记(一)

5 篇文章 0 订阅
4 篇文章 0 订阅

在疯狂学习的路上,学到发光(头顶发光)
理论知识:

  • 集群:一台服务器无法负荷高并发的数据访问量,那么就设置十台服务器一起分担压力,十台不行就设置一百台(物理层面)。很多人干同一件事情,来分摊压力。
  • 分布式:将一个复杂问题拆分成若干个简单的小问题,将一个大型的项目架构拆分成若干个微服务来协同完成。(软件设计层面)。将一个庞大的工作拆分成若干个小步骤,分别由不同的人完成这些小步骤,最终将所有的结果进行整合实现大的需求。
  • 服务治理的核心又三部分组成:服务提供者、服务消费者、注册中心。
  • 在分布式系统架构中,每个微服务在启动时,将自己的信息存储在注册中心,叫做服务注册服务消费者从注册中心获取服务提供者的网络信息,通过该信息调用服务,叫做服务发现。
  • Spring Cloud 的服务治理使用Eureka来实现,Eureka是Netflix开源的基于REST的服务治理解决方案,Spring Cloud集成了Eureka,提供服务注册和服务发现的功能,可以和基于Spring Boot搭建的微服务应用轻松完成整合,开箱即用,Spring Cloud Eureka。

学习记录

  1. Spring Cloud只需要在Spring Boot的基础上加入以下依赖即可,一个project下有多个module,一个module就是一个服务
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  1. 加入以下依赖,让改服务成为注册中心
 <dependency>
 	<groupId>org.springframework.cloud</groupId>
 	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 	<version>2.0.2.RELEASE</version>
 </dependency>

application.yml配置

server:
 port: 8761   #当前 Eureka Server 服务端⼝
eureka:
 client:
 register-with-eureka: false    #是否将当前的 Eureka Server 服务作为客户端进⾏注册
 fetch-registry: false          #是否获取其他 Eureka Server 服务的数据
 service-url:
 defaultZone: http://localhost:8761/eureka/   #注册中心的访问地址

在启动类上使用@EnableEurekaServer 注解:声明该类是一个 Eureka Server 微服务,提供服务注册和服务发现功能,即注册中心

  1. 服务与服务之间的接口调用使用RestTemplate,在启动类上添加方法,并把方法加入到ioc容器中
 @Bean
 public RestTemplate restTemplate(){
 	return new RestTemplate();
 }

RestTemplate的使用方法

@Autowired
 private RestTemplate restTemplate;
 /** GET请求 第一个参数是要调用的服务的地址,第二个参数是返回值类型 */
 restTemplate.getForEntity("http://localhost:8010/student/findAll",ArrayList.class).getBody();
 restTemplate.getForObject("http://localhost:8010/student/findAll",ArrayList.class);
 /** POST请求 第二个参数是请求传入的对象,第三个参数是返回类型*/
 restTemplate.postForEntity("http://localhost:8010/student/save",student,null) .getBody();
 restTemplate.postForObject("http://localhost:8010/student/save",student,null) ;
 /** PUt请求 */ 
 restTemplate.put("http://localhost:8010/student/update",student);
 /** DELETE请求 */
 restTemplate.delete("http://localhost:8010/student/deleteById/{id}",id);
  1. 服务网关 zuul
    Zuul是Netflix提供的一个开源的API网关服务器,是客户端和网站后端所有请求的中间层,对外开放一个API,将所有请求导入统一的入口,屏蔽了服务端的具体实现逻辑,Zuul可以实现反向代理的功能,在网关内部实现动态路由、身份认证、IP过滤、数据监控等。

application.yml对zuul的配置,其中provider是指在注册中心中注册的服务的名称,后面是要访问的统一入口

zuul:
 routes:
 provider: /p/**

要使其成为zuul网关,需要在其启动类上添加**@EnableZuulProxy** @EnableAutoConfiguration两个注解,不需要@SpringBootApplication注解了。Zuul 还带了负载均衡功能

  1. Ribbon负载均衡
    Spring Cloud Ribbon是一个负载均衡解决方案,Ribbon是Netflix发布的负载均衡器,Spring CloudRibbon是基于Netflix Ribbon实现的,是一个用于对HTTP请求进行控制的负载均衡客户端。

只需要在启动类的restTemple方法上加入@loadBalanced注解即可

 @Bean
 @LoadBalanced
 public RestTemplate restTemplate(){
 	return new RestTemplate();
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值