部分文字摘录自:https://gitbook.cn/books/5d82...
微服务架构的定义,就是将原来的单体应用按义务范围来划分为多个小的模块,每一个微服务运行在本身的进程中,相互不产生影响,彻底自动化独立部署,并使用轻量级机制通讯,一般是 HTTP RESTUFUL API,可对各微服务进行集中管理。
Spring Cloud 包含以下的核心组件:html
服务注册与发现组件主要解决两个问题:服务注册和服务发现。git
API 网关能够作一下事情:数据库
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② 分布式配置中心,你指的拥有。
当咱们在使用微服务的时候,那么有一个问题必定会困扰咱们,那就是项目的测试和部署。
由于在单体应用下,部署项目很简单,直接打包启动就能够了,而对于微服务来讲,由于有各个组件的存在因此让测试和部署都变得很麻烦,并且有时还由于环境配置等差别致使意向不到的问题。而容器化是微服务部署一把利剑,统一标准,让个人环境高度一致,方便咱们快速的部署上线应用。