spring cloud(杂记)

部分文字摘录自:https://gitbook.cn/books/5d82...
微服务架构的定义,就是将原来的单体应用按义务范围来划分为多个小的模块,每一个微服务运行在本身的进程中,相互不产生影响,彻底自动化独立部署,并使用轻量级机制通讯,一般是 HTTP RESTUFUL API,可对各微服务进行集中管理。
Spring Cloud 包含以下的核心组件:html

  • 服务注册与发现:Eureka、Consul、Zookeeper
  • API 网关:Zuul、Spring Cloud Gateway
  • REST 调用:Feign
  • 负载均衡:Ribbon
  • 容错处理:Hystrix
  • 链路追逐:Sleuth、Zipkin
  • 配置管理:Config

服务注册与发现组件主要解决两个问题:服务注册和服务发现。git

  • 服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机 IP 和提供服务的 Port,以及暴露服务自身状态以及访问协议等信息。
  • 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例经过注册中心,获取到注册到其中的服务实例的信息,经过这些信息去请求它们提供的服务

API 网关能够作一下事情:数据库

  • 统一入口
  • 统一限流
  • 统一认证鉴权
  • 动态路由制定和修改
  • 负载
  • 服务容错降价
  • 版本控制
  • 统一监控日志记录
  • 协议转换:如 HTTP => RPC 协议
  • 缓存
  • 静态
  • 灰度:线上灰度部署,能够减少风险

REST 调用的方式。通常状况咱们发送一个 HTTP 请求,多是采用完整域名或者 IP 加 URI 接口的方式,可是咱们不可能为每一个服务都分配一个域名,这是不现实的;咱们也不可能直接经过 IP 的方式调用,一是 IP 可能会太多,最主要的是 IP 会常常变更,那样又会改动代码,多麻烦。缓存

有了 Feign 这个工具,这些问题都不存在了。服务器

Feign 是一个声明式 WebService 客户端,旨在使编写 Java HTTP 客户端变得更容易。使用 Feign 能让编写的 WebService 客户端更加简洁,它的使用方法很简单,就是定义一个接口,而后在上面添加注解。架构

负载均衡

负载均衡好理解,咱们的一个微服务为了提升性能可能会部署多台,这个时候就须要将压力分散到每台服务器上,Ribbon 就是来干这个事情的。负载均衡

容错处理

随着业务的扩展,服务的数量也会随之增多,逻辑会更加复杂,一个服务的某个逻辑须要依赖多个其余服务才能完成。一旦一个依赖不能提供服务极可能会产生雪崩效应,最后致使整个服务不可访问。分布式

Hystrix 熔断就是为了不服务的雪崩产生,当 A 服务调用 B 服务时,若是 B 服务不能快速响应,Hystrix 就会在必定时间内作熔断处理,放回默认为值。微服务

链路追逐、配置管理

链路追踪工具

主要是为了方便排查问题,咱们的一个服务可能要调用多个微服务才能完成全部操做,当某个服务报错出现异常了怎样快速定位是哪一个服务报错了呢?咱们不可能把全部的服务日志都打开观察吧,链路追踪就是为了方便咱们查看微服务的调用链,让我快速定位那个服务出现了异常。

常见的链路追踪有 Sleuth、Zipkin、Skywalking 等。

配置管理

咱们的项目里面除了常见的配置数据库、缓存等外,可能还有不少的其余配置,好比:某些三方服务域名,帐号密钥等。固然这些配置也彻底能够都放在项目里面的配置文件中,可是当你要修改配置,可能就要重启服务才能使新的配置生效。

有办法能够动态的修改配置,而且在不重启服务的状况下让配置生效吗?确定有。Spring Cloud Config 就帮咱们实现了咱们想要的功能,还有功能更强大的配置管理服务,携程开源的 Apollo② 分布式配置中心,你指的拥有。

容器化部署

当咱们在使用微服务的时候,那么有一个问题必定会困扰咱们,那就是项目的测试和部署。

由于在单体应用下,部署项目很简单,直接打包启动就能够了,而对于微服务来讲,由于有各个组件的存在因此让测试和部署都变得很麻烦,并且有时还由于环境配置等差别致使意向不到的问题。而容器化是微服务部署一把利剑,统一标准,让个人环境高度一致,方便咱们快速的部署上线应用。

相关文章
相关标签/搜索