>**微服务与Spring Cloud**
### 1. 什么是微服务
在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务",微,狭义来讲就是体积小, 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
### 2. 微服务由来
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
### 3. 关于Netflix的贡献
在微服务的架构中,Martin Flower 的文章中肯定了Netflix的贡献,接下来我们了解一下Netflix
* [ ] Netflix OSS
Netflix(Nasdaq NFLX) 成立于1997年,是一家在线影片[租赁](https://baike.baidu.com/item/%E7%A7%9F%E8%B5%81/633715)提供商,主要提供Netflix超大数量的DVD并免费递送,总部位于[美国加利福尼亚州](https://baike.baidu.com/item/%E7%BE%8E%E5%9B%BD%E5%8A%A0%E5%88%A9%E7%A6%8F%E5%B0%BC%E4%BA%9A%E5%B7%9E/12759534)洛斯盖图
Netflix OSS 指的是 "Netflix Open Source Software"
这里我们关注的是 OSS 中的`cloud platform`, 也就是 "Common Runtime Services & Libraries",包括为微服务提供支持的运行时容器,类库和服务。
Netflix OSS 是一组开源的框架和组件库,是Netflix公司开发出来解决分布式系统的一些有趣的可扩展类库。对于Java开发者来说,它们是在云端环境中开发微服务的非常棒的工具代名词。在服务发现,负载均衡,容错等模式方面,都给出了非常重要的概念,并带来了漂亮的解决方案。
### 4.Sring Cloud 与 Netflix
Spring Cloud 并不是一个具体的框架,而是一个统一的框架集,可以理解为一个工具箱,提供了各种工具,可以帮助我们快速构建分布式系统
Spring Cloud 项目的构建基于Spring Boot,不了解Spring Boot的可以先熟悉一下Spring Boot。Spring Cloud 团队讲Netflix的多个框架进行封装并不断迭代,通过自动配置的方式将这些框架绑定到Spring的环境中。从而简化了框架的使用。使得我们在使用Spring Cloud时很容易将Netflix各个框架包含在项目中。下面介绍下封装了Netflix的那些内容:
* Eureka:Spring Cloud微服务的注册中心,主要用于服务管理(虽说)
目前Eureka官方已经不再维护,但也不影响我们使用,Spring Cloud 切换到Consul、Zookeeper也含简单,进阶部分会说到。
* Hystrix:自我保护框架,通过限流、熔断控制分布式系统建的交流
* Feign:一个基于REST的客户端,目的为了简化Web Service客户端的开发
* Ribbon:负载均衡框架,支持按照权重、随机、轮询等
* Zuul:Spring Cloud 微服务网关,为微服务提供代理、过滤、路由等功能
### 5.Spring Cloud 其它重要模块
* Spring Cloud Stream
* Spring Cloud Bus
* Spring Cloud Config
* 等
后续入门和进阶都是提到
SpringCloud官方:[https://spring.io/projects/spring-cloud](https://spring.io/projects/spring-cloud)
- 前言
- 导读
- 架构演进
- Spring Cloud介绍
- 准备工作
- 微服务入门
- SpringBoot
- SpringBoot入门
- 多profile
- 国际化
- 注册中心Eureka
- Eureka介绍
- Eureka服务端搭建
- Eureka集群搭建
- Eureka服务端常用配置
- Eureka客户端搭建
- Eureka 密码访问
- Eureka服务健康检查
- Eureka客户端常用配置
- Eureka 小结
- 负载均衡Ribbon
- Ribbon介绍
- Ribbon服务提供者
- Ribbon客户端
- Ribbon自定义操作
- Ribbon 修改请求策略
- Ribbon 自定义请求策略
- Ribbon 不再Eureka环境下运行
- Ribbon小结
- 客户端Feign
- Feign介绍
- Feign 入门
- Feign 自定义操作
- Feign 自定义日志
- Feign Basic认证
- Feign 超时配置
- Feign 配置重试
- Feign 配置压缩
- Feign 客户端组件替换
- Feign 文件上传
- Feign 原生配置
- Feign小结
- 自我保护Hystrix
- HyStrix 介绍
- Hystrix 入门
- Hystrix 简单使用
- Hystrix 回退
- Hystrix 信号量隔离
- Hystrix 线程隔离
- Hystrix 结果缓存
- Hystrix 清除缓存
- Hystrix 断路器开启
- Hystrix 断路器关闭
- Hystrix 合并请求
- Hystrix 小结
- Hystrix Spring Cloud
- Hystrix Ribbon
- Hystrix 缓存注解
- Hystrix 合并请求注解
- Hystrix Feign
- Hystrix Dashboard
- Hystrix Turbine
- Hystrix 小结
- 网关Zuul
- Zuul 介绍
- Zuul 简单应用
- Zuul 路由配置
- Zuul 简单路由
- Zuul 路由前缀
- Zuul 指定路由
- Zuul 路由跳转
- Zuul 过滤器
- Zuul 过滤器拦截顺序
- Zuul 数据传递
- Zuul 禁用过滤器
- Zuul 异常处理
- Zuul 重试机制
- Zuul FallBack
- Zuul 小结
- 配置中心
- config 介绍
- config 服务端
- config GitHub模式
- config 本地模式
- config 客户端
- config 属性覆盖
- config 加密
- config AES 加密
- config RSA 加密
- config 小结
- 微服务进阶
- 消息总线Bus
- 总线介绍
- RabbitMQ介绍
- RabbitMQ安装
- RabbitMQ使用
- Cloud Config改造(RabbitMQ)
- Kafka 介绍
- Kafka 安装
- Kafka 使用
- Cloud Config改造(Kafka)
- 总线总结
- 网关拓展
- Zuul 拓展
- Zuul 限流
- 网关Gateway
- Gateway 介绍
- Gateway 简单使用
- 谓词
- 谓词 After
- 谓词 Before
- 谓词 Between
- 谓词 Cookie
- 谓词 Header
- 谓词 Host
- 谓词 Method
- 谓词 Path
- 谓词 Query
- 谓词 Weight
- 过滤器
- 过滤器 MapRequestHeader
- 过滤器 StripPrefix
- 过滤器 Prefix
- 过滤器 PreserveHostHeader
- 过滤器 RedirectTo
- 过滤器 RemoveRequestHeader
- 过滤器 RemoveResponseHeader
- 过滤器 RemoveRequestParameter
- 过滤器 RewritePath
- 过滤器 RewriteLocationResponseHeader
- 过滤器 SetPath
- 过滤器 SetRequestHeader
- 过滤器 SetStatus
- 过滤器 RequestSize
- 过滤器 Default
- 过滤器 Java Bean
- Gateway 路由配置
- Gateway 禁用过滤器
- Gateway 路由前缀
- Gateway 路由跳转
- Gateway 限流
- Gateway 重试
- Gateway FallBack
- Gateway 异常处理
- Gateway 总结
- 注册中心拓展
- 注册中心 Zookeeper
- Zookeeper 介绍
- Zookeeper 安装(Windows)
- Zookeeper 替换Eureka
- 注册中心 Consul
- Consul 介绍
- Consul 安装(Windows)
- Consul 替换Eureka
- 注册中心 Nacos
- Nacos 介绍
- Nacos 安装(Windows)
- Nacos 集群部署
- Nacos 替换Eureka
- 注册中心总结
- 配置中心拓展
- 配置中心Apollo
- Apollo 介绍
- Apollo Namespace
- Apollo 部署
- Apollo 分布式部署
- Apollo 客户端使用
- Apollo 准备工作
- Apollo Java客户端
- 配置中心Nacos
- Nacos 客户端使用
- 配置中心总结
- 微服务高级
- 应用监控
- SpringBootAdmin
- SpringBootAdmin-Eureka
- ELK
- Elasticsearch 介绍
- Kibana 介绍
- Logstash 介绍
- ELK 接收日志
- ELK 总结
- Prometheus 监控
- Prometheus 简介
- Prometheus 可视化
- Prometheus 使用
- 服务跟踪
- Zipkin
- Zipkin 介绍
- Zipkin 使用
- Skywalking
- Skywalking 介绍
- Skywalking 使用(Windows)
- 缓存
- 缓存介绍
- Guava缓存
- Redis
- Redis 介绍
- Redis 缓存
- 缓存总结
- 分布式锁
- 分布式锁介绍
- 数据库方式
- Redis方式
- Zookeeper方式
- 分库分表
- Sharding-JDBC
- Sharding-JDBC 介绍
- Sharding-JDBC 读写分离
- Sharding-JDBC 分库分表
- Sharding-JDBC 分库分表Config
- Sharding-JDBC 分库分表读写分离
- Sharding-JDBC 同库分表
- Sharding-JDBC 同库分表读写分离
- Sharding-JDBC 数据脱敏
- Sharding-JDBC 多租户实战
- Sharding-JDBC 总结
- 分布式事务
- 传统事务介绍
- 分布式事务介绍
- 分布式事务常用方案
- 分布式事务实战篇
- 公共底层封装
- 基于TX-LCN
- TX-LCN介绍
- LCN模式
- LCN-TCC模式
- LCN-TXC模式
- 基于SEATA
- SEATA介绍
- SEATA Server部署
- SEATA-AT模式
- SEATA-TCC模式
- 基于RocketMQ
- RocketMQ 介绍
- RocketMQ 环境安装
- RocketMQ 分布式事务实践
- 容器化
- docker
- docker介绍
- docker安装
- docker 基本操作
- docker compose安装
- docker打包Springboot
- 错误记录
- docker 使用
- docker部署mysql
- docker部署Redis
- docker部署Nacos
- docker部署consul
- docker部署jenkins
- docker部署镜像仓库Harbor
- docker部署Portainer搭建可视化界面
- docker-compose 使用
- docker-compose搭建Prometheus+Grafana监控系统
- docker-compose搭建ELK
- docker-compose搭建Skywalking
- docker-compose搭建Apollo
- docker-compose搭建Nacos
- Kubernetes
- Kubernetes 介绍
- Kubernetes 环境搭建
- Mac 安装 Kubernetes
- Windows 安装Kubernetes
- Linux
- 基本操作
- Centos7 安装iptables防火墙
- Centos7 安装redis
- Centos7 安装Zookeeper
- Centos7 安装Kafka
- Centos7 安装RocketMQ
- 拓展功能
- 规则引擎Drools
- Drools介绍
- Docker 部署Workbench
- Drools-信用卡额度实例