>**微服务与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)