SpringCloud学习
公司的新项目打算采用SpringBoot+SpringCloud框架开发,之前研究过SpringBoot,但对于 SpringCloud 知之甚少,接下来会着重学习下 SpringCloud。争取在公司新项目需求下达前对其有个基本的掌握、应用。
什么是 SpringCloud?
Spring Cloud是一系列框架的有序集合。它是基于 SpringBoot 的,利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是用来管理这些微服务的(服务治理),采用了微服务这种架构之后,项目的数量会非常多,为了方便管理,SpringCloud集成了有很多成员,这些成员各司其职,共同管理好复杂的服务。
主要的成员有:Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius…)、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI。
我的着重学习点:SpringCloud Netflix(Eureka、Hystrix、Zuul、Ribbon) 、SpringCloud Config,之后会结合项目再做深入研究、学习。
SpringCloud Netflix
Eureka
服务中心,各服务的注册于发现都要依靠它来完成,功能类似于zookeeper,Eureka 是基于 REST 的服务。
Hystrix
服务熔断器,提高系统的容错能力,当某个微服务存在故障时,由于每个服务都有诸如请求队列、线程池等系统资源,一旦某个服务时效或者延时增高,那么很有可能导致更严重的级联时效。
Hystrix 的作用在于,当它发现某个服务不可用或处理延时过高时,会对其做下线处理,让其他可用服务替代不可用服务,或者直接返回调用方一个提示信息(fallback),这样就减少了服务间阻塞等待时间,防止因为此服务不可用而导致其他服务级联时效的状况发生。
Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 可用来做 API 网关。
与 nginx 对比:
Zuul 依赖 JVM,目前性能上较 nginx 还是略有差距的,但Zuul 与 SpringCloud-Netflix 下的其他组件整合良好。
我觉得可以在 Zuul 前用 nginx 来处理高并发并负责负载均衡请求转发,然后Zuul 可以用来做网关做认证、权限、过滤、限流、请求转发等操作。
Ribbon
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
SpringCloud Config
配置中心,统一管理项目中的配置信息,目前支持本地存储、git、svn。
SpringCloud 技术技术概览:
侧重学习的东西大体介绍的差不多了,接下来就开始愉快地学习吧。😍
- Title: SpringCloud学习
- Author: 薛定谔的汪
- Created at : 2018-05-18 13:20:16
- Updated at : 2023-11-17 19:37:36
- Link: https://www.zhengyk.cn/2018/05/18/springcloud/introduce/
- License: This work is licensed under CC BY-NC-SA 4.0.