微服务

微服务:

什么是微服务

微服务就是分布式 将一个大工程差分成多个模块。
比如优乐选项目,改变一个模块代码只需要重启这个模块的Tomcat就行。像之前阶段的项目,改变任何模块代码都得重启整个工程。
微服务与分布式的细微差别是:
1.微服务的应用不一定是分散在多个服务器上,也可以是同一个服务器;
2.微服务集成在各种现有框架中,有其特有的使用方式,一般都比较简单。
目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。

微服务与微服务架构

微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务,独立部署,服务之间相互配合、相互协调,每个服务运行于自己的进程中。
服务与服务间采用轻量级通讯,如HTTP的RESTful API等
避免统一的、集中式的服务管理机制

微服务的优缺点

优点
每个服务足够内聚,足够小,比较容易聚焦
开发简单且效率高,一个服务只做一件事情
开发团队小,一般2-5人足以(当然按实际为准)
微服务是松耦合的,无论开发还是部署都可以独立完成
微服务能用不同的语言开发
易于和第三方集成,微服务允许容易且灵活的自动集成部署(持续集成工具有Jenkins,Hudson,bamboo等)
微服务易于被开发人员理解,修改和维护,这样可以使小团队更加关注自己的工作成果,而无需一定要通过合作才能体现价值
微服务允许你融合最新的技术
微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面组件融合
每个微服务都可以有自己的存储能力,数据库可自有也可以统一,十分灵活

缺点
开发人员要处理分布式系统的复杂性
多服务运维难度,随着服务的增加,运维的压力也会增大
依赖系统部署
服务间通讯的成本
数据的一致性
系统集成测试
性能监控的难度

SpringCloud

Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)

SpringCloud是什么?

1.Spring Cloud为开发者提供了快速构建分布式系统的通用模型的工具(包括配置管理,服务发现,熔断器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态等)。
2.Spring Cloud基于Spring Boot实现
3.SpringCloud是微服务的一种。其余还有ZeroC IceGrid微服务架构、基于消息队列的微服务架构、Docker Swarm微服务架构等。

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简
化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、
熔断器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并
没有重复制造*,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框
架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给
开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud项目的官方网址:https://spring.io/projects/spring-cloud

SpringCloud和SpringBoot的关系

Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单
个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring Boot专
注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就
不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,可以不基于Spring Boot
吗?不可以。
Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开
Spring Boot,属于依赖的关系。

SpringCloud主要框架

服务发现——Netflix Eureka
服务调用——Netflix Feign
熔断器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
消息总线 ——Spring Cloud Bus

SpringCloud版本

目前课程采用的SpringCloud版本为Finchley.M9 。版本号命名初看很奇怪。
SpringCloud由于是一系列框架组合,为了避免与包含的自框架版本产生混淆,采
用伦敦地铁站的名称作为版本名,形式为版本名+里程碑号。 M9为第9个里程碑版本。
以下是SpringBoot与Spring Cloud版本的对照表。
服务发现组件Eureka

Eureka简介

Eureka是Spring Cloud Netflix微服务套件中的一部分,是一套成熟的服务注册和发现组件,可以与Springboot构建的微服务很容易的整合起来。
Eureka包含了服务器端和客户端组件。
Eureka服务器用作服务注册服务器。
Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持
微服务